Commit 61e1b12f709aea0bbbc39916c30c769a3ef74300
1 parent
dd6b5db7
Exists in
master
and in
23 other branches
ActionItem320: using different blocks for people, enterprises and
communities; adapting enterprise and community ones to also accept environment as owner git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1710 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
7 changed files
with
69 additions
and
5 deletions
Show diff stats
app/controllers/admin/environment_design_controller.rb
| @@ -3,7 +3,7 @@ class EnvironmentDesignController < BoxOrganizerController | @@ -3,7 +3,7 @@ class EnvironmentDesignController < BoxOrganizerController | ||
| 3 | protect 'edit_environment_design', :environment | 3 | protect 'edit_environment_design', :environment |
| 4 | 4 | ||
| 5 | def available_blocks | 5 | def available_blocks |
| 6 | - @available_blocks ||= [ LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, ProfileListBlock ] | 6 | + @available_blocks ||= [ LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock ] |
| 7 | end | 7 | end |
| 8 | 8 | ||
| 9 | end | 9 | end |
app/models/communities_block.rb
| @@ -25,7 +25,9 @@ class CommunitiesBlock < ProfileListBlock | @@ -25,7 +25,9 @@ class CommunitiesBlock < ProfileListBlock | ||
| 25 | 25 | ||
| 26 | class Finder < ProfileListBlock::Finder | 26 | class Finder < ProfileListBlock::Finder |
| 27 | def ids | 27 | def ids |
| 28 | - block.owner.community_memberships.map(&:id) | 28 | + # FIXME when owner is an environment (i.e. listing communities globally |
| 29 | + # this can become SLOW) | ||
| 30 | + block.owner.communities.map(&:id) | ||
| 29 | end | 31 | end |
| 30 | end | 32 | end |
| 31 | 33 |
app/models/enterprises_block.rb
| @@ -26,7 +26,9 @@ class EnterprisesBlock < ProfileListBlock | @@ -26,7 +26,9 @@ class EnterprisesBlock < ProfileListBlock | ||
| 26 | 26 | ||
| 27 | class Finder < ProfileListBlock::Finder | 27 | class Finder < ProfileListBlock::Finder |
| 28 | def ids | 28 | def ids |
| 29 | - block.owner.enterprise_memberships.map(&:id) | 29 | + # FIXME when owner is an environment (i.e. listing enterprises globally |
| 30 | + # this can become SLOW) | ||
| 31 | + block.owner.enterprises.map(&:id) | ||
| 30 | end | 32 | end |
| 31 | end | 33 | end |
| 32 | 34 |
| @@ -0,0 +1,25 @@ | @@ -0,0 +1,25 @@ | ||
| 1 | +class PeopleBlock < ProfileListBlock | ||
| 2 | + | ||
| 3 | + def title | ||
| 4 | + _('People') | ||
| 5 | + end | ||
| 6 | + | ||
| 7 | + def help | ||
| 8 | + _('Clicking a person takes you to his/her homepage') | ||
| 9 | + end | ||
| 10 | + | ||
| 11 | + def self.description | ||
| 12 | + _('A block displays random people') | ||
| 13 | + end | ||
| 14 | + | ||
| 15 | + def profile_finder | ||
| 16 | + @profile_finder ||= PeopleBlock::Finder.new(self) | ||
| 17 | + end | ||
| 18 | + | ||
| 19 | + class Finder < ProfileListBlock::Finder | ||
| 20 | + def ids | ||
| 21 | + Person.find(:all, :select => 'id', :conditions => { :environment_id => block.owner.id}) | ||
| 22 | + end | ||
| 23 | + end | ||
| 24 | + | ||
| 25 | +end |
test/unit/communities_block_test.rb
| @@ -31,7 +31,7 @@ class CommunitiesBlockTest < Test::Unit::TestCase | @@ -31,7 +31,7 @@ class CommunitiesBlockTest < Test::Unit::TestCase | ||
| 31 | member2 = mock; member2.stubs(:id).returns(2) | 31 | member2 = mock; member2.stubs(:id).returns(2) |
| 32 | member3 = mock; member3.stubs(:id).returns(3) | 32 | member3 = mock; member3.stubs(:id).returns(3) |
| 33 | 33 | ||
| 34 | - owner.expects(:community_memberships).returns([member1, member2, member3]) | 34 | + owner.expects(:communities).returns([member1, member2, member3]) |
| 35 | 35 | ||
| 36 | block.profile_finder.expects(:pick_random).with(3).returns(2) | 36 | block.profile_finder.expects(:pick_random).with(3).returns(2) |
| 37 | block.profile_finder.expects(:pick_random).with(2).returns(0) | 37 | block.profile_finder.expects(:pick_random).with(2).returns(0) |
test/unit/enterprises_block_test.rb
| @@ -31,7 +31,7 @@ class EnterprisesBlockTest < Test::Unit::TestCase | @@ -31,7 +31,7 @@ class EnterprisesBlockTest < Test::Unit::TestCase | ||
| 31 | member2 = mock; member2.stubs(:id).returns(2) | 31 | member2 = mock; member2.stubs(:id).returns(2) |
| 32 | member3 = mock; member3.stubs(:id).returns(3) | 32 | member3 = mock; member3.stubs(:id).returns(3) |
| 33 | 33 | ||
| 34 | - owner.expects(:enterprise_memberships).returns([member1, member2, member3]) | 34 | + owner.expects(:enterprises).returns([member1, member2, member3]) |
| 35 | 35 | ||
| 36 | block.profile_finder.expects(:pick_random).with(3).returns(2) | 36 | block.profile_finder.expects(:pick_random).with(3).returns(2) |
| 37 | block.profile_finder.expects(:pick_random).with(2).returns(0) | 37 | block.profile_finder.expects(:pick_random).with(2).returns(0) |
| @@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
| 1 | +require File.dirname(__FILE__) + '/../test_helper' | ||
| 2 | + | ||
| 3 | +class PeopleBlockTest < ActiveSupport::TestCase | ||
| 4 | + | ||
| 5 | + should 'inherit from ProfileListBlock' do | ||
| 6 | + assert_kind_of ProfileListBlock, PeopleBlock.new | ||
| 7 | + end | ||
| 8 | + | ||
| 9 | + should 'declare its title' do | ||
| 10 | + assert_not_equal ProfileListBlock.new.title, PeopleBlock.new.title | ||
| 11 | + end | ||
| 12 | + | ||
| 13 | + should 'describe itself' do | ||
| 14 | + assert_not_equal ProfileListBlock.description, PeopleBlock.description | ||
| 15 | + end | ||
| 16 | + | ||
| 17 | + should 'give help' do | ||
| 18 | + assert_not_equal ProfileListBlock.new.help, PeopleBlock.new.help | ||
| 19 | + end | ||
| 20 | + | ||
| 21 | + should 'use its own finder' do | ||
| 22 | + assert_not_equal ProfileListBlock::Finder, PeopleBlock::Finder | ||
| 23 | + assert_kind_of PeopleBlock::Finder, PeopleBlock.new.profile_finder | ||
| 24 | + end | ||
| 25 | + | ||
| 26 | + should 'list people' do | ||
| 27 | + owner = mock | ||
| 28 | + owner.expects(:id).returns(99) | ||
| 29 | + Person.expects(:find).with(:all, :select => 'id', :conditions => { :environment_id => 99}).returns([]) | ||
| 30 | + block = PeopleBlock.new | ||
| 31 | + block.expects(:owner).returns(owner).at_least_once | ||
| 32 | + block.content | ||
| 33 | + end | ||
| 34 | + | ||
| 35 | +end |