From 61e1b12f709aea0bbbc39916c30c769a3ef74300 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Mon, 28 Apr 2008 13:08:44 +0000 Subject: [PATCH] ActionItem320: using different blocks for people, enterprises and communities; adapting enterprise and community ones to also accept environment as owner --- app/controllers/admin/environment_design_controller.rb | 2 +- app/models/communities_block.rb | 4 +++- app/models/enterprises_block.rb | 4 +++- app/models/people_block.rb | 25 +++++++++++++++++++++++++ test/unit/communities_block_test.rb | 2 +- test/unit/enterprises_block_test.rb | 2 +- test/unit/people_block_test.rb | 35 +++++++++++++++++++++++++++++++++++ 7 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 app/models/people_block.rb create mode 100644 test/unit/people_block_test.rb diff --git a/app/controllers/admin/environment_design_controller.rb b/app/controllers/admin/environment_design_controller.rb index f741ea8..0661dee 100644 --- a/app/controllers/admin/environment_design_controller.rb +++ b/app/controllers/admin/environment_design_controller.rb @@ -3,7 +3,7 @@ class EnvironmentDesignController < BoxOrganizerController protect 'edit_environment_design', :environment def available_blocks - @available_blocks ||= [ LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, ProfileListBlock ] + @available_blocks ||= [ LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock ] end end diff --git a/app/models/communities_block.rb b/app/models/communities_block.rb index 686a0e6..6c41651 100644 --- a/app/models/communities_block.rb +++ b/app/models/communities_block.rb @@ -25,7 +25,9 @@ class CommunitiesBlock < ProfileListBlock class Finder < ProfileListBlock::Finder def ids - block.owner.community_memberships.map(&:id) + # FIXME when owner is an environment (i.e. listing communities globally + # this can become SLOW) + block.owner.communities.map(&:id) end end diff --git a/app/models/enterprises_block.rb b/app/models/enterprises_block.rb index 53c1471..fa62cf3 100644 --- a/app/models/enterprises_block.rb +++ b/app/models/enterprises_block.rb @@ -26,7 +26,9 @@ class EnterprisesBlock < ProfileListBlock class Finder < ProfileListBlock::Finder def ids - block.owner.enterprise_memberships.map(&:id) + # FIXME when owner is an environment (i.e. listing enterprises globally + # this can become SLOW) + block.owner.enterprises.map(&:id) end end diff --git a/app/models/people_block.rb b/app/models/people_block.rb new file mode 100644 index 0000000..b46daf7 --- /dev/null +++ b/app/models/people_block.rb @@ -0,0 +1,25 @@ +class PeopleBlock < ProfileListBlock + + def title + _('People') + end + + def help + _('Clicking a person takes you to his/her homepage') + end + + def self.description + _('A block displays random people') + end + + def profile_finder + @profile_finder ||= PeopleBlock::Finder.new(self) + end + + class Finder < ProfileListBlock::Finder + def ids + Person.find(:all, :select => 'id', :conditions => { :environment_id => block.owner.id}) + end + end + +end diff --git a/test/unit/communities_block_test.rb b/test/unit/communities_block_test.rb index 1dbc053..10af09c 100644 --- a/test/unit/communities_block_test.rb +++ b/test/unit/communities_block_test.rb @@ -31,7 +31,7 @@ class CommunitiesBlockTest < Test::Unit::TestCase member2 = mock; member2.stubs(:id).returns(2) member3 = mock; member3.stubs(:id).returns(3) - owner.expects(:community_memberships).returns([member1, member2, member3]) + owner.expects(:communities).returns([member1, member2, member3]) block.profile_finder.expects(:pick_random).with(3).returns(2) block.profile_finder.expects(:pick_random).with(2).returns(0) diff --git a/test/unit/enterprises_block_test.rb b/test/unit/enterprises_block_test.rb index 4c8daa7..de87abb 100644 --- a/test/unit/enterprises_block_test.rb +++ b/test/unit/enterprises_block_test.rb @@ -31,7 +31,7 @@ class EnterprisesBlockTest < Test::Unit::TestCase member2 = mock; member2.stubs(:id).returns(2) member3 = mock; member3.stubs(:id).returns(3) - owner.expects(:enterprise_memberships).returns([member1, member2, member3]) + owner.expects(:enterprises).returns([member1, member2, member3]) block.profile_finder.expects(:pick_random).with(3).returns(2) block.profile_finder.expects(:pick_random).with(2).returns(0) diff --git a/test/unit/people_block_test.rb b/test/unit/people_block_test.rb new file mode 100644 index 0000000..88eba98 --- /dev/null +++ b/test/unit/people_block_test.rb @@ -0,0 +1,35 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class PeopleBlockTest < ActiveSupport::TestCase + + should 'inherit from ProfileListBlock' do + assert_kind_of ProfileListBlock, PeopleBlock.new + end + + should 'declare its title' do + assert_not_equal ProfileListBlock.new.title, PeopleBlock.new.title + end + + should 'describe itself' do + assert_not_equal ProfileListBlock.description, PeopleBlock.description + end + + should 'give help' do + assert_not_equal ProfileListBlock.new.help, PeopleBlock.new.help + end + + should 'use its own finder' do + assert_not_equal ProfileListBlock::Finder, PeopleBlock::Finder + assert_kind_of PeopleBlock::Finder, PeopleBlock.new.profile_finder + end + + should 'list people' do + owner = mock + owner.expects(:id).returns(99) + Person.expects(:find).with(:all, :select => 'id', :conditions => { :environment_id => 99}).returns([]) + block = PeopleBlock.new + block.expects(:owner).returns(owner).at_least_once + block.content + end + +end -- libgit2 0.21.2