Commit 81ee1fefaaef20386737fa2ff0ccf31e90dde8e6

Authored by MoisesMachado
1 parent 1bb5712e

ActionItem428: fixed some inconsitencies in the treatment of members


git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1998 3f533792-8f58-4932-b0fe-aaf55b0a4547
app/controllers/my_profile/profile_members_controller.rb
@@ -13,6 +13,7 @@ class ProfileMembersController < MyProfileController @@ -13,6 +13,7 @@ class ProfileMembersController < MyProfileController
13 13
14 def update_roles 14 def update_roles
15 @roles = params[:roles] ? Role.find(params[:roles]) : [] 15 @roles = params[:roles] ? Role.find(params[:roles]) : []
  16 + @roles = @roles.select{|r| r.has_kind?('Profile') }
16 @person = Person.find(params[:person]) 17 @person = Person.find(params[:person])
17 if @person.define_roles(@roles, profile) 18 if @person.define_roles(@roles, profile)
18 flash[:notice] = _('Roles successfuly updated') 19 flash[:notice] = _('Roles successfuly updated')
@@ -35,7 +36,7 @@ class ProfileMembersController < MyProfileController @@ -35,7 +36,7 @@ class ProfileMembersController < MyProfileController
35 redirect_to :action => 'index' 36 redirect_to :action => 'index'
36 else 37 else
37 @member = Person.find(params[:person]) 38 @member = Person.find(params[:person])
38 - @roles = Role.find(:all).select{ |r| r.has_kind?(:profile) } 39 + @roles = Role.find(:all).select{ |r| r.has_kind?('Profile') }
39 render :action => 'affiliate' 40 render :action => 'affiliate'
40 end 41 end
41 end 42 end
app/models/enterprise.rb
@@ -20,4 +20,20 @@ class Enterprise < Organization @@ -20,4 +20,20 @@ class Enterprise < Organization
20 e.products.each{ |p| p.enterprise_updated(e) } 20 e.products.each{ |p| p.enterprise_updated(e) }
21 end 21 end
22 22
  23 + def closed?
  24 + true
  25 + end
  26 +
  27 + def code
  28 + ("%06d" % id) + Digest::MD5.hexdigest(id.to_s)[0..5]
  29 + end
  30 +
  31 + def self.return_by_code(code)
  32 + id = code[0..5].to_i
  33 + md5 = code[6..11]
  34 + return unless md5 == Digest::MD5.hexdigest(id.to_s)[0..5]
  35 +
  36 + Enterprise.find(id)
  37 + end
  38 +
23 end 39 end
app/views/blocks/profile_info_actions/enterprise.rhtml
1 <ul> 1 <ul>
2 - <%if logged_in? && (! user.favorite_enterprises.include?(profile)) %>  
3 - <li><%= link_to content_tag('span', _('Add favorite enterprise')), { :profile => user.identifier, :controller => 'favorite_enterprises', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li> 2 + <%if logged_in? %>
  3 + <%if !user.favorite_enterprises.include?(profile) %>
  4 + <li><%= link_to content_tag('span', _('Add favorite enterprise')), { :profile => user.identifier, :controller => 'favorite_enterprises', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li>
  5 + <% end %>
  6 + <% if profile.members.include?(user) %>
  7 + <li><%= link_to content_tag('span', _('Leave this enterprise')), { :profile => user.identifier, :controller => 'memberships', :action => 'leave', :id => profile.id }, :class => 'button with-text icon-delete' %></li>
  8 + <% else %>
  9 + <li><%= link_to content_tag('span', _('Join this enterprise')), { :profile => user.identifier, :controller => 'memberships', :action => 'join', :id => profile.id }, :class => 'button with-text icon-add' %></li>
  10 + <% end %>
4 <% end %> 11 <% end %>
5 </ul> 12 </ul>
lib/tasks/populate.rake
@@ -29,7 +29,7 @@ def create_roles @@ -29,7 +29,7 @@ def create_roles
29 'edit_environment_design', 29 'edit_environment_design',
30 'manage_environment_categories', 30 'manage_environment_categories',
31 'manage_environment_roles', 31 'manage_environment_roles',
32 - 'manage_environment_validators' 32 + 'manage_environment_validators',
33 ]) 33 ])
34 Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :permissions => [ 34 Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :permissions => [
35 'edit_profile', 35 'edit_profile',
script/anhetegua
@@ -152,6 +152,7 @@ root = User.create!(:login =&gt; &#39;root&#39;, :email =&gt; &#39;root@noosfero.org&#39;, :password = @@ -152,6 +152,7 @@ root = User.create!(:login =&gt; &#39;root&#39;, :email =&gt; &#39;root@noosfero.org&#39;, :password =
152 admin_role = Environment::Roles.admin 152 admin_role = Environment::Roles.admin
153 153
154 RoleAssignment.create!(:accessor => root, :role => admin_role, :resource => Environment.default) 154 RoleAssignment.create!(:accessor => root, :role => admin_role, :resource => Environment.default)
  155 +RoleAssignment.create!(:accessor => root, :role => owner_role, :resource => Environment.default)
155 156
156 # Sample user and sample enterprise owned by him 157 # Sample user and sample enterprise owned by him
157 ze = User.create!(:login => 'ze', :email => 'ze@localhost.localdomain', :password => 'test', :password_confirmation => 'test').person 158 ze = User.create!(:login => 'ze', :email => 'ze@localhost.localdomain', :password => 'test', :password_confirmation => 'test').person
script/fbes_populate_helper.rb
@@ -45,11 +45,13 @@ require File.dirname(__FILE__) + &#39;/../config/environment&#39; @@ -45,11 +45,13 @@ require File.dirname(__FILE__) + &#39;/../config/environment&#39;
45 end 45 end
46 46
47 def new_ent(data, products, consumptions) 47 def new_ent(data, products, consumptions)
48 - count = 1  
49 - while Enterprise.find_by_identifier(data[:identifier])  
50 - data[:identifier] = data[:identifier] + "-#{count}" 48 + count = 2
  49 + ident = data[:identifier]
  50 + while Enterprise.find_by_identifier(ident)
  51 + ident = data[:identifier] + "-#{count}"
51 count += 1 52 count += 1
52 end 53 end
  54 + data[:identifier] = ident
53 ent = Enterprise.create!({:environment => Environment.default}.merge(data)) 55 ent = Enterprise.create!({:environment => Environment.default}.merge(data))
54 products.each do |p| 56 products.each do |p|
55 ent.products.create!(p) unless ent.products.find(:first, :conditions => p) 57 ent.products.create!(p) unless ent.products.find(:first, :conditions => p)
test/functional/profile_members_controller_test.rb
@@ -53,6 +53,7 @@ class ProfileMembersControllerTest &lt; Test::Unit::TestCase @@ -53,6 +53,7 @@ class ProfileMembersControllerTest &lt; Test::Unit::TestCase
53 get 'change_role', :profile => 'test_enterprise' , :id => member 53 get 'change_role', :profile => 'test_enterprise' , :id => member
54 54
55 assert_response :success 55 assert_response :success
  56 + assert_includes assigns(:roles), role
56 assert_equal member, assigns('member') 57 assert_equal member, assigns('member')
57 assert_template 'change_role' 58 assert_template 'change_role'
58 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'} 59 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'}
@@ -61,19 +62,20 @@ class ProfileMembersControllerTest &lt; Test::Unit::TestCase @@ -61,19 +62,20 @@ class ProfileMembersControllerTest &lt; Test::Unit::TestCase
61 62
62 should 'update roles' do 63 should 'update roles' do
63 ent = Enterprise.create!(:identifier => 'test_enterprise', :name => 'test enterprise') 64 ent = Enterprise.create!(:identifier => 'test_enterprise', :name => 'test enterprise')
64 - role = Role.create!(:name => 'member_role', :permissions => ['edit_profile'])  
65 - orole = Role.create!(:name => 'owner_role', :permissions => ['edit_profile', 'destroy_profile']) 65 + role1 = Role.create!(:name => 'member_role', :permissions => ['edit_profile'])
  66 + role2 = Role.create!(:name => 'owner_role', :permissions => ['edit_profile', 'destroy_profile'])
66 67
67 member = create_user('test_member').person 68 member = create_user('test_member').person
68 - member.add_role(role, ent) 69 + member.add_role(role1, ent)
69 user = create_user_with_permission('test_user', 'manage_memberships', ent) 70 user = create_user_with_permission('test_user', 'manage_memberships', ent)
70 login_as :test_user 71 login_as :test_user
71 72
72 - post 'update_roles', :profile => 'test_enterprise', :roles => [orole.id], :person => member 73 + post 'update_roles', :profile => 'test_enterprise', :roles => [role2.id], :person => member
73 74
74 assert_response :redirect 75 assert_response :redirect
75 member.reload 76 member.reload
76 - assert member.find_roles(ent).map(&:role).include?(orole)  
77 - assert !member.find_roles(ent).map(&:role).include?(role) 77 + roles = member.find_roles(ent).map(&:role)
  78 + assert_includes roles, role2
  79 + assert_not_includes roles, role1
78 end 80 end
79 end 81 end
test/unit/enterprise_test.rb
@@ -103,17 +103,19 @@ class EnterpriseTest &lt; Test::Unit::TestCase @@ -103,17 +103,19 @@ class EnterpriseTest &lt; Test::Unit::TestCase
103 assert_not_includes result, ent2 103 assert_not_includes result, ent2
104 end 104 end
105 105
106 - should 'allow to add new members' do 106 + should 'not allow to add new members' do
107 o = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile') 107 o = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile')
108 p = create_user('mytestuser').person 108 p = create_user('mytestuser').person
109 109
110 o.add_member(p) 110 o.add_member(p)
  111 + o.reload
111 112
112 - assert o.members.include?(p), "Enterprise should add the new member" 113 + assert_not_includes o.members, p
113 end 114 end
114 - 115 +
115 should 'allow to remove members' do 116 should 'allow to remove members' do
116 c = Enterprise.create!(:name => 'my other test profile', :identifier => 'myothertestprofile') 117 c = Enterprise.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')
  118 + c.expects(:closed?).returns(false)
117 p = create_user('myothertestuser').person 119 p = create_user('myothertestuser').person
118 120
119 c.add_member(p) 121 c.add_member(p)
@@ -123,4 +125,13 @@ class EnterpriseTest &lt; Test::Unit::TestCase @@ -123,4 +125,13 @@ class EnterpriseTest &lt; Test::Unit::TestCase
123 assert_not_includes c.members, p 125 assert_not_includes c.members, p
124 end 126 end
125 127
  128 + should 'return coherent code' do
  129 + ent = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile')
  130 + ent2 = Enterprise.create!(:name => 'my test profile 2', :identifier => 'mytestprofile2')
  131 +
  132 + assert_equal ent, Enterprise.return_by_code(ent.code)
  133 + assert_nil Enterprise.return_by_code(ent.code.next)
  134 + end
  135 +
  136 +
126 end 137 end