Commit 2ab9e1f4275c5bf808c40432b88f7df9a70e2d1e
1 parent
4735b157
Exists in
master
and in
29 other branches
ActionItem41: actually generating the list of people
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1335 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
4 changed files
with
55 additions
and
6 deletions
Show diff stats
app/controllers/my_profile/profile_design_controller.rb
... | ... | @@ -3,7 +3,7 @@ class ProfileDesignController < BoxOrganizerController |
3 | 3 | needs_profile |
4 | 4 | |
5 | 5 | def available_blocks |
6 | - @available_blocks ||= [ Block, ArticleBlock, TagsBlock, RecentDocumentsBlock ] | |
6 | + @available_blocks ||= [ Block, ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock ] | |
7 | 7 | end |
8 | 8 | |
9 | 9 | end | ... | ... |
app/models/profile_list_block.rb
1 | 1 | class ProfileListBlock < Block |
2 | 2 | |
3 | - settings_items :limit, :default => 10 | |
3 | + settings_items :limit, :default => 6 | |
4 | 4 | |
5 | 5 | def self.description |
6 | 6 | _('A block that displays random profiles') |
7 | 7 | end |
8 | 8 | |
9 | + def profiles | |
10 | + top = Profile.count | |
11 | + | |
12 | + result = [] | |
13 | + maxsize = [limit,top].compact.min | |
14 | + | |
15 | + maxsize.times do | |
16 | + profile = Profile.find(random(top) + 1) | |
17 | + result << profile | |
18 | + end | |
19 | + | |
20 | + result | |
21 | + end | |
22 | + | |
23 | + def random(top) | |
24 | + Kernel.rand(top) | |
25 | + end | |
26 | + | |
9 | 27 | def content |
10 | 28 | profiles = self.profiles |
11 | 29 | lambda do |
12 | - profiles.map {|item| profile_image_link(item) } | |
30 | + block_title(_('People')) + | |
31 | + profiles.map {|item| content_tag('div', profile_image_link(item)) }.join("\n") | |
13 | 32 | end |
14 | 33 | end |
15 | 34 | ... | ... |
test/unit/profile_list_block_test.rb
... | ... | @@ -6,9 +6,9 @@ class ProfileListBlockTest < Test::Unit::TestCase |
6 | 6 | assert_not_equal Block.description, ProfileListBlock.description |
7 | 7 | end |
8 | 8 | |
9 | - should 'accept a limit of people to be displayed (and default to 10)' do | |
9 | + should 'accept a limit of people to be displayed (and default to 6)' do | |
10 | 10 | block = ProfileListBlock.new |
11 | - assert_equal 10, block.limit | |
11 | + assert_equal 6, block.limit | |
12 | 12 | |
13 | 13 | block.limit = 20 |
14 | 14 | assert_equal 20, block.limit |
... | ... | @@ -33,7 +33,30 @@ class ProfileListBlockTest < Test::Unit::TestCase |
33 | 33 | self.expects(:profile_image_link).with(person2).never |
34 | 34 | self.expects(:profile_image_link).with(person3).once |
35 | 35 | |
36 | - instance_eval(&block.content) | |
36 | + self.expects(:content_tag).returns('<div></div>').at_least_once | |
37 | + self.expects(:_).returns('text').at_least_once | |
38 | + self.expects(:block_title).returns('block title').at_least_once | |
39 | + | |
40 | + assert_kind_of String, instance_eval(&block.content) | |
41 | + end | |
42 | + | |
43 | + should 'pick random people' do | |
44 | + block = ProfileListBlock.new | |
45 | + | |
46 | + Profile.expects(:count).returns(3) | |
47 | + | |
48 | + block.expects(:random).times(3).returns(7).then.returns(4).then.returns(5) | |
49 | + | |
50 | + Profile.expects(:find).with(8) | |
51 | + Profile.expects(:find).with(5) | |
52 | + Profile.expects(:find).with(6) | |
53 | + | |
54 | + block.profiles | |
55 | + end | |
56 | + | |
57 | + should 'use Kernel.rand to generate random numbers' do | |
58 | + Kernel.expects(:rand).with(77).once | |
59 | + ProfileListBlock.new.random(77) | |
37 | 60 | end |
38 | 61 | |
39 | 62 | end | ... | ... |