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 255 end
256 256  
257 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 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 264 end
265 265  
266 266 def remove_member(person)
... ...
test/unit/community_test.rb
... ... @@ -44,4 +44,24 @@ class CommunityTest < Test::Unit::TestCase
44 44 assert_respond_to community, :contact_person
45 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 67 end
... ...
test/unit/enterprise_test.rb
... ... @@ -76,4 +76,24 @@ class EnterpriseTest < Test::Unit::TestCase
76 76 assert_equal 5, e.blocks.size
77 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 99 end
... ...
test/unit/organization_test.rb
... ... @@ -161,5 +161,25 @@ class OrganizationTest < Test::Unit::TestCase
161 161 assert_respond_to org, :closed
162 162 assert_respond_to org, :closed?
163 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 185 end
... ...
test/unit/profile_test.rb
... ... @@ -320,19 +320,18 @@ class ProfileTest < Test::Unit::TestCase
320 320 end
321 321  
322 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 325 assert_kind_of Article, profile.home_page
326 326 assert_kind_of RssFeed, profile.articles.find_by_path('feed')
327 327 end
328 328  
329   - should 'allow to add new members' do
  329 + should 'raises when add members' do
330 330 c = Profile.create!(:name => 'my test profile', :identifier => 'mytestprofile')
331 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 335 end
337 336  
338 337 should 'allow to add administrators' do
... ... @@ -452,17 +451,6 @@ class ProfileTest < Test::Unit::TestCase
452 451 assert_includes Enterprise.find(:all, :within => 2, :origin => [45, 45]), e
453 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 454 should 'have a public profile by default' do
467 455 assert_equal true, Profile.new.public_profile
468 456 end
... ...