From e713df48762190e0402655f43ddd9b2e94e497e1 Mon Sep 17 00:00:00 2001 From: MoisesMachado Date: Tue, 25 Sep 2007 22:08:29 +0000 Subject: [PATCH] ActionItem5: changed the way of getting the memberships of a user --- app/controllers/profile_admin/membership_editor_controller.rb | 2 +- app/models/person.rb | 16 +--------------- test/unit/person_test.rb | 24 +++++++++++++++++------- test/unit/profile_test.rb | 2 +- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/controllers/profile_admin/membership_editor_controller.rb b/app/controllers/profile_admin/membership_editor_controller.rb index 6a9bde2..aea6732 100644 --- a/app/controllers/profile_admin/membership_editor_controller.rb +++ b/app/controllers/profile_admin/membership_editor_controller.rb @@ -1,6 +1,6 @@ class MembershipEditorController < ProfileAdminController def index - @memberships = Profile.find(:all, :include => 'role_assignments', :conditions => ['role_assignments.person_id = ?', current_user.person.id]) + @memberships = current_user.person.memberships end end diff --git a/app/models/person.rb b/app/models/person.rb index 3e4ff2c..dc12b37 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -10,7 +10,6 @@ class Person < Profile has_one :person_info has_many :role_assignments - has_many :memberships, :through => :role_assignments, :source => 'resource', :class_name => 'Enterprise' def has_permission?(perm, res=nil) role_assignments.any? {|ra| ra.has_permission?(perm, res)} @@ -30,27 +29,14 @@ class Person < Profile new_conditions end - def profiles(conditions = {}) + def memberships(conditions = {}) Profile.find( :all, :conditions => self.class.conditions_for_profiles(conditions, self), :joins => "LEFT JOIN role_assignments ON profiles.id = role_assignments.resource_id AND role_assignments.resource_type = \"#{Profile.base_class.name}\"", :select => 'profiles.*') end - - def enterprises(conditions = {}) - profiles( ({:type => 'Enterprise'}).merge(conditions)) - end - - def pending_enterprises - enterprises :active => false - end - - def active_enterprises - enterprises :active => true - end - def info person_info end diff --git a/test/unit/person_test.rb b/test/unit/person_test.rb index b448456..64419b4 100644 --- a/test/unit/person_test.rb +++ b/test/unit/person_test.rb @@ -19,7 +19,7 @@ class PersonTest < Test::Unit::TestCase assert pe.save member_role = Role.create(:name => 'member') pr.affiliate(pe, member_role) - assert pe.profiles.include?(pr) + assert pe.memberships.include?(pr) end def test_can_belongs_to_an_enterprise @@ -29,7 +29,7 @@ class PersonTest < Test::Unit::TestCase assert p.save member_role = Role.create(:name => 'member') e.affiliate(p, member_role) - assert p.enterprises.include?(e) + assert p.memberships.include?(e) end def test_can_have_user @@ -65,15 +65,25 @@ class PersonTest < Test::Unit::TestCase end should 'change the roles of the user' do - assert p = User.create(:login => 'jonh', :email => 'john@doe.org', :password => 'dhoe', :password_confirmation => 'dhoe').person - assert e = Enterprise.create(:identifier => 'enter') - assert r1 = Role.create(:name => 'associate') + p = User.create(:login => 'jonh', :email => 'john@doe.org', :password => 'dhoe', :password_confirmation => 'dhoe').person + e = Enterprise.create(:identifier => 'enter', :name => 'Enter') + r1 = Role.create(:name => 'associate') assert e.affiliate(p, r1) - assert r2 = Role.create(:name => 'partner') + r2 = Role.create(:name => 'partner') assert p.define_roles([r2], e) - p = Person.find(p.id) + p.reload assert p.role_assignments.any? {|ra| ra.role == r2} assert !p.role_assignments.any? {|ra| ra.role == r1} end + should 'report that the user has the permission' do + p = User.create(:login => 'jonh', :email => 'john@doe.org', :password => 'dhoe', :password_confirmation => 'dhoe').person + r = Role.create(:name => 'associate', :permissions => ['edit_profile']) + e = Enterprise.create(:identifier => 'enterpri', :name => 'Enterpri') + assert e.affiliate(p, r) + assert p.reload + assert e.reload + assert p.has_permission?('edit_profile', e) + assert !p.has_permission?('destroy_profile', e) + end end diff --git a/test/unit/profile_test.rb b/test/unit/profile_test.rb index 20bcaea..2ac3212 100644 --- a/test/unit/profile_test.rb +++ b/test/unit/profile_test.rb @@ -84,7 +84,7 @@ class ProfileTest < Test::Unit::TestCase assert member_role.save assert pr.affiliate(pe, member_role) - assert pe.profiles.include?(pr) + assert pe.memberships.include?(pr) end def test_search -- libgit2 0.21.2