Commit f6e59824e6919fca19190ac96738f1e5452c0ac0

Authored by Victor Costa
1 parent a7ef8536

Fix environment role edition

An environment role has permissions for both environment and profile but
edition page was displaying only environment permissions.
app/helpers/role_helper.rb
1 1 module RoleHelper
  2 +
  3 + def role_available_permissions(role)
  4 + role.kind == "Environment" ? ['Environment', 'Profile'] : [role.kind]
  5 + end
  6 +
2 7 end
... ...
app/views/role/_form.html.erb
... ... @@ -6,10 +6,14 @@
6 6  
7 7 <%= required f.text_field(:name) %>
8 8  
9   - <p><%= _('Permissions:') %><p>
10   - <% permissions.keys.each do |p| %>
11   - <%= check_box_tag("role[permissions][]", p, role.has_permission?(p), { :id => p }) %>
12   - <%= content_tag(:label, permission_name(p), { :for => p }) %><br/>
  9 + <% permissions.each do |key| %>
  10 + <div class="permissions <%= key.downcase %>">
  11 + <h4><%= _('%s Permissions:' % key) %></h4>
  12 + <% ActiveRecord::Base::PERMISSIONS[key].keys.each do |p| %>
  13 + <%= check_box_tag("role[permissions][]", p, role.has_permission?(p), { :id => p }) %>
  14 + <%= content_tag(:label, permission_name(p), { :for => p }) %><br/>
  15 + <% end %>
  16 + </div>
13 17 <% end %>
14 18  
15 19 <% button_bar do %>
... ...
app/views/role/edit.html.erb
1 1 <h2> <%= _("Editing #{@role.name}") %> </h2>
2 2  
3   -<%= render :partial => 'form', :locals => { :mode => :edit, :role => @role, :permissions => ActiveRecord::Base::PERMISSIONS[@role.kind] } %>
  3 +<%= render :partial => 'form', :locals => { :mode => :edit, :role => @role, :permissions => role_available_permissions(@role) } %>
... ...
app/views/role/new.html.erb
1 1 <h2> <%= _("Create a new role") %> </h2>
2 2  
3   -<%= render :partial => 'form', :locals => { :mode => :create, :role => @role, :permissions => ActiveRecord::Base::PERMISSIONS[@role.kind] } %>
  3 +<%= render :partial => 'form', :locals => { :mode => :create, :role => @role, :permissions => role_available_permissions(@role) } %>
... ...
test/functional/role_controller_test.rb
... ... @@ -78,4 +78,24 @@ class RoleControllerTest &lt; ActionController::TestCase
78 78 get :edit, :id => role.id
79 79 end
80 80 end
  81 +
  82 + should 'display permissions for both environment and profile when editing a environment role' do
  83 + role = Role.create!(:name => 'environment_role', :key => 'environment_role', :environment => Environment.default)
  84 + get :edit, :id => role.id
  85 + ['Environment', 'Profile'].each do |key|
  86 + ActiveRecord::Base::PERMISSIONS[key].each do |permission, value|
  87 + assert_select ".permissions.#{key.downcase} input##{permission}"
  88 + end
  89 + end
  90 + end
  91 +
  92 + should 'display permissions only for profile when editing a profile role' do
  93 + role = Role.create!(:name => 'profile_role', :key => 'profile_role', :environment => Environment.default)
  94 + get :edit, :id => role.id
  95 + ActiveRecord::Base::PERMISSIONS['Profile'].each do |permission, value|
  96 + assert_select "input##{permission}"
  97 + end
  98 + assert_select ".permissions.environment", false
  99 + end
  100 +
81 101 end
... ...