Commit 1fafa75f4eb04b8d2efb6f2c3af1879279a1dbd1

Authored by Rafael Reggiani Manzo
1 parent db2e9cd3

Fix FeedReaderBlock unit tests and view

After removing the content method it is now necessary to use
BoxesHelper#render_block_content.

The view required fixes as it was still supposing the old interface
coupled into the model instead of receiving the model object. And it had
a programming error that prevented results from getting displayed.
app/views/blocks/feed_reader.html.erb
1   -<%= block_title(title) %>
  1 +<%= block_title(block.title) %>
2 2  
3   -<%
4   -
5   - if error_message.blank?
  3 +<%=
  4 + if block.error_message.blank?
6 5 "<ul>\n".html_safe +
7   - self.feed_items[0..(limit-1)].map{ |item| "<li><a href='#{item[:link]}'>#{item[:title]}</a></li>" }.join("\n").html_safe +
  6 + block.feed_items[0..(block.limit-1)].map{ |item| "<li><a href='#{item[:link]}'>#{item[:title]}</a></li>" }.join("\n").html_safe +
8 7 "</ul>".html_safe
9 8 else
10   - "<p>#{error_message}</p>".html_safe
  9 + "<p>#{block.error_message}</p>".html_safe
11 10 end
12 11 %>
... ...
test/unit/feed_reader_block_test.rb
... ... @@ -26,19 +26,6 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
26 26 assert feed.editable?
27 27 end
28 28  
29   - should 'display feed posts from content' do
30   - feed.feed_items = []
31   - %w[ last-post second-post first-post ].each do |i|
32   - feed.feed_items << {:title => i, :link => "http://localhost/#{i}"}
33   - end
34   - feed.feed_title = 'Feed for unit tests'
35   - feed_content = feed.content
36   - assert_tag_in_string feed_content, :tag => 'h3', :content => 'Feed for unit tests'
37   - assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/last-post' }, :content => 'last-post'
38   - assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/second-post' }, :content => 'second-post'
39   - assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/first-post' }, :content => 'first-post'
40   - end
41   -
42 29 should 'display channel title as title by default' do
43 30 feed.feed_title = 'Feed for unit tests'
44 31 assert_equal 'Feed for unit tests', feed.title
... ... @@ -90,26 +77,10 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
90 77 assert_equal %w[ last-post second-post first-post ], feed.feed_items.map{|i|i[:title]}
91 78 end
92 79  
93   - should 'display only limit posts' do
94   - feed.limit = 1; feed.save!
95   - %w[ first-post second-post ].each do |i|
96   - feed.add_item(i, "http://localhost/#{i}", Date.today, "some contet for #{i}")
97   - end
98   -
99   - assert_tag_in_string feed.formatted_feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/second-post' }, :content => 'second-post'
100   - assert_no_tag_in_string feed.formatted_feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/first-post' }, :content => 'first-post'
101   - end
102   -
103 80 should 'have empty error message by default' do
104 81 assert FeedReaderBlock.new.error_message.blank?, 'new feed reader block expected to have empty error message'
105 82 end
106 83  
107   - should "display error message as content when it's the case" do
108   - msg = "there was a problem"
109   - feed.error_message = msg
110   - assert_match(msg, feed.content)
111   - end
112   -
113 84 should 'expire after a period' do
114 85 # save current time
115 86 now = Time.now
... ... @@ -195,3 +166,54 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
195 166 end
196 167  
197 168 end
  169 +
  170 +require 'boxes_helper'
  171 +require 'block_helper'
  172 +
  173 +class FeedReaderBlockViewTest < ActionView::TestCase
  174 + include BoxesHelper
  175 +
  176 + ActionView::Base.send :include, BlockHelper
  177 +
  178 + def setup
  179 + @feed = create(:feed_reader_block)
  180 + end
  181 + attr_reader :feed
  182 +
  183 + should "display error message as content when it's the case" do
  184 + msg = "there was a problem"
  185 + feed.error_message = msg
  186 +
  187 + ActionView::Base.any_instance.stubs(:block_title).returns("")
  188 +
  189 + assert_match(msg, render_block_content(feed))
  190 + end
  191 +
  192 + should 'display feed posts from content' do
  193 + feed.feed_items = []
  194 + %w[ last-post second-post first-post ].each do |i|
  195 + feed.feed_items << {:title => i, :link => "http://localhost/#{i}"}
  196 + end
  197 + feed.feed_title = 'Feed for unit tests'
  198 +
  199 + feed_content = render_block_content(feed)
  200 +
  201 + assert_tag_in_string feed_content, :tag => 'h3', :content => 'Feed for unit tests'
  202 + assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/last-post' }, :content => 'last-post'
  203 + assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/second-post' }, :content => 'second-post'
  204 + assert_tag_in_string feed_content, :tag => 'a', :attributes => { :href => 'http://localhost/first-post' }, :content => 'first-post'
  205 + end
  206 +
  207 + should 'display only limit posts' do
  208 + feed.limit = 1; feed.save!
  209 + %w[ first-post second-post ].each do |i|
  210 + feed.add_item(i, "http://localhost/#{i}", Date.today, "some contet for #{i}")
  211 + end
  212 +
  213 + ActionView::Base.any_instance.stubs(:block_title).returns("")
  214 +
  215 + assert_tag_in_string render_block_content(feed), :tag => 'a', :attributes => { :href => 'http://localhost/second-post' }, :content => 'second-post'
  216 + assert_no_tag_in_string render_block_content(feed), :tag => 'a', :attributes => { :href => 'http://localhost/first-post' }, :content => 'first-post'
  217 + end
  218 +
  219 +end
... ...