From 947f0a6974becfa5950f92b6883eb39da2e3d5b1 Mon Sep 17 00:00:00 2001 From: MoisesMachado Date: Tue, 18 Sep 2007 20:31:15 +0000 Subject: [PATCH] ActionItem5: tested the controller to create and manage roles and the role assignment model --- app/controllers/environment_admin/role_controller.rb | 20 ++++++++++---------- app/models/role.rb | 18 +++++++++++++----- app/views/role/show.rhtml | 2 -- test/fixtures/roles.yml | 2 ++ test/functional/role_controller_test.rb | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- test/unit/role_assignment_test.rb | 19 +++++++++++++++---- test/unit/role_test.rb | 36 ++++++++++++++++++++++++++++++++---- 7 files changed, 127 insertions(+), 28 deletions(-) diff --git a/app/controllers/environment_admin/role_controller.rb b/app/controllers/environment_admin/role_controller.rb index a69cd8c..ce17804 100644 --- a/app/controllers/environment_admin/role_controller.rb +++ b/app/controllers/environment_admin/role_controller.rb @@ -8,16 +8,16 @@ class RoleController < EnvironmentAdminController end def new - @role = Role.new(:name => '', :permissions => []) + @role = Role.new end def create - role = Role.new(params[:role]) - if role.save - redirect_to :action => 'show', :id => role + @role = Role.new(params[:role]) + if @role.save + redirect_to :action => 'show', :id => @role else flash[:notice] = _('Failed to create role') - redirect_to :action => 'index' + render :action => 'new' end end @@ -26,9 +26,9 @@ class RoleController < EnvironmentAdminController end def update - role = Role.find(params[:id]) - if role.update_attributes(params[:role]) - redirect_to :action => 'show', :id => role + @role = Role.find(params[:id]) + if @role.update_attributes(params[:role]) + redirect_to :action => 'show', :id => @role else flash[:notice] = _('Failed to edit role') render :action => 'edit' @@ -36,8 +36,8 @@ class RoleController < EnvironmentAdminController end def destroy - role = Role.find(params[:id]) - if role.destroy + @role = Role.find(params[:id]) + if @role.destroy redirect_to :action => 'index' else flash[:notice] = _('Failed to edit role') diff --git a/app/models/role.rb b/app/models/role.rb index 370e4b5..08e3e32 100644 --- a/app/models/role.rb +++ b/app/models/role.rb @@ -10,20 +10,28 @@ class Role < ActiveRecord::Base } } + PERMISSIONS_LIST = PERMISSIONS.values.map{|h| h.keys }.flatten + def self.permission_name(p) msgid = PERMISSIONS.values.inject({}){|s,v| s.merge(v)}[p] gettext(msgid) end - - has_many :role_assignments + has_many :role_assignments serialize :permissions, Array - + validates_uniqueness_of :name + + def validate + unless (permissions - PERMISSIONS_LIST).empty? + errors.add :permissons, 'non existent permission' + end + end + def initialize(*args) super(*args) - permissions = [] + self[:permissions] ||= [] end - + def has_permission?(perm) permissions.include?(perm) end diff --git a/app/views/role/show.rhtml b/app/views/role/show.rhtml index e86632a..3001cc6 100644 --- a/app/views/role/show.rhtml +++ b/app/views/role/show.rhtml @@ -1,6 +1,4 @@

<%= _(@role.name) %>

- -