Commit b8a7be040a9d9a5f052ed2d572d5a48cc2026415
1 parent
692bbc33
Exists in
master
and in
29 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 | ... | ... |