Commit 1fafa75f4eb04b8d2efb6f2c3af1879279a1dbd1
1 parent
db2e9cd3
Exists in
web_steps_improvements
and in
9 other branches
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.
Showing
2 changed files
with
56 additions
and
35 deletions
Show diff stats
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 < 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 < 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 < 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 | ... | ... |