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 | ... | ... |