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 13  
14 14 def update_roles
15 15 @roles = params[:roles] ? Role.find(params[:roles]) : []
  16 + @roles = @roles.select{|r| r.has_kind?('Profile') }
16 17 @person = Person.find(params[:person])
17 18 if @person.define_roles(@roles, profile)
18 19 flash[:notice] = _('Roles successfuly updated')
... ... @@ -35,7 +36,7 @@ class ProfileMembersController < MyProfileController
35 36 redirect_to :action => 'index'
36 37 else
37 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 40 render :action => 'affiliate'
40 41 end
41 42 end
... ...
app/models/enterprise.rb
... ... @@ -20,4 +20,20 @@ class Enterprise < Organization
20 20 e.products.each{ |p| p.enterprise_updated(e) }
21 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 39 end
... ...
app/views/blocks/profile_info_actions/enterprise.rhtml
1 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 11 <% end %>
5 12 </ul>
... ...
lib/tasks/populate.rake
... ... @@ -29,7 +29,7 @@ def create_roles
29 29 'edit_environment_design',
30 30 'manage_environment_categories',
31 31 'manage_environment_roles',
32   - 'manage_environment_validators'
  32 + 'manage_environment_validators',
33 33 ])
34 34 Role.create!(:key => 'profile_admin', :name => N_('Profile Administrator'), :permissions => [
35 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 152 admin_role = Environment::Roles.admin
153 153  
154 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 157 # Sample user and sample enterprise owned by him
157 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 45 end
46 46  
47 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 52 count += 1
52 53 end
  54 + data[:identifier] = ident
53 55 ent = Enterprise.create!({:environment => Environment.default}.merge(data))
54 56 products.each do |p|
55 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 53 get 'change_role', :profile => 'test_enterprise' , :id => member
54 54  
55 55 assert_response :success
  56 + assert_includes assigns(:roles), role
56 57 assert_equal member, assigns('member')
57 58 assert_template 'change_role'
58 59 assert_tag :tag => 'input', :attributes => { :type => 'checkbox', :name => 'roles[]'}
... ... @@ -61,19 +62,20 @@ class ProfileMembersControllerTest &lt; Test::Unit::TestCase
61 62  
62 63 should 'update roles' do
63 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 68 member = create_user('test_member').person
68   - member.add_role(role, ent)
  69 + member.add_role(role1, ent)
69 70 user = create_user_with_permission('test_user', 'manage_memberships', ent)
70 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 75 assert_response :redirect
75 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 80 end
79 81 end
... ...
test/unit/enterprise_test.rb
... ... @@ -103,17 +103,19 @@ class EnterpriseTest &lt; Test::Unit::TestCase
103 103 assert_not_includes result, ent2
104 104 end
105 105  
106   - should 'allow to add new members' do
  106 + should 'not allow to add new members' do
107 107 o = Enterprise.create!(:name => 'my test profile', :identifier => 'mytestprofile')
108 108 p = create_user('mytestuser').person
109 109  
110 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 114 end
114   -
  115 +
115 116 should 'allow to remove members' do
116 117 c = Enterprise.create!(:name => 'my other test profile', :identifier => 'myothertestprofile')
  118 + c.expects(:closed?).returns(false)
117 119 p = create_user('myothertestuser').person
118 120  
119 121 c.add_member(p)
... ... @@ -123,4 +125,13 @@ class EnterpriseTest &lt; Test::Unit::TestCase
123 125 assert_not_includes c.members, p
124 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 137 end
... ...