Commit 19ac13ef93744d1089346dbfb74f6bd0ee2c6a67

Authored by AntonioTerceiro
1 parent e4a49c3b

ActionItem23: adding validations to RSS feed



git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1130 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/rss_feed.rb
... ... @@ -8,6 +8,7 @@ class RssFeed < Article
8 8 end
9 9 alias :settings :body
10 10  
  11 + # The maximum number of articles to be displayed in the RSS feed.
11 12 def limit
12 13 settings[:limit]
13 14 end
... ... @@ -15,19 +16,32 @@ class RssFeed < Article
15 16 settings[:limit] = value
16 17 end
17 18  
  19 + # FIXME this should be validates_numericality_of, but Rails 1.2.6 does not
  20 + # support validates_numericality_of with virtual attributes
  21 + validates_format_of :limit, :with => /^[0-9]+$/, :if => :limit
  22 +
  23 + # determinates what to include in the feed. Possible values are +:all+
  24 + # (include everything from the profile) and :parent_and_children (include
  25 + # only articles that are siblings of the feed).
  26 + #
  27 + # The feed itself is never included.
18 28 def include
19 29 settings[:include]
20 30 end
21 31 def include=(value)
22 32 settings[:include] = value
23 33 end
  34 + validates_inclusion_of :include, :in => [ :all, :parent_and_children ], :if => :include
24 35  
  36 + # determinates what to include in the feed as items' description. Possible
  37 + # values are +:body+ (default) and +:abstract+.
25 38 def feed_item_description
26 39 settings[:feed_item_description]
27 40 end
28 41 def feed_item_description=(value)
29 42 settings[:feed_item_description] = value
30 43 end
  44 + validates_inclusion_of :feed_item_description, :in => [ :body, :abstract ], :if => :feed_item_description
31 45  
32 46 # TODO
33 47 def to_html
... ...
test/unit/rss_feed_test.rb
... ... @@ -124,6 +124,46 @@ class RssFeedTest < Test::Unit::TestCase
124 124 feed.data
125 125 end
126 126  
  127 + should 'limit should only accept integers' do
  128 + feed = RssFeed.new
  129 + feed.limit = 'text'
  130 + feed.valid?
  131 + assert feed.errors.invalid?(:limit)
  132 + feed.limit = 10
  133 + feed.valid?
  134 + assert !feed.errors.invalid?(:limit)
  135 + end
  136 +
  137 + should 'allow only :parent_and_children and :all as include setting' do
  138 + feed = RssFeed.new
  139 + feed.include = :something_else
  140 + feed.valid?
  141 + assert feed.errors.invalid?(:include)
  142 +
  143 + feed.include = :parent_and_children
  144 + feed.valid?
  145 + assert !feed.errors.invalid?(:include)
  146 +
  147 + feed.include = :all
  148 + feed.valid?
  149 + assert !feed.errors.invalid?(:include)
  150 + end
  151 +
  152 + should 'allow only :body and :abstract as feed_item_description' do
  153 + feed = RssFeed.new
  154 + feed.feed_item_description = :something_else
  155 + feed.valid?
  156 + assert feed.errors.invalid?(:feed_item_description)
  157 +
  158 + feed.feed_item_description = :body
  159 + feed.valid?
  160 + assert !feed.errors.invalid?(:feed_item_description)
  161 +
  162 + feed.feed_item_description = :abstract
  163 + feed.valid?
  164 + assert !feed.errors.invalid?(:feed_item_description)
  165 + end
  166 +
127 167 should 'provide proper short description' do
128 168 RssFeed.expects(:==).with(Article).returns(true).at_least_once
129 169 assert_not_equal Article.short_description, RssFeed.short_description
... ...