Commit 2daca633e85b2f11c37d76b8538d5c27c332d5da
Committed by
Rafael Reggiani Manzo
1 parent
8cd2832e
Exists in
web_steps_improvements
and in
9 other branches
fix LinkListBlock unit tests
Showing
2 changed files
with
24 additions
and
16 deletions
Show diff stats
app/helpers/boxes_helper.rb
| ... | ... | @@ -88,8 +88,13 @@ module BoxesHelper |
| 88 | 88 | end |
| 89 | 89 | |
| 90 | 90 | def render_block_content(block) |
| 91 | - # TODO: se nao existe retornar nil | |
| 92 | - render :file => "blocks/#{block.name.underscore.gsub('_block', '')}", :locals => { :block => block } | |
| 91 | + template_name = block.class.name.underscore.gsub('_block', '') | |
| 92 | + template_filename = "#{template_name}.html.erb" | |
| 93 | + if File.exists? Rails.root.join('app', 'views', 'blocks', template_filename) | |
| 94 | + render :file => "blocks/#{template_name}", :locals => { :block => block } | |
| 95 | + else | |
| 96 | + nil | |
| 97 | + end | |
| 93 | 98 | end |
| 94 | 99 | |
| 95 | 100 | def display_block_content(block, main_content = nil) | ... | ... |
test/unit/link_list_block_test.rb
| ... | ... | @@ -2,6 +2,8 @@ require_relative "../test_helper" |
| 2 | 2 | |
| 3 | 3 | class LinkListBlockTest < ActiveSupport::TestCase |
| 4 | 4 | |
| 5 | + include BoxesHelper | |
| 6 | + | |
| 5 | 7 | should 'default describe' do |
| 6 | 8 | assert_not_equal Block.description, LinkListBlock.description |
| 7 | 9 | end |
| ... | ... | @@ -23,7 +25,7 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 23 | 25 | |
| 24 | 26 | should 'list links' do |
| 25 | 27 | l = LinkListBlock.new(:links => [{:name => 'products', :address => '/cat/products'}]) |
| 26 | - assert_match /products/, l.content | |
| 28 | + assert_match /products/, render_block_content(l) | |
| 27 | 29 | end |
| 28 | 30 | |
| 29 | 31 | should 'remove links with blank fields' do |
| ... | ... | @@ -36,7 +38,7 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 36 | 38 | profile = Profile.new(:identifier => 'test_profile') |
| 37 | 39 | l = LinkListBlock.new(:links => [{:name => 'categ', :address => '/{profile}/address'}]) |
| 38 | 40 | l.stubs(:owner).returns(profile) |
| 39 | - assert_tag_in_string l.content, :tag => 'a', :attributes => {:href => '/test_profile/address'} | |
| 41 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => {:href => '/test_profile/address'} | |
| 40 | 42 | end |
| 41 | 43 | |
| 42 | 44 | should 'replace {portal} with environment portal identifier' do |
| ... | ... | @@ -49,7 +51,7 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 49 | 51 | stubs(:environment).returns(env) |
| 50 | 52 | l = LinkListBlock.new(:links => [{:name => 'categ', :address => '/{portal}/address'}]) |
| 51 | 53 | l.stubs(:owner).returns(env) |
| 52 | - assert_tag_in_string l.content, :tag => 'a', :attributes => {:href => '/portal-community/address'} | |
| 54 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => {:href => '/portal-community/address'} | |
| 53 | 55 | end |
| 54 | 56 | |
| 55 | 57 | should 'not change address if no {portal} there' do |
| ... | ... | @@ -62,19 +64,19 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 62 | 64 | stubs(:environment).returns(env) |
| 63 | 65 | l = LinkListBlock.new(:links => [{:name => 'categ', :address => '/address'}]) |
| 64 | 66 | l.stubs(:owner).returns(env) |
| 65 | - assert_tag_in_string l.content, :tag => 'a', :attributes => {:href => '/address'} | |
| 67 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => {:href => '/address'} | |
| 66 | 68 | end |
| 67 | 69 | |
| 68 | 70 | should 'handle /prefix if not already added' do |
| 69 | 71 | Noosfero.stubs(:root).returns('/prefix') |
| 70 | 72 | l = LinkListBlock.new(:links => [{:name => "foo", :address => '/bar'}] ) |
| 71 | - assert_tag_in_string l.content, :tag => 'a', :attributes => { :href => '/prefix/bar' } | |
| 73 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => { :href => '/prefix/bar' } | |
| 72 | 74 | end |
| 73 | 75 | |
| 74 | 76 | should 'not add /prefix if already there' do |
| 75 | 77 | Noosfero.stubs(:root).returns('/prefix') |
| 76 | 78 | l = LinkListBlock.new(:links => [{:name => "foo", :address => '/prefix/bar'}] ) |
| 77 | - assert_tag_in_string l.content, :tag => 'a', :attributes => { :href => '/prefix/bar' } | |
| 79 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => { :href => '/prefix/bar' } | |
| 78 | 80 | end |
| 79 | 81 | |
| 80 | 82 | should 'display options for icons' do |
| ... | ... | @@ -85,29 +87,29 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 85 | 87 | end |
| 86 | 88 | |
| 87 | 89 | should 'link with icon' do |
| 88 | - l = LinkListBlock.new | |
| 89 | - assert_match /class="icon-save"/, l.link_html({:icon => 'save', :name => 'test', :address => 'test.com'}) | |
| 90 | + l = LinkListBlock.new(:links => [{:icon => 'save', :name => 'test', :address => 'test.com'}]) | |
| 91 | + assert_match /a class="icon-[^"]+"/, render_block_content(l) | |
| 90 | 92 | end |
| 91 | 93 | |
| 92 | 94 | should 'no class without icon' do |
| 93 | - l = LinkListBlock.new | |
| 94 | - assert_no_match /class="/, l.link_html({:icon => nil, :name => 'test', :address => 'test.com'}) | |
| 95 | + l = LinkListBlock.new(:links => [{:icon => nil, :name => 'test', :address => 'test.com'}]) | |
| 96 | + assert_no_match /a class="icon-[^"]+"/, render_block_content(l) | |
| 95 | 97 | end |
| 96 | 98 | |
| 97 | 99 | should 'not add link to javascript' do |
| 98 | 100 | l = LinkListBlock.new(:links => [{:name => 'link', :address => "javascript:alert('Message test')"}]) |
| 99 | - assert_no_match /href="javascript/, l.link_html(l.links.first) | |
| 101 | + assert_no_match /href="javascript/, render_block_content(l) | |
| 100 | 102 | end |
| 101 | 103 | |
| 102 | 104 | should 'not add link to onclick' do |
| 103 | 105 | l = LinkListBlock.new(:links => [{:name => 'link', :address => "#\" onclick=\"alert(123456)"}]) |
| 104 | - assert_no_tag_in_string l.link_html(l.links.first), :attributes => { :onclick => /.*/ } | |
| 106 | + assert_no_tag_in_string render_block_content(l), :attributes => { :onclick => /.*/ } | |
| 105 | 107 | end |
| 106 | 108 | |
| 107 | 109 | should 'add protocol in front of incomplete external links' do |
| 108 | 110 | {'/local/link' => '/local/link', 'http://example.org' => 'http://example.org', 'example.org' => '//example.org'}.each do |input, output| |
| 109 | 111 | l = LinkListBlock.new(:links => [{:name => 'categ', :address => input}]) |
| 110 | - assert_tag_in_string l.content, :tag => 'a', :attributes => {:href => output} | |
| 112 | + assert_tag_in_string render_block_content(l), :tag => 'a', :attributes => {:href => output} | |
| 111 | 113 | end |
| 112 | 114 | end |
| 113 | 115 | |
| ... | ... | @@ -128,7 +130,8 @@ class LinkListBlockTest < ActiveSupport::TestCase |
| 128 | 130 | |
| 129 | 131 | should 'link with title' do |
| 130 | 132 | l = LinkListBlock.new |
| 131 | - assert_match /title="mytitle"/, l.link_html({:name => 'mylink', :address => '/myaddress', :title => 'mytitle'}) | |
| 133 | + l = LinkListBlock.new(:links => [{:name => 'mylink', :address => '/myaddress', :title => 'mytitle'}]) | |
| 134 | + assert_match /title="mytitle"/, render_block_content(l) | |
| 132 | 135 | end |
| 133 | 136 | |
| 134 | 137 | end | ... | ... |