Commit caa6c62d1e7033ca3fd85cd29b414a48bde69c1e
1 parent
7bc4e5ce
Exists in
master
and in
28 other branches
ActionItem498: fixing tests for new categories selector
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@2248 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
7 changed files
with
24 additions
and
10 deletions
Show diff stats
app/controllers/my_profile/cms_controller.rb
| @@ -121,7 +121,7 @@ class CmsController < MyProfileController | @@ -121,7 +121,7 @@ class CmsController < MyProfileController | ||
| 121 | @current_category = Category.find(params[:category_id]) | 121 | @current_category = Category.find(params[:category_id]) |
| 122 | @categories = @current_category.children | 122 | @categories = @current_category.children |
| 123 | else | 123 | else |
| 124 | - @categories = @categories = environment.top_level_categories.select{|i| !i.children.empty?} | 124 | + @categories = environment.top_level_categories.select{|i| !i.children.empty?} |
| 125 | end | 125 | end |
| 126 | render :partial => 'shared/select_categories', :locals => {:object_name => 'article', :multiple => true}, :layout => false | 126 | render :partial => 'shared/select_categories', :locals => {:object_name => 'article', :multiple => true}, :layout => false |
| 127 | end | 127 | end |
app/controllers/my_profile/profile_editor_controller.rb
| @@ -39,9 +39,14 @@ class ProfileEditorController < MyProfileController | @@ -39,9 +39,14 @@ class ProfileEditorController < MyProfileController | ||
| 39 | end | 39 | end |
| 40 | 40 | ||
| 41 | def update_categories | 41 | def update_categories |
| 42 | - @current_category = Category.find(params[:category_id]) | ||
| 43 | - @categories = @current_category.children | ||
| 44 | - render :partial => 'shared/select_categories', :locals => {:object_name => 'profile_data'}, :layout => false | 42 | + @object = profile |
| 43 | + if params[:category_id] | ||
| 44 | + @current_category = Category.find(params[:category_id]) | ||
| 45 | + @categories = @current_category.children | ||
| 46 | + else | ||
| 47 | + @categories = environment.top_level_categories.select{|i| !i.children.empty?} | ||
| 48 | + end | ||
| 49 | + render :partial => 'shared/select_categories', :locals => {:object_name => 'profile_data', :multiple => true}, :layout => false | ||
| 45 | end | 50 | end |
| 46 | 51 | ||
| 47 | end | 52 | end |
app/models/profile.rb
| @@ -127,7 +127,7 @@ class Profile < ActiveRecord::Base | @@ -127,7 +127,7 @@ class Profile < ActiveRecord::Base | ||
| 127 | 127 | ||
| 128 | def category_ids=(ids) | 128 | def category_ids=(ids) |
| 129 | ProfileCategorization.remove_all_for(self) | 129 | ProfileCategorization.remove_all_for(self) |
| 130 | - ids.each do |item| | 130 | + ids.uniq.each do |item| |
| 131 | add_category(Category.find(item)) | 131 | add_category(Category.find(item)) |
| 132 | end | 132 | end |
| 133 | end | 133 | end |
app/views/profile_editor/edit.rhtml
| @@ -36,7 +36,7 @@ | @@ -36,7 +36,7 @@ | ||
| 36 | </div> | 36 | </div> |
| 37 | </p> | 37 | </p> |
| 38 | 38 | ||
| 39 | - <%= select_categories(:profile_data, _('Select the categories of your interest'), 1) %> | 39 | + <%= select_categories(:profile_data, _('Select the categories of your interest'), :title_size => 1, :multiple => true) %> |
| 40 | 40 | ||
| 41 | <% button_bar do %> | 41 | <% button_bar do %> |
| 42 | <%= submit_button('save', _('Save'), :cancel => {:action => 'index'}) %> | 42 | <%= submit_button('save', _('Save'), :cancel => {:action => 'index'}) %> |
test/functional/cms_controller_test.rb
| @@ -296,7 +296,7 @@ class CmsControllerTest < Test::Unit::TestCase | @@ -296,7 +296,7 @@ class CmsControllerTest < Test::Unit::TestCase | ||
| 296 | post :new, :type => TextileArticle.name, :profile => profile.identifier, :article => { :name => 'adding-categories-test', :category_ids => [ c1.id, c3.id, c3.id ] } | 296 | post :new, :type => TextileArticle.name, :profile => profile.identifier, :article => { :name => 'adding-categories-test', :category_ids => [ c1.id, c3.id, c3.id ] } |
| 297 | 297 | ||
| 298 | saved = profile.articles.find_by_name('adding-categories-test') | 298 | saved = profile.articles.find_by_name('adding-categories-test') |
| 299 | - assert_equal [c1, c3, c3], saved.categories | 299 | + assert_equal [c1, c3], saved.categories |
| 300 | end | 300 | end |
| 301 | 301 | ||
| 302 | should 'filter html from textile article name' do | 302 | should 'filter html from textile article name' do |
test/functional/profile_editor_controller_test.rb
| @@ -83,7 +83,7 @@ class ProfileEditorControllerTest < Test::Unit::TestCase | @@ -83,7 +83,7 @@ class ProfileEditorControllerTest < Test::Unit::TestCase | ||
| 83 | get :edit, :profile => 'test_user' | 83 | get :edit, :profile => 'test_user' |
| 84 | assert_response :success | 84 | assert_response :success |
| 85 | assert_template 'edit' | 85 | assert_template 'edit' |
| 86 | - assert_tag :tag => 'input', :attributes => {:name => 'profile_data[category_ids][]', :value => cat2.id} | 86 | + assert_tag :tag => 'a', :attributes => { :id => "select-category-#{cat1.id}-link" } |
| 87 | end | 87 | end |
| 88 | 88 | ||
| 89 | should 'save categorization of profile' do | 89 | should 'save categorization of profile' do |
| @@ -259,12 +259,12 @@ class ProfileEditorControllerTest < Test::Unit::TestCase | @@ -259,12 +259,12 @@ class ProfileEditorControllerTest < Test::Unit::TestCase | ||
| 259 | assert_tag :tag => 'input', :attributes => { :name => 'profile_data[image_builder][uploaded_data]' } | 259 | assert_tag :tag => 'input', :attributes => { :name => 'profile_data[image_builder][uploaded_data]' } |
| 260 | end | 260 | end |
| 261 | 261 | ||
| 262 | - should 'show categories field on edit profile' do | 262 | + should 'show categories links on edit profile' do |
| 263 | cat1 = Environment.default.categories.create!(:display_in_menu => true, :name => 'top category') | 263 | cat1 = Environment.default.categories.create!(:display_in_menu => true, :name => 'top category') |
| 264 | cat2 = Environment.default.categories.create!(:display_in_menu => true, :name => 'sub category', :parent => cat1) | 264 | cat2 = Environment.default.categories.create!(:display_in_menu => true, :name => 'sub category', :parent => cat1) |
| 265 | person = create_user('testuser').person | 265 | person = create_user('testuser').person |
| 266 | get :edit, :profile => 'testuser' | 266 | get :edit, :profile => 'testuser' |
| 267 | - assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'profile_data[category_ids][]', :value => cat2.id} | 267 | + assert_tag :tag => 'a', :attributes => { :id => "select-category-#{cat1.id}-link" } |
| 268 | end | 268 | end |
| 269 | 269 | ||
| 270 | should 'render edit template' do | 270 | should 'render edit template' do |
test/unit/profile_test.rb
| @@ -677,6 +677,15 @@ class ProfileTest < Test::Unit::TestCase | @@ -677,6 +677,15 @@ class ProfileTest < Test::Unit::TestCase | ||
| 677 | assert_kind_of TinyMceArticle, profile.home_page | 677 | assert_kind_of TinyMceArticle, profile.home_page |
| 678 | end | 678 | end |
| 679 | 679 | ||
| 680 | + should 'not add a category twice to profile' do | ||
| 681 | + c1 = Category.create!(:environment => Environment.default, :name => 'c1') | ||
| 682 | + c2 = c1.children.create!(:environment => Environment.default, :name => 'c2') | ||
| 683 | + c3 = c1.children.create!(:environment => Environment.default, :name => 'c3') | ||
| 684 | + profile = create_user('testuser').person | ||
| 685 | + profile.category_ids = [c2,c3,c3].map(&:id) | ||
| 686 | + assert_equal [c2, c3], profile.categories(true) | ||
| 687 | + end | ||
| 688 | + | ||
| 680 | private | 689 | private |
| 681 | 690 | ||
| 682 | def assert_invalid_identifier(id) | 691 | def assert_invalid_identifier(id) |