Commit b8a7be040a9d9a5f052ed2d572d5a48cc2026415
1 parent
692bbc33
Exists in
master
and in
28 other branches
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
Showing
5 changed files
with
70 additions
and
22 deletions
Show diff stats
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 | ... | ... |