Commit b8a7be040a9d9a5f052ed2d572d5a48cc2026415

Authored by JoenioCosta
1 parent 692bbc33

ActionItem165: just add member if profile has_members is true

git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1842 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/models/profile.rb
@@ -255,12 +255,12 @@ class Profile < ActiveRecord::Base @@ -255,12 +255,12 @@ class Profile < ActiveRecord::Base
255 end 255 end
256 256
257 # Adds a person as member of this Profile. 257 # Adds a person as member of this Profile.
258 - #  
259 - # TODO if the subscription to the profile (closed Community, Enterprise etc)  
260 - # is not open, instead of affiliating directly this method should create a  
261 - # suitable task and assign it to the profile.  
262 def add_member(person) 258 def add_member(person)
263 - self.affiliate(person, Profile::Roles.member) 259 + if self.has_members?
  260 + self.affiliate(person, Profile::Roles.member)
  261 + else
  262 + raise _("%s can't has members") % self.class.name
  263 + end
264 end 264 end
265 265
266 def remove_member(person) 266 def remove_member(person)
test/unit/community_test.rb
@@ -44,4 +44,24 @@ class CommunityTest < Test::Unit::TestCase @@ -44,4 +44,24 @@ class CommunityTest < Test::Unit::TestCase
44 assert_respond_to community, :contact_person 44 assert_respond_to community, :contact_person
45 end 45 end
46 46
  47 + should 'allow to add new members' do
  48 + c = Community.create!(:name => 'my test profile', :identifier => 'mytestprofile')
  49 + p = create_user('mytestuser').person
  50 +
  51 + c.add_member(p)
  52 +
  53 + assert c.members.include?(p), "Community should add the new member"
  54 + end
  55 +
  56 + should 'allow to remove members' do
  57 + c = Community.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')
  58 + p = create_user('myothertestuser').person
  59 +
  60 + c.add_member(p)
  61 + assert_includes c.members, p
  62 + c.remove_member(p)
  63 + c.reload
  64 + assert_not_includes c.members, p
  65 + end
  66 +
47 end 67 end
test/unit/enterprise_test.rb
@@ -76,4 +76,24 @@ class EnterpriseTest < Test::Unit::TestCase @@ -76,4 +76,24 @@ class EnterpriseTest < Test::Unit::TestCase
76 assert_equal 5, e.blocks.size 76 assert_equal 5, e.blocks.size
77 end 77 end
78 78
  79 + should 'allow to add new members' do
  80 + o = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile')
  81 + p = create_user('mytestuser').person
  82 +
  83 + o.add_member(p)
  84 +
  85 + assert o.members.include?(p), "Enterprise should add the new member"
  86 + end
  87 +
  88 + should 'allow to remove members' do
  89 + c = Enterprise.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')
  90 + p = create_user('myothertestuser').person
  91 +
  92 + c.add_member(p)
  93 + assert_includes c.members, p
  94 + c.remove_member(p)
  95 + c.reload
  96 + assert_not_includes c.members, p
  97 + end
  98 +
79 end 99 end
test/unit/organization_test.rb
@@ -161,5 +161,25 @@ class OrganizationTest < Test::Unit::TestCase @@ -161,5 +161,25 @@ class OrganizationTest < Test::Unit::TestCase
161 assert_respond_to org, :closed 161 assert_respond_to org, :closed
162 assert_respond_to org, :closed? 162 assert_respond_to org, :closed?
163 end 163 end
  164 +
  165 + should 'allow to add new members' do
  166 + o = Organization.create!(:name => 'my test profile', :identifier => 'mytestprofile')
  167 + p = create_user('mytestuser').person
  168 +
  169 + o.add_member(p)
  170 +
  171 + assert o.members.include?(p), "Organization should add the new member"
  172 + end
164 173
  174 + should 'allow to remove members' do
  175 + c = Organization.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')
  176 + p = create_user('myothertestuser').person
  177 +
  178 + c.add_member(p)
  179 + assert_includes c.members, p
  180 + c.remove_member(p)
  181 + c.reload
  182 + assert_not_includes c.members, p
  183 + end
  184 +
165 end 185 end
test/unit/profile_test.rb
@@ -320,19 +320,18 @@ class ProfileTest < Test::Unit::TestCase @@ -320,19 +320,18 @@ class ProfileTest < Test::Unit::TestCase
320 end 320 end
321 321
322 should 'create a homepage and a feed on creation' do 322 should 'create a homepage and a feed on creation' do
323 - profile = Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile') 323 + profile = Organization.create!(:name => 'my test profile', :identifier => 'mytestprofile')
324 324
325 assert_kind_of Article, profile.home_page 325 assert_kind_of Article, profile.home_page
326 assert_kind_of RssFeed, profile.articles.find_by_path('feed') 326 assert_kind_of RssFeed, profile.articles.find_by_path('feed')
327 end 327 end
328 328
329 - should 'allow to add new members' do 329 + should 'raises when add members' do
330 c = Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile') 330 c = Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile')
331 p = create_user('mytestuser').person 331 p = create_user('mytestuser').person
332 -  
333 - c.add_member(p)  
334 -  
335 - assert c.members.include?(p), "Profile should add the new member" 332 + assert_raise RuntimeError do
  333 + c.add_member(p)
  334 + end
336 end 335 end
337 336
338 should 'allow to add administrators' do 337 should 'allow to add administrators' do
@@ -452,17 +451,6 @@ class ProfileTest < Test::Unit::TestCase @@ -452,17 +451,6 @@ class ProfileTest < Test::Unit::TestCase
452 assert_includes Enterprise.find(:all, :within => 2, :origin => [45, 45]), e 451 assert_includes Enterprise.find(:all, :within => 2, :origin => [45, 45]), e
453 end 452 end
454 453
455 - should 'allow to remove members' do  
456 - c = Profile.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')  
457 - p = create_user('myothertestuser').person  
458 -  
459 - c.add_member(p)  
460 - assert_includes c.members, p  
461 - c.remove_member(p)  
462 - c.reload  
463 - assert_not_includes c.members, p  
464 - end  
465 -  
466 should 'have a public profile by default' do 454 should 'have a public profile by default' do
467 assert_equal true, Profile.new.public_profile 455 assert_equal true, Profile.new.public_profile
468 end 456 end