[Git][noosfero/noosfero][stable-1.7] Merge branch 'secret_members' into 'master'

Rodrigo Souto gitlab at mg.gitlab.com
Mon Jan 23 15:37:23 BRST 2017


Rodrigo Souto pushed to branch stable-1.7 at Noosfero / noosfero


Commits:
d80fb62f by Rodrigo Souto at 2017-01-23T17:37:20+00:00
Merge branch 'secret_members' into 'master'

Fixes secret community member invitations

Closes #242

See merge request !1097
- - - - -


4 changed files:

- app/models/invite_member.rb
- app/models/profile.rb
- test/unit/invite_member_test.rb
- test/unit/profile_test.rb


Changes:

=====================================
app/models/invite_member.rb
=====================================
--- a/app/models/invite_member.rb
+++ b/app/models/invite_member.rb
@@ -13,7 +13,7 @@ class InviteMember < Invitation
   end
 
   def perform
-    community.add_member(friend)
+    community.add_member(friend, true)
   end
 
   def title


=====================================
app/models/profile.rb
=====================================
--- a/app/models/profile.rb
+++ b/app/models/profile.rb
@@ -820,8 +820,8 @@ private :generate_url, :url_options
   end
 
   # Adds a person as member of this Profile.
-  def add_member(person, attributes={})
-    if self.has_members? && !self.secret
+  def add_member(person, invited=false, **attributes)
+    if self.has_members? && (!self.secret || invited)
       if self.closed? && members.count > 0
         AddMember.create!(:person => person, :organization => self) unless self.already_request_membership?(person)
       else


=====================================
test/unit/invite_member_test.rb
=====================================
--- a/test/unit/invite_member_test.rb
+++ b/test/unit/invite_member_test.rb
@@ -22,6 +22,22 @@ class InviteMemberTest < ActiveSupport::TestCase
     ok('friend is member of community') { community.members.include?(friend) }
   end
 
+  should 'actually add as member when confirmed if the community is secret' do
+    person = fast_create(Person)
+    friend = fast_create(Person)
+    friend.stubs(:user).returns(User.new(:email => 'garotos at podres.punk.oi'))
+    person.stubs(:user).returns(User.new(:email => 'suburbio-operario at podres.podres'))
+    community = fast_create(Community, secret: true)
+
+    assert_equal [], community.members
+
+    task = InviteMember.create!(:person => person, :friend => friend, :community_id => community.id)
+    task.finish
+    community.reload
+
+    ok('friend is member of secret community') { community.members.include?(friend) }
+  end
+
   should 'cancel other invitations for same community when confirmed' do
     friend = create_user('friend').person
     p1 = create_user('testuser1').person


=====================================
test/unit/profile_test.rb
=====================================
--- a/test/unit/profile_test.rb
+++ b/test/unit/profile_test.rb
@@ -2242,6 +2242,13 @@ class ProfileTest < ActiveSupport::TestCase
     end
   end
 
+  should 'allow to add members in secret profiles if they are invited' do
+    community = fast_create(Community, secret: true)
+    person = create_user('mytestuser').person
+    community.add_member(person, true)
+    assert_includes community.members, person
+  end
+
   should 'have kinds' do
     k1 = fast_create(Kind, :name => 'Captain', :type => 'Profile', :environment_id => Environment.default.id)
     k2 = fast_create(Kind, :name => 'Number One', :type => 'Profile', :environment_id => Environment.default.id)



View it on GitLab: https://gitlab.com/noosfero/noosfero/commit/d80fb62f7535ea4fbf4f401f8440923457e77629
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20170123/3adb1afd/attachment-0001.html>


More information about the Noosfero-dev mailing list