Commit c54ef437ad4a9ff89e8c99e078db34d7306333e3

Authored by Moises Machado
Committed by Antonio Terceiro
1 parent ea44d410

ActionItem1194: made code handles "0" on check_box values

* changed category_ids on profile and article
  * changed update_roles on profile_members controller
  * updated a test that passed categories objects instead of ids to category_ids
app/controllers/my_profile/profile_members_controller.rb
@@ -8,7 +8,7 @@ class ProfileMembersController < MyProfileController @@ -8,7 +8,7 @@ class ProfileMembersController < MyProfileController
8 end 8 end
9 9
10 def update_roles 10 def update_roles
11 - @roles = params[:roles] ? environment.roles.find(params[:roles]) : [] 11 + @roles = params[:roles] ? environment.roles.find(params[:roles].select{|r|!r.to_i.zero?}) : []
12 @roles = @roles.select{|r| r.has_kind?('Profile') } 12 @roles = @roles.select{|r| r.has_kind?('Profile') }
13 @person = profile.members.find { |m| m.id == params[:person].to_i } 13 @person = profile.members.find { |m| m.id == params[:person].to_i }
14 if @person && @person.define_roles(@roles, profile) 14 if @person && @person.define_roles(@roles, profile)
app/models/article.rb
@@ -54,7 +54,7 @@ class Article < ActiveRecord::Base @@ -54,7 +54,7 @@ class Article < ActiveRecord::Base
54 def category_ids=(ids) 54 def category_ids=(ids)
55 ArticleCategorization.remove_all_for(self) 55 ArticleCategorization.remove_all_for(self)
56 ids.uniq.each do |item| 56 ids.uniq.each do |item|
57 - add_category(Category.find(item)) 57 + add_category(Category.find(item)) unless item.to_i.zero?
58 end 58 end
59 end 59 end
60 60
app/models/profile.rb
@@ -176,7 +176,7 @@ class Profile < ActiveRecord::Base @@ -176,7 +176,7 @@ class Profile < ActiveRecord::Base
176 def category_ids=(ids) 176 def category_ids=(ids)
177 ProfileCategorization.remove_all_for(self) 177 ProfileCategorization.remove_all_for(self)
178 ids.uniq.each do |item| 178 ids.uniq.each do |item|
179 - add_category(Category.find(item)) 179 + add_category(Category.find(item)) unless item.to_i.zero?
180 end 180 end
181 end 181 end
182 182
test/functional/profile_members_controller_test.rb
@@ -253,4 +253,16 @@ class ProfileMembersControllerTest < Test::Unit::TestCase @@ -253,4 +253,16 @@ class ProfileMembersControllerTest < Test::Unit::TestCase
253 assert_includes assigns(:users_found), daniela 253 assert_includes assigns(:users_found), daniela
254 end 254 end
255 255
  256 + should 'ignore roles with id zero' do
  257 + ent = Enterprise.create!(:name => 'Test Ent', :identifier => 'test_ent')
  258 + p = create_user_with_permission('test_user', 'manage_memberships', ent)
  259 + login_as :test_user
  260 + r = ent.environment.roles.create!(:name => 'test_role', :permissions => ['some_perm'])
  261 + get :update_roles, :profile => ent.identifier, :person => p.id, :roles => ["0", r.id, nil]
  262 +
  263 + p_roles = p.find_roles(ent).map(&:role).uniq
  264 +
  265 + assert p_roles, [r]
  266 + end
  267 +
256 end 268 end
test/unit/article_test.rb
@@ -741,4 +741,12 @@ class ArticleTest < Test::Unit::TestCase @@ -741,4 +741,12 @@ class ArticleTest < Test::Unit::TestCase
741 assert_not_includes as, a1 741 assert_not_includes as, a1
742 end 742 end
743 743
  744 + should 'ignore category with zero as id' do
  745 + a = profile.articles.create!(:name => 'a test article')
  746 + c = Category.create!(:name => 'test category', :environment => profile.environment)
  747 + a.category_ids = ['0', c.id, nil]
  748 + assert a.save
  749 + assert_equal [c], a.categories
  750 + end
  751 +
744 end 752 end
test/unit/category_test.rb
@@ -288,9 +288,9 @@ class CategoryTest < Test::Unit::TestCase @@ -288,9 +288,9 @@ class CategoryTest < Test::Unit::TestCase
288 c = @env.categories.build(:name => 'my category'); c.save! 288 c = @env.categories.build(:name => 'my category'); c.save!
289 person = create_user('testuser').person 289 person = create_user('testuser').person
290 290
291 - a1 = person.articles.build(:name => 'art1', :category_ids => [c]); a1.save!  
292 - a2 = person.articles.build(:name => 'art2', :category_ids => [c]); a2.save!  
293 - a3 = person.articles.build(:name => 'art3', :category_ids => [c]); a3.save! 291 + a1 = person.articles.build(:name => 'art1', :category_ids => [c.id]); a1.save!
  292 + a2 = person.articles.build(:name => 'art2', :category_ids => [c.id]); a2.save!
  293 + a3 = person.articles.build(:name => 'art3', :category_ids => [c.id]); a3.save!
294 294
295 c1 = a1.comments.build(:title => 'test', :body => 'asdsa', :author => person); c1.save! 295 c1 = a1.comments.build(:title => 'test', :body => 'asdsa', :author => person); c1.save!
296 c2 = a2.comments.build(:title => 'test', :body => 'asdsa', :author => person); c2.save! 296 c2 = a2.comments.build(:title => 'test', :body => 'asdsa', :author => person); c2.save!
test/unit/profile_test.rb
@@ -1385,6 +1385,14 @@ class ProfileTest < Test::Unit::TestCase @@ -1385,6 +1385,14 @@ class ProfileTest < Test::Unit::TestCase
1385 assert_equal({ :profile => 'testprofile', :controller => 'profile', :action => 'join'}, profile.join_url) 1385 assert_equal({ :profile => 'testprofile', :controller => 'profile', :action => 'join'}, profile.join_url)
1386 end 1386 end
1387 1387
  1388 + should 'ignore categgory with id zero' do
  1389 + profile = Profile.create!(:name => "Test Profile", :identifier => 'testprofile', :environment_id => create_environment('mycolivre.net').id)
  1390 + c = Category.create!(:name => 'test cat', :environment => profile.environment)
  1391 + profile.category_ids = ['0', c.id, nil]
  1392 +
  1393 + assert_equal [c], profile.categories
  1394 + end
  1395 +
1388 private 1396 private
1389 1397
1390 def assert_invalid_identifier(id) 1398 def assert_invalid_identifier(id)