Commit a50b650c656655a5977d860028e50acc361c54ca
1 parent
96b71fb4
Exists in
master
and in
29 other branches
ActionItem155: fixing generation of links in the assets menu
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1629 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
3 changed files
with
51 additions
and
9 deletions
Show diff stats
app/helpers/assets_helper.rb
1 | 1 | module AssetsHelper |
2 | 2 | |
3 | 3 | def generate_assets_menu() |
4 | - [ | |
5 | 4 | |
6 | - [ { :controller => 'search', :action => 'assets', :asset => 'articles' }, "icon-menu-articles", _('Articles') ], | |
7 | - [ { :controller => 'search', :action => 'assets', :asset => 'people' }, "icon-menu-people", _('People') ], | |
8 | - [ { :controller => 'search', :action => 'assets', :asset => 'products' }, "icon-menu-product", _('Products') ], | |
9 | - [ { :controller => 'search', :action => 'assets', :asset => 'enterprises' }, "icon-menu-enterprise", _('Enterprises') ], | |
10 | - [ { :controller => 'search', :action => 'assets', :asset => 'communities' }, "icon-menu-community", _('Communities') ], | |
11 | - [ { :controller => 'search', :action => 'assets', :asset => 'comments'}, "icon-menu-comments", _('Comments') ], | |
5 | + options = { :controller => 'search', :action => 'assets', :category_path => (@category ? @category.explode_path : []) } | |
6 | + [ | |
7 | + [ options.merge(:asset => 'articles'), "icon-menu-articles", _('Articles') ], | |
8 | + [ options.merge(:asset => 'people'), "icon-menu-people", _('People') ], | |
9 | + [ options.merge(:asset => 'products'), "icon-menu-product", _('Products') ], | |
10 | + [ options.merge(:asset => 'enterprises'), "icon-menu-enterprise", _('Enterprises') ], | |
11 | + [ options.merge(:asset => 'communities'), "icon-menu-community", _('Communities') ], | |
12 | + [ options.merge(:asset => 'comments'), "icon-menu-comments", _('Comments') ], | |
12 | 13 | |
13 | 14 | ].map do |target,css_class,name| |
14 | 15 | content_tag('li', link_to(content_tag('span', '', :class => css_class) + name, target)) | ... | ... |
... | ... | @@ -0,0 +1,25 @@ |
1 | +require "#{File.dirname(__FILE__)}/../test_helper" | |
2 | + | |
3 | +class AssetsMenuTest < ActionController::IntegrationTest | |
4 | + | |
5 | + def setup | |
6 | + parent = Category.create!(:name => "Parent Category", :environment => Environment.default, :display_color => 1) | |
7 | + @category = Category.create!(:name => "Category A", :environment => Environment.default, :parent => parent) | |
8 | + end | |
9 | + | |
10 | + should 'link to uncategorized assets at site root' do | |
11 | + get '/' | |
12 | + assert_tag :tag => 'a', :attributes => { :href => '/cat/parent-category/category-a' } | |
13 | + end | |
14 | + | |
15 | + should 'link to assets inside category root' do | |
16 | + get '/cat/parent-category/category-a' | |
17 | + assert_tag :tag => 'a', :attributes => { :href => '/assets/articles/parent-category/category-a' } | |
18 | + end | |
19 | + | |
20 | + should 'link to other assets in same category when' do | |
21 | + get '/assets/articles/parent-category/category-a' | |
22 | + assert_tag :tag => 'a', :attributes => { :href => '/assets/products/parent-category/category-a' } | |
23 | + end | |
24 | + | |
25 | +end | ... | ... |
test/unit/assets_helper_test.rb
... | ... | @@ -12,14 +12,30 @@ class ApplicationHelperTest < Test::Unit::TestCase |
12 | 12 | communities |
13 | 13 | comments |
14 | 14 | ].each do |asset| |
15 | - expects(:link_to).with(anything, { :controller => 'search', :action => 'assets', :asset => asset}) | |
15 | + expects(:link_to).with(anything, { :controller => 'search', :action => 'assets', :asset => asset, :category_path => []}) | |
16 | 16 | end |
17 | 17 | |
18 | 18 | stubs(:_).returns('') |
19 | 19 | stubs(:content_tag).returns('') |
20 | 20 | generate_assets_menu |
21 | - | |
22 | 21 | end |
23 | 22 | |
23 | + should 'generate link to assets with current category' do | |
24 | + %w[ articles | |
25 | + people | |
26 | + products | |
27 | + enterprises | |
28 | + communities | |
29 | + comments | |
30 | + ].each do |asset| | |
31 | + expects(:link_to).with(anything, { :controller => 'search', :action => 'assets', :asset => asset, :category_path => [ 'my-category' ]}) | |
32 | + end | |
33 | + | |
34 | + stubs(:_).returns('') | |
35 | + stubs(:content_tag).returns('') | |
36 | + @category = mock | |
37 | + @category.expects(:explode_path).returns(['my-category']).at_least_once | |
38 | + generate_assets_menu | |
39 | + end | |
24 | 40 | |
25 | 41 | end | ... | ... |