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 8 end
9 9  
10 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 12 @roles = @roles.select{|r| r.has_kind?('Profile') }
13 13 @person = profile.members.find { |m| m.id == params[:person].to_i }
14 14 if @person && @person.define_roles(@roles, profile)
... ...
app/models/article.rb
... ... @@ -54,7 +54,7 @@ class Article < ActiveRecord::Base
54 54 def category_ids=(ids)
55 55 ArticleCategorization.remove_all_for(self)
56 56 ids.uniq.each do |item|
57   - add_category(Category.find(item))
  57 + add_category(Category.find(item)) unless item.to_i.zero?
58 58 end
59 59 end
60 60  
... ...
app/models/profile.rb
... ... @@ -176,7 +176,7 @@ class Profile < ActiveRecord::Base
176 176 def category_ids=(ids)
177 177 ProfileCategorization.remove_all_for(self)
178 178 ids.uniq.each do |item|
179   - add_category(Category.find(item))
  179 + add_category(Category.find(item)) unless item.to_i.zero?
180 180 end
181 181 end
182 182  
... ...
test/functional/profile_members_controller_test.rb
... ... @@ -253,4 +253,16 @@ class ProfileMembersControllerTest < Test::Unit::TestCase
253 253 assert_includes assigns(:users_found), daniela
254 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 268 end
... ...
test/unit/article_test.rb
... ... @@ -741,4 +741,12 @@ class ArticleTest < Test::Unit::TestCase
741 741 assert_not_includes as, a1
742 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 752 end
... ...
test/unit/category_test.rb
... ... @@ -288,9 +288,9 @@ class CategoryTest < Test::Unit::TestCase
288 288 c = @env.categories.build(:name => 'my category'); c.save!
289 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 295 c1 = a1.comments.build(:title => 'test', :body => 'asdsa', :author => person); c1.save!
296 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 1385 assert_equal({ :profile => 'testprofile', :controller => 'profile', :action => 'join'}, profile.join_url)
1386 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 1396 private
1389 1397  
1390 1398 def assert_invalid_identifier(id)
... ...