Commit 61e1b12f709aea0bbbc39916c30c769a3ef74300
1 parent
dd6b5db7
Exists in
master
and in
29 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 |