diff --git a/app/models/article.rb b/app/models/article.rb index f2002f9..cf2209c 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -70,4 +70,24 @@ class Article < ActiveRecord::Base "/" + [profile.identifier, path].join('/') end + def self.short_description + if self == Article + _('Article') + else + _('"%s" article') % self.article_type_name + end + end + + def self.description + if self == Article + _('An ordinary article') + else + _('An article of type "%s"') % self.article_type_name + end + end + + def self.article_type_name + self.name.gsub(/article$/i, '') + end + end diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index 66f00d1..5cd0b4b 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -143,4 +143,19 @@ class ArticleTest < Test::Unit::TestCase end + should 'provied proper descriptions' do + assert_equal "Article", Article.short_description + assert_equal "An ordinary article", Article.description + end + + should 'provide a usable descriptions to subclasses that don\'t override them' do + klass = Class.new(Article) + klass.stubs(:name).returns("MyClass") + klass.expects(:_).with('"%s" article').returns('"%s" article') + klass.expects(:_).with('An article of type "%s"').returns('An article of type "%s"') + + assert_equal '"MyClass" article', klass.short_description + assert_equal 'An article of type "MyClass"', klass.description + end + end -- libgit2 0.21.2