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 "<ul>\n".html_safe + 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 "</ul>".html_safe 7 "</ul>".html_safe
9 else 8 else
10 - "<p>#{error_message}</p>".html_safe 9 + "<p>#{block.error_message}</p>".html_safe
11 end 10 end
12 %> 11 %>
test/unit/feed_reader_block_test.rb
@@ -26,19 +26,6 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase @@ -26,19 +26,6 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
26 assert feed.editable? 26 assert feed.editable?
27 end 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 should 'display channel title as title by default' do 29 should 'display channel title as title by default' do
43 feed.feed_title = 'Feed for unit tests' 30 feed.feed_title = 'Feed for unit tests'
44 assert_equal 'Feed for unit tests', feed.title 31 assert_equal 'Feed for unit tests', feed.title
@@ -90,26 +77,10 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase @@ -90,26 +77,10 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
90 assert_equal %w[ last-post second-post first-post ], feed.feed_items.map{|i|i[:title]} 77 assert_equal %w[ last-post second-post first-post ], feed.feed_items.map{|i|i[:title]}
91 end 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 should 'have empty error message by default' do 80 should 'have empty error message by default' do
104 assert FeedReaderBlock.new.error_message.blank?, 'new feed reader block expected to have empty error message' 81 assert FeedReaderBlock.new.error_message.blank?, 'new feed reader block expected to have empty error message'
105 end 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 should 'expire after a period' do 84 should 'expire after a period' do
114 # save current time 85 # save current time
115 now = Time.now 86 now = Time.now
@@ -195,3 +166,54 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase @@ -195,3 +166,54 @@ class FeedReaderBlockTest &lt; ActiveSupport::TestCase
195 end 166 end
196 167
197 end 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