diff --git a/app/models/rss_feed.rb b/app/models/rss_feed.rb index bbbee3c..5b51a3d 100644 --- a/app/models/rss_feed.rb +++ b/app/models/rss_feed.rb @@ -8,6 +8,7 @@ class RssFeed < Article end alias :settings :body + # The maximum number of articles to be displayed in the RSS feed. def limit settings[:limit] end @@ -15,19 +16,32 @@ class RssFeed < Article settings[:limit] = value end + # FIXME this should be validates_numericality_of, but Rails 1.2.6 does not + # support validates_numericality_of with virtual attributes + validates_format_of :limit, :with => /^[0-9]+$/, :if => :limit + + # determinates what to include in the feed. Possible values are +:all+ + # (include everything from the profile) and :parent_and_children (include + # only articles that are siblings of the feed). + # + # The feed itself is never included. def include settings[:include] end def include=(value) settings[:include] = value end + validates_inclusion_of :include, :in => [ :all, :parent_and_children ], :if => :include + # determinates what to include in the feed as items' description. Possible + # values are +:body+ (default) and +:abstract+. def feed_item_description settings[:feed_item_description] end def feed_item_description=(value) settings[:feed_item_description] = value end + validates_inclusion_of :feed_item_description, :in => [ :body, :abstract ], :if => :feed_item_description # TODO def to_html diff --git a/test/unit/rss_feed_test.rb b/test/unit/rss_feed_test.rb index b19d1d9..269bbb7 100644 --- a/test/unit/rss_feed_test.rb +++ b/test/unit/rss_feed_test.rb @@ -124,6 +124,46 @@ class RssFeedTest < Test::Unit::TestCase feed.data end + should 'limit should only accept integers' do + feed = RssFeed.new + feed.limit = 'text' + feed.valid? + assert feed.errors.invalid?(:limit) + feed.limit = 10 + feed.valid? + assert !feed.errors.invalid?(:limit) + end + + should 'allow only :parent_and_children and :all as include setting' do + feed = RssFeed.new + feed.include = :something_else + feed.valid? + assert feed.errors.invalid?(:include) + + feed.include = :parent_and_children + feed.valid? + assert !feed.errors.invalid?(:include) + + feed.include = :all + feed.valid? + assert !feed.errors.invalid?(:include) + end + + should 'allow only :body and :abstract as feed_item_description' do + feed = RssFeed.new + feed.feed_item_description = :something_else + feed.valid? + assert feed.errors.invalid?(:feed_item_description) + + feed.feed_item_description = :body + feed.valid? + assert !feed.errors.invalid?(:feed_item_description) + + feed.feed_item_description = :abstract + feed.valid? + assert !feed.errors.invalid?(:feed_item_description) + end + should 'provide proper short description' do RssFeed.expects(:==).with(Article).returns(true).at_least_once assert_not_equal Article.short_description, RssFeed.short_description -- libgit2 0.21.2