Commit d4f19d98fea7bd12493bbbd34e64ffca27aebf8f
Committed by
Victor Costa
1 parent
0b8db772
Exists in
master
and in
27 other branches
Added people_block plugin
Showing
37 changed files
with
889 additions
and
313 deletions
Show diff stats
app/controllers/admin/environment_design_controller.rb
... | ... | @@ -3,7 +3,7 @@ class EnvironmentDesignController < BoxOrganizerController |
3 | 3 | protect 'edit_environment_design', :environment |
4 | 4 | |
5 | 5 | def available_blocks |
6 | - @available_blocks ||= [ ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock, TagsBlock ] | |
6 | + @available_blocks ||= [ ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock, TagsBlock ] | |
7 | 7 | @available_blocks += plugins.dispatch(:extra_blocks, :type => Environment) |
8 | 8 | end |
9 | 9 | ... | ... |
app/controllers/my_profile/profile_design_controller.rb
... | ... | @@ -9,14 +9,8 @@ class ProfileDesignController < BoxOrganizerController |
9 | 9 | |
10 | 10 | blocks += plugins.dispatch(:extra_blocks) |
11 | 11 | |
12 | - # blocks exclusive for organizations | |
13 | - if profile.has_members? | |
14 | - blocks << MembersBlock | |
15 | - end | |
16 | - | |
17 | 12 | # blocks exclusive to people |
18 | 13 | if profile.person? |
19 | - blocks << FriendsBlock | |
20 | 14 | blocks << FavoriteEnterprisesBlock |
21 | 15 | blocks << CommunitiesBlock |
22 | 16 | blocks << EnterprisesBlock | ... | ... |
app/helpers/sweeper_helper.rb
... | ... | @@ -18,9 +18,7 @@ module SweeperHelper |
18 | 18 | expire_timeout_fragment(profile.manage_friends_cache_key(:npage => i.to_s)) |
19 | 19 | end |
20 | 20 | |
21 | - # friends blocks | |
22 | - blocks = profile.blocks.select{|b| b.kind_of?(FriendsBlock)} | |
23 | - BlockSweeper.expire_blocks(blocks) | |
21 | + expire_blocks_cache(profile, [:profile]) | |
24 | 22 | end |
25 | 23 | |
26 | 24 | def expire_communities(profile) | ... | ... |
app/models/box.rb
... | ... | @@ -25,14 +25,11 @@ class Box < ActiveRecord::Base |
25 | 25 | FansBlock, |
26 | 26 | FavoriteEnterprisesBlock, |
27 | 27 | FeedReaderBlock, |
28 | - FriendsBlock, | |
29 | 28 | HighlightsBlock, |
30 | 29 | LinkListBlock, |
31 | 30 | LoginBlock, |
32 | 31 | MainBlock, |
33 | - MembersBlock, | |
34 | 32 | MyNetworkBlock, |
35 | - PeopleBlock, | |
36 | 33 | ProfileImageBlock, |
37 | 34 | RawHTMLBlock, |
38 | 35 | RecentDocumentsBlock, |
... | ... | @@ -52,14 +49,11 @@ class Box < ActiveRecord::Base |
52 | 49 | FavoriteEnterprisesBlock, |
53 | 50 | FeaturedProductsBlock, |
54 | 51 | FeedReaderBlock, |
55 | - FriendsBlock, | |
56 | 52 | HighlightsBlock, |
57 | 53 | LinkListBlock, |
58 | 54 | LocationBlock, |
59 | 55 | LoginBlock, |
60 | - MembersBlock, | |
61 | 56 | MyNetworkBlock, |
62 | - PeopleBlock, | |
63 | 57 | ProductsBlock, |
64 | 58 | ProfileImageBlock, |
65 | 59 | ProfileInfoBlock, | ... | ... |
app/models/community.rb
app/models/environment.rb
... | ... | @@ -165,7 +165,6 @@ class Environment < ActiveRecord::Base |
165 | 165 | |
166 | 166 | # "right" area |
167 | 167 | env.boxes[2].blocks << CommunitiesBlock.new(:limit => 6) |
168 | - env.boxes[2].blocks << PeopleBlock.new(:limit => 6) | |
169 | 168 | end |
170 | 169 | |
171 | 170 | # One Environment can be reached by many domains | ... | ... |
app/models/friends_block.rb
... | ... | @@ -1,26 +0,0 @@ |
1 | -class FriendsBlock < ProfileListBlock | |
2 | - | |
3 | - def self.description | |
4 | - __('Friends') | |
5 | - end | |
6 | - | |
7 | - def default_title | |
8 | - n__('{#} friend', '{#} friends', profile_count) | |
9 | - end | |
10 | - | |
11 | - def help | |
12 | - _('This block displays your friends.') | |
13 | - end | |
14 | - | |
15 | - def footer | |
16 | - owner_id = owner.identifier | |
17 | - lambda do | |
18 | - link_to s_('friends|View all'), :profile => owner_id, :controller => 'profile', :action => 'friends' | |
19 | - end | |
20 | - end | |
21 | - | |
22 | - def profiles | |
23 | - owner.friends | |
24 | - end | |
25 | - | |
26 | -end |
app/models/members_block.rb
... | ... | @@ -1,26 +0,0 @@ |
1 | -class MembersBlock < ProfileListBlock | |
2 | - | |
3 | - def self.description | |
4 | - _('Members') | |
5 | - end | |
6 | - | |
7 | - def default_title | |
8 | - _('{#} members') | |
9 | - end | |
10 | - | |
11 | - def help | |
12 | - _('This block presents the members of a collective.') | |
13 | - end | |
14 | - | |
15 | - def footer | |
16 | - profile = self.owner | |
17 | - lambda do | |
18 | - link_to _('View all'), :profile => profile.identifier, :controller => 'profile', :action => 'members' | |
19 | - end | |
20 | - end | |
21 | - | |
22 | - def profiles | |
23 | - owner.members | |
24 | - end | |
25 | - | |
26 | -end |
app/models/organization.rb
app/models/people_block.rb
... | ... | @@ -1,25 +0,0 @@ |
1 | -class PeopleBlock < ProfileListBlock | |
2 | - | |
3 | - def default_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 | - _('Random people') | |
13 | - end | |
14 | - | |
15 | - def profiles | |
16 | - owner.people | |
17 | - end | |
18 | - | |
19 | - def footer | |
20 | - lambda do | |
21 | - link_to _('View all'), :controller => 'search', :action => 'people' | |
22 | - end | |
23 | - end | |
24 | - | |
25 | -end |
app/models/person.rb
... | ... | @@ -276,7 +276,7 @@ class Person < Profile |
276 | 276 | [ |
277 | 277 | [MainBlock.new], |
278 | 278 | [ProfileImageBlock.new(:show_name => true), LinkListBlock.new(:links => links), RecentDocumentsBlock.new], |
279 | - [FriendsBlock.new, CommunitiesBlock.new] | |
279 | + [CommunitiesBlock.new] | |
280 | 280 | ] |
281 | 281 | end |
282 | 282 | ... | ... |
app/sweepers/friendship_sweeper.rb
... | ... | @@ -34,8 +34,7 @@ protected |
34 | 34 | expire_timeout_fragment(profile.manage_friends_cache_key(:npage => i.to_s)) |
35 | 35 | end |
36 | 36 | |
37 | - blocks = profile.blocks.select{|b| b.kind_of?(FriendsBlock)} | |
38 | - BlockSweeper.expire_blocks(blocks) | |
37 | + expire_blocks_cache(profile, [:profile]) | |
39 | 38 | end |
40 | 39 | |
41 | 40 | end | ... | ... |
... | ... | @@ -0,0 +1,31 @@ |
1 | +class FriendsBlock < PeopleBlockBase | |
2 | + | |
3 | + def self.description | |
4 | + _('Friends') | |
5 | + end | |
6 | + | |
7 | + def help | |
8 | + _('Clicking a friend takes you to his/her homepage') | |
9 | + end | |
10 | + | |
11 | + def default_title | |
12 | + _('{#} Friends') | |
13 | + end | |
14 | + | |
15 | + def profiles | |
16 | + owner.friends | |
17 | + end | |
18 | + | |
19 | + def footer | |
20 | + owner = self.owner | |
21 | + lambda do | |
22 | + link_to _('View all'), :profile => owner.identifier, :controller => 'profile', :action => 'friends' | |
23 | + end | |
24 | + end | |
25 | + | |
26 | + def self.expire_on | |
27 | + { :profile => [:profile] } | |
28 | + end | |
29 | + | |
30 | +end | |
31 | + | ... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +class MembersBlock < PeopleBlockBase | |
2 | + | |
3 | + def self.description | |
4 | + _('Members') | |
5 | + end | |
6 | + | |
7 | + def help | |
8 | + _('Clicking a member takes you to his/her homepage') | |
9 | + end | |
10 | + | |
11 | + def default_title | |
12 | + _('{#} Members') | |
13 | + end | |
14 | + | |
15 | + def profiles | |
16 | + owner.members | |
17 | + end | |
18 | + | |
19 | + def footer | |
20 | + owner = self.owner | |
21 | + lambda do | |
22 | + link_to _('View all'), :profile => owner.identifier, :controller => 'profile', :action => 'members' | |
23 | + end | |
24 | + end | |
25 | + | |
26 | +end | |
27 | + | ... | ... |
... | ... | @@ -0,0 +1,25 @@ |
1 | +class PeopleBlock < PeopleBlockBase | |
2 | + | |
3 | + def self.description | |
4 | + _('People') | |
5 | + end | |
6 | + | |
7 | + def help | |
8 | + _('Clicking a person takes you to his/her homepage') | |
9 | + end | |
10 | + | |
11 | + def default_title | |
12 | + _('{#} People') | |
13 | + end | |
14 | + | |
15 | + def profiles | |
16 | + owner.people | |
17 | + end | |
18 | + | |
19 | + def footer | |
20 | + lambda do | |
21 | + link_to _('View all'), :controller => 'search', :action => 'people' | |
22 | + end | |
23 | + end | |
24 | + | |
25 | +end | ... | ... |
... | ... | @@ -0,0 +1,98 @@ |
1 | +class PeopleBlockBase < Block | |
2 | + | |
3 | + settings_items :prioritize_people_with_image, :type => :boolean, :default => true | |
4 | + settings_items :limit, :type => :integer, :default => 6 | |
5 | + settings_items :name, :type => String, :default => "" | |
6 | + settings_items :address, :type => String, :default => "" | |
7 | + | |
8 | + def self.description | |
9 | + _('Random people') | |
10 | + end | |
11 | + | |
12 | + def help | |
13 | + _('Clicking on the people or groups will take you to their home page.') | |
14 | + end | |
15 | + | |
16 | + def default_title | |
17 | + _('{#} People') | |
18 | + end | |
19 | + | |
20 | + def view_title | |
21 | + title.gsub('{#}', profile_count.to_s) | |
22 | + end | |
23 | + | |
24 | + def profiles | |
25 | + owner.profiles | |
26 | + end | |
27 | + | |
28 | + def profile_list | |
29 | + result = nil | |
30 | + visible_profiles = profiles.visible.includes([:image,:domains,:preferred_domain,:environment]) | |
31 | + if !prioritize_people_with_image | |
32 | + result = visible_profiles.all(:limit => limit, :order => 'updated_at DESC').sort_by{ rand } | |
33 | + elsif visible_profiles.with_image.count >= limit | |
34 | + result = visible_profiles.with_image.all(:limit => limit * 5, :order => 'updated_at DESC').sort_by{ rand } | |
35 | + else | |
36 | + result = visible_profiles.with_image.sort_by{ rand } + visible_profiles.without_image.all(:limit => limit * 5, :order => 'updated_at DESC').sort_by{ rand } | |
37 | + end | |
38 | + result.slice(0..limit-1) | |
39 | + end | |
40 | + | |
41 | + def profile_count | |
42 | + profiles.visible.count | |
43 | + end | |
44 | + | |
45 | + def content(args={}) | |
46 | + | |
47 | + profiles = self.profile_list | |
48 | + title = self.view_title | |
49 | + | |
50 | + if !self.name.blank? && !self.address.blank? | |
51 | + name = self.name | |
52 | + expanded_address = expand_address(self.address) | |
53 | + end | |
54 | + | |
55 | + lambda do | |
56 | + count = 0 | |
57 | + list = profiles.map {|item| | |
58 | + count += 1 | |
59 | + send(:profile_image_link, item, :minor ) | |
60 | + }.join("\n") | |
61 | + if list.empty? | |
62 | + list = content_tag 'div', _('None'), :class => 'common-profile-list-block-none' | |
63 | + else | |
64 | + if !name.blank? && !expanded_address.blank? | |
65 | + list << content_tag( | |
66 | + 'div', | |
67 | + content_tag( | |
68 | + 'li', | |
69 | + content_tag( | |
70 | + 'div', | |
71 | + link_to( | |
72 | + content_tag('span', name, :class => 'banner-span' ), | |
73 | + expanded_address, | |
74 | + :title => name | |
75 | + ), | |
76 | + :class => 'banner-div' | |
77 | + ), | |
78 | + :class => 'vcard' | |
79 | + ), | |
80 | + :class => 'common-profile-list-block' | |
81 | + ) | |
82 | + end | |
83 | + list = content_tag 'ul', list | |
84 | + end | |
85 | + block_title(title) + content_tag('div', list + tag('br', :style => 'clear:both')) | |
86 | + end | |
87 | + end | |
88 | + | |
89 | + def expand_address(address) | |
90 | + if address !~ /^[a-z]+:\/\// && address !~ /^\// | |
91 | + 'http://' + address | |
92 | + else | |
93 | + address | |
94 | + end | |
95 | + end | |
96 | + | |
97 | +end | |
98 | + | ... | ... |
... | ... | @@ -0,0 +1,27 @@ |
1 | +class PeopleBlockPlugin < Noosfero::Plugin | |
2 | + | |
3 | + def self.plugin_name | |
4 | + "People Block Plugin" | |
5 | + end | |
6 | + | |
7 | + def self.plugin_description | |
8 | + _("A plugin that adds a people block") | |
9 | + end | |
10 | + | |
11 | + def self.extra_blocks | |
12 | + { | |
13 | + PeopleBlock => {:type => Environment}, | |
14 | + MembersBlock => {:type => Community}, | |
15 | + FriendsBlock => {:type => Person} | |
16 | + } | |
17 | + end | |
18 | + | |
19 | + def self.has_admin_url? | |
20 | + false | |
21 | + end | |
22 | + | |
23 | + def stylesheet? | |
24 | + true | |
25 | + end | |
26 | + | |
27 | +end | ... | ... |
... | ... | @@ -0,0 +1,59 @@ |
1 | +/******************************************************************* | |
2 | + * COMMON * | |
3 | + *******************************************************************/ | |
4 | +.people-block .block-footer-content a { | |
5 | + position: absolute; | |
6 | + top: 2px; | |
7 | + right: 0px; | |
8 | + font-size: 11px; | |
9 | + color: #000; | |
10 | + text-decoration: none; | |
11 | + padding-right: 15px; | |
12 | + background: url(/designs/themes/base/imgs/arrow-right-p.png) 100% 50% no-repeat; | |
13 | +} | |
14 | + | |
15 | +.people-block .banner-span { | |
16 | + color: #000; | |
17 | + font-size: 14pt; | |
18 | + font-weight: bold; | |
19 | + background-color: #EEE; | |
20 | +} | |
21 | + | |
22 | + | |
23 | +/******************************************************************* | |
24 | + * MAIN BOX - 1 * | |
25 | + *******************************************************************/ | |
26 | +.box-1 .people-block .banner-div { | |
27 | + line-height: 112px; | |
28 | +} | |
29 | + | |
30 | +.box-1 .people-block .banner-span { | |
31 | + width: 204px; | |
32 | +} | |
33 | + | |
34 | + | |
35 | +/******************************************************************* | |
36 | + * LEFT/RIGHT BOXES * | |
37 | + *******************************************************************/ | |
38 | +.box-2 .people-block .banner-div, | |
39 | +.box-3 .people-block .banner-div { | |
40 | + line-height: 78px; | |
41 | +} | |
42 | + | |
43 | +.box-2 .people-block .banner-div a, | |
44 | +.box-3 .people-block .banner-div a { | |
45 | + height: 78px; | |
46 | +} | |
47 | + | |
48 | +.box-2 .people-block .banner-span, | |
49 | +.box-3 .people-block .banner-span { | |
50 | + width: 116px; | |
51 | +} | |
52 | + | |
53 | +.box-2 .people-block ul, | |
54 | +.box-3 .people-block ul { | |
55 | + min-width: 196px; | |
56 | + width: 192px; | |
57 | + margin: 0px 0px 0px -3px; | |
58 | + padding: 0px; | |
59 | +} | ... | ... |
plugins/people_block/test/functional/people_block_plugin_environment_design_controller_test.rb
0 → 100644
... | ... | @@ -0,0 +1,32 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +# Re-raise errors caught by the controller. | |
4 | +class EnvironmentDesignController; def rescue_action(e) raise e end; end | |
5 | + | |
6 | +class EnvironmentDesignControllerTest < ActionController::TestCase | |
7 | + | |
8 | + def setup | |
9 | + @controller = EnvironmentDesignController.new | |
10 | + @request = ActionController::TestRequest.new | |
11 | + @response = ActionController::TestResponse.new | |
12 | + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([PeopleBlockPlugin.new]) | |
13 | + end | |
14 | + | |
15 | + #attr_accessor :environment, :block | |
16 | + | |
17 | + #should 'display *block people-block* class at design blocks page' do | |
18 | + #get :index | |
19 | + #assert_tag :div, :attributes => {:class => 'block people-block'} | |
20 | + #end | |
21 | + | |
22 | + should 'be able to edit PeopleBlock' do | |
23 | + login_as(create_admin_user(Environment.default)) | |
24 | + b = PeopleBlock.create! | |
25 | + e = Environment.default | |
26 | + e.boxes.create! | |
27 | + e.boxes.first.blocks << b | |
28 | + get :edit, :id => b.id | |
29 | + assert_tag :tag => 'input', :attributes => { :id => 'block_limit' } | |
30 | + end | |
31 | + | |
32 | +end | ... | ... |
plugins/people_block/test/functional/people_block_plugin_profile_design_controller_test.rb
0 → 100644
... | ... | @@ -0,0 +1,70 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +# Re-raise errors caught by the controller. | |
4 | +class ProfileDesignController; def rescue_action(e) raise e end; end | |
5 | + | |
6 | +class ProfileDesignControllerTest < ActionController::TestCase | |
7 | + | |
8 | + def setup | |
9 | + @controller = ProfileDesignController.new | |
10 | + @request = ActionController::TestRequest.new | |
11 | + @response = ActionController::TestResponse.new | |
12 | + Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([PeopleBlockPlugin.new]) | |
13 | + end | |
14 | + | |
15 | + should 'display *block people-block* class at design blocks page' do | |
16 | + user = create_user('testinguser') | |
17 | + login_as(user.login) | |
18 | + | |
19 | + @profile = user.person | |
20 | + @environment = @profile.environment | |
21 | + @environment.save! | |
22 | + | |
23 | + FriendsBlock.delete_all | |
24 | + @box1 = Box.create!(:owner => @profile) | |
25 | + @profile.boxes = [@box1] | |
26 | + | |
27 | + @block = FriendsBlock.new | |
28 | + @block.box = @box1 | |
29 | + @block.save! | |
30 | + | |
31 | + @profile.blocks<<@block | |
32 | + @profile.save! | |
33 | + | |
34 | + get :index, :profile => @profile.identifier | |
35 | + assert_tag :div, :attributes => {:class => 'block friends-block'} | |
36 | + end | |
37 | + | |
38 | + should 'the people block is available for person profile' do | |
39 | + profile = mock | |
40 | + profile.stubs(:has_members?).returns(false) | |
41 | + profile.stubs(:person?).returns(true) | |
42 | + profile.stubs(:community?).returns(false) | |
43 | + profile.stubs(:enterprise?).returns(false) | |
44 | + profile.stubs(:has_blog?).returns(false) | |
45 | + profile.stubs(:is_admin?).with(anything).returns(false) | |
46 | + environment = mock | |
47 | + profile.stubs(:environment).returns(environment) | |
48 | + environment.stubs(:enabled?).returns(false) | |
49 | + @controller.stubs(:profile).returns(profile) | |
50 | + @controller.stubs(:user).returns(profile) | |
51 | + assert_includes @controller.available_blocks, FriendsBlock | |
52 | + end | |
53 | + | |
54 | + should 'the people block is available for community profile' do | |
55 | + profile = mock | |
56 | + profile.stubs(:has_members?).returns(true) | |
57 | + profile.stubs(:person?).returns(false) | |
58 | + profile.stubs(:community?).returns(true) | |
59 | + profile.stubs(:enterprise?).returns(false) | |
60 | + profile.stubs(:has_blog?).returns(false) | |
61 | + profile.stubs(:is_admin?).with(anything).returns(false) | |
62 | + environment = mock | |
63 | + profile.stubs(:environment).returns(environment) | |
64 | + environment.stubs(:enabled?).returns(false) | |
65 | + @controller.stubs(:profile).returns(profile) | |
66 | + @controller.stubs(:user).returns(profile) | |
67 | + assert_includes @controller.available_blocks, MembersBlock | |
68 | + end | |
69 | + | |
70 | +end | ... | ... |
... | ... | @@ -0,0 +1 @@ |
1 | +require File.dirname(__FILE__) + '/../../../test/test_helper' | ... | ... |
... | ... | @@ -0,0 +1,156 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class FriendsBlockTest < ActiveSupport::TestCase | |
4 | + | |
5 | + should 'inherit from Block' do | |
6 | + assert_kind_of Block, FriendsBlock.new | |
7 | + end | |
8 | + | |
9 | + | |
10 | + should 'declare its default title' do | |
11 | + assert_not_equal Block.new.default_title, FriendsBlock.new.default_title | |
12 | + end | |
13 | + | |
14 | + | |
15 | + should 'describe itself' do | |
16 | + assert_not_equal Block.description, FriendsBlock.description | |
17 | + end | |
18 | + | |
19 | + | |
20 | + should 'is editable' do | |
21 | + block = FriendsBlock.new | |
22 | + assert block.editable? | |
23 | + end | |
24 | + | |
25 | + | |
26 | + should 'have field limit' do | |
27 | + block = FriendsBlock.new | |
28 | + assert_respond_to block, :limit | |
29 | + end | |
30 | + | |
31 | + | |
32 | + should 'default value of limit' do | |
33 | + block = FriendsBlock.new | |
34 | + assert_equal 6, block.limit | |
35 | + end | |
36 | + | |
37 | + | |
38 | + should 'have field name' do | |
39 | + block = FriendsBlock.new | |
40 | + assert_respond_to block, :name | |
41 | + end | |
42 | + | |
43 | + | |
44 | + should 'default value of name' do | |
45 | + block = FriendsBlock.new | |
46 | + assert_equal "", block.name | |
47 | + end | |
48 | + | |
49 | + | |
50 | + should 'have field address' do | |
51 | + block = FriendsBlock.new | |
52 | + assert_respond_to block, :address | |
53 | + end | |
54 | + | |
55 | + | |
56 | + should 'default value of address' do | |
57 | + block = FriendsBlock.new | |
58 | + assert_equal "", block.address | |
59 | + end | |
60 | + | |
61 | + | |
62 | + should 'prioritize profiles with image by default' do | |
63 | + assert FriendsBlock.new.prioritize_people_with_image | |
64 | + end | |
65 | + | |
66 | + | |
67 | + should 'accept a limit of people to be displayed' do | |
68 | + block = FriendsBlock.new | |
69 | + block.limit = 20 | |
70 | + assert_equal 20, block.limit | |
71 | + end | |
72 | + | |
73 | + | |
74 | + should 'list friends from person' do | |
75 | + owner = fast_create(Person) | |
76 | + friend1 = fast_create(Person) | |
77 | + friend2 = fast_create(Person) | |
78 | + owner.add_friend(friend1) | |
79 | + owner.add_friend(friend2) | |
80 | + | |
81 | + block = FriendsBlock.new | |
82 | + | |
83 | + block.expects(:owner).returns(owner).at_least_once | |
84 | + expects(:profile_image_link).with(friend1, :minor).returns(friend1.name) | |
85 | + expects(:profile_image_link).with(friend2, :minor).returns(friend2.name) | |
86 | + expects(:block_title).with(anything).returns('') | |
87 | + | |
88 | + content = instance_eval(&block.content) | |
89 | + | |
90 | + assert_match(/#{friend1.name}/, content) | |
91 | + assert_match(/#{friend2.name}/, content) | |
92 | + end | |
93 | + | |
94 | + | |
95 | + should 'link to "all friends"' do | |
96 | + person1 = create_user('mytestperson').person | |
97 | + | |
98 | + block = FriendsBlock.new | |
99 | + block.expects(:owner).returns(person1).at_least_once | |
100 | + | |
101 | + expects(:_).with('View all').returns('View all') | |
102 | + expects(:link_to).with('View all', :profile => 'mytestperson', :controller => 'profile', :action => 'friends').returns('link-to-friends') | |
103 | + | |
104 | + assert_equal 'link-to-friends', instance_eval(&block.footer) | |
105 | + end | |
106 | + | |
107 | + | |
108 | + should 'count number of owner friends' do | |
109 | + owner = fast_create(Person) | |
110 | + friend1 = fast_create(Person) | |
111 | + friend2 = fast_create(Person) | |
112 | + friend3 = fast_create(Person) | |
113 | + owner.add_friend(friend1) | |
114 | + owner.add_friend(friend2) | |
115 | + owner.add_friend(friend3) | |
116 | + | |
117 | + block = FriendsBlock.new | |
118 | + block.expects(:owner).returns(owner).at_least_once | |
119 | + | |
120 | + assert_equal 3, block.profile_count | |
121 | + end | |
122 | + | |
123 | + | |
124 | + should 'count number of public and private friends' do | |
125 | + owner = fast_create(Person) | |
126 | + private_p = fast_create(Person, {:public_profile => false}) | |
127 | + public_p = fast_create(Person, {:public_profile => true}) | |
128 | + | |
129 | + owner.add_friend(private_p) | |
130 | + owner.add_friend(public_p) | |
131 | + | |
132 | + block = FriendsBlock.new | |
133 | + block.expects(:owner).returns(owner).at_least_once | |
134 | + | |
135 | + assert_equal 2, block.profile_count | |
136 | + end | |
137 | + | |
138 | + | |
139 | + should 'not count number of invisible friends' do | |
140 | + owner = fast_create(Person) | |
141 | + private_p = fast_create(Person, {:visible => false}) | |
142 | + public_p = fast_create(Person, {:visible => true}) | |
143 | + | |
144 | + owner.add_friend(private_p) | |
145 | + owner.add_friend(public_p) | |
146 | + | |
147 | + block = FriendsBlock.new | |
148 | + block.expects(:owner).returns(owner).at_least_once | |
149 | + | |
150 | + assert_equal 1, block.profile_count | |
151 | + end | |
152 | + | |
153 | + protected | |
154 | + include NoosferoTestHelper | |
155 | + | |
156 | +end | ... | ... |
... | ... | @@ -0,0 +1,159 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class MembersBlockTest < ActiveSupport::TestCase | |
4 | + | |
5 | + should 'inherit from Block' do | |
6 | + assert_kind_of Block, MembersBlock.new | |
7 | + end | |
8 | + | |
9 | + | |
10 | + should 'declare its default title' do | |
11 | + assert_not_equal Block.new.default_title, MembersBlock.new.default_title | |
12 | + end | |
13 | + | |
14 | + | |
15 | + should 'describe itself' do | |
16 | + assert_not_equal Block.description, MembersBlock.description | |
17 | + end | |
18 | + | |
19 | + | |
20 | + should 'is editable' do | |
21 | + block = MembersBlock.new | |
22 | + assert block.editable? | |
23 | + end | |
24 | + | |
25 | + | |
26 | + should 'have field limit' do | |
27 | + block = MembersBlock.new | |
28 | + assert_respond_to block, :limit | |
29 | + end | |
30 | + | |
31 | + | |
32 | + should 'default value of limit' do | |
33 | + block = MembersBlock.new | |
34 | + assert_equal 6, block.limit | |
35 | + end | |
36 | + | |
37 | + | |
38 | + should 'have field name' do | |
39 | + block = MembersBlock.new | |
40 | + assert_respond_to block, :name | |
41 | + end | |
42 | + | |
43 | + | |
44 | + should 'default value of name' do | |
45 | + block = MembersBlock.new | |
46 | + assert_equal "", block.name | |
47 | + end | |
48 | + | |
49 | + | |
50 | + should 'have field address' do | |
51 | + block = MembersBlock.new | |
52 | + assert_respond_to block, :address | |
53 | + end | |
54 | + | |
55 | + | |
56 | + should 'default value of address' do | |
57 | + block = MembersBlock.new | |
58 | + assert_equal "", block.address | |
59 | + end | |
60 | + | |
61 | + | |
62 | + should 'prioritize profiles with image by default' do | |
63 | + assert MembersBlock.new.prioritize_people_with_image | |
64 | + end | |
65 | + | |
66 | + | |
67 | + should 'respect limit when listing members' do | |
68 | + community = fast_create(Community) | |
69 | + p1 = fast_create(Person) | |
70 | + p2 = fast_create(Person) | |
71 | + p3 = fast_create(Person) | |
72 | + p4 = fast_create(Person) | |
73 | + | |
74 | + community.add_member(p1) | |
75 | + community.add_member(p2) | |
76 | + community.add_member(p3) | |
77 | + community.add_member(p4) | |
78 | + | |
79 | + block = MembersBlock.new(:limit => 3) | |
80 | + block.stubs(:owner).returns(community) | |
81 | + | |
82 | + assert_equal 3, block.profile_list.size | |
83 | + end | |
84 | + | |
85 | + | |
86 | + should 'accept a limit of members to be displayed' do | |
87 | + block = MembersBlock.new | |
88 | + block.limit = 20 | |
89 | + assert_equal 20, block.limit | |
90 | + end | |
91 | + | |
92 | + | |
93 | + should 'list members from community' do | |
94 | + owner = fast_create(Community) | |
95 | + person1 = fast_create(Person) | |
96 | + person2 = fast_create(Person) | |
97 | + owner.add_member(person1) | |
98 | + owner.add_member(person2) | |
99 | + | |
100 | + block = MembersBlock.new | |
101 | + | |
102 | + block.expects(:owner).returns(owner).at_least_once | |
103 | + expects(:profile_image_link).with(person1, :minor).returns(person1.name) | |
104 | + expects(:profile_image_link).with(person2, :minor).returns(person2.name) | |
105 | + expects(:block_title).with(anything).returns('') | |
106 | + | |
107 | + content = instance_eval(&block.content) | |
108 | + | |
109 | + assert_match(/#{person1.name}/, content) | |
110 | + assert_match(/#{person2.name}/, content) | |
111 | + end | |
112 | + | |
113 | + | |
114 | + should 'link to "all members"' do | |
115 | + community = fast_create(Community) | |
116 | + | |
117 | + block = MembersBlock.new | |
118 | + block.expects(:owner).returns(community).at_least_once | |
119 | + | |
120 | + expects(:_).with('View all').returns('View all') | |
121 | + expects(:link_to).with('View all', :profile => community.identifier, :controller => 'profile', :action => 'members').returns('link-to-members') | |
122 | + | |
123 | + assert_equal 'link-to-members', instance_eval(&block.footer) | |
124 | + end | |
125 | + | |
126 | + | |
127 | + should 'count number of public and private members' do | |
128 | + owner = fast_create(Community) | |
129 | + private_p = fast_create(Person, {:public_profile => false}) | |
130 | + public_p = fast_create(Person, {:public_profile => true}) | |
131 | + | |
132 | + owner.add_member(private_p) | |
133 | + owner.add_member(public_p) | |
134 | + | |
135 | + block = MembersBlock.new | |
136 | + block.expects(:owner).returns(owner).at_least_once | |
137 | + | |
138 | + assert_equal 2, block.profile_count | |
139 | + end | |
140 | + | |
141 | + | |
142 | + should 'not count number of invisible members' do | |
143 | + owner = fast_create(Community) | |
144 | + private_p = fast_create(Person, {:visible => false}) | |
145 | + public_p = fast_create(Person, {:visible => true}) | |
146 | + | |
147 | + owner.add_member(private_p) | |
148 | + owner.add_member(public_p) | |
149 | + | |
150 | + block = MembersBlock.new | |
151 | + block.expects(:owner).returns(owner).at_least_once | |
152 | + | |
153 | + assert_equal 1, block.profile_count | |
154 | + end | |
155 | + | |
156 | + protected | |
157 | + include NoosferoTestHelper | |
158 | + | |
159 | +end | ... | ... |
plugins/people_block/test/unit/people_block_plugin_test.rb
0 → 100644
... | ... | @@ -0,0 +1,25 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class PeopleBlockPluginTest < ActiveSupport::TestCase | |
4 | + | |
5 | + should "return PeopleBlock in extra_blocks class method" do | |
6 | + assert PeopleBlockPlugin.extra_blocks.keys.include?(PeopleBlock) | |
7 | + end | |
8 | + | |
9 | + should "return MembersBlock in extra_blocks class method" do | |
10 | + assert PeopleBlockPlugin.extra_blocks.keys.include?(MembersBlock) | |
11 | + end | |
12 | + | |
13 | + should "return FriendsBlock in extra_blocks class method" do | |
14 | + assert PeopleBlockPlugin.extra_blocks.keys.include?(FriendsBlock) | |
15 | + end | |
16 | + | |
17 | + should "return false for class method has_admin_url?" do | |
18 | + assert !PeopleBlockPlugin.has_admin_url? | |
19 | + end | |
20 | + | |
21 | + should "return false for class method stylesheet?" do | |
22 | + assert PeopleBlockPlugin.new.stylesheet? | |
23 | + end | |
24 | + | |
25 | +end | ... | ... |
... | ... | @@ -0,0 +1,145 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class PeopleBlockTest < ActiveSupport::TestCase | |
4 | + | |
5 | + should 'inherit from Block' do | |
6 | + assert_kind_of Block, PeopleBlock.new | |
7 | + end | |
8 | + | |
9 | + | |
10 | + should 'declare its default title' do | |
11 | + assert_not_equal Block.new.default_title, PeopleBlock.new.default_title | |
12 | + end | |
13 | + | |
14 | + | |
15 | + should 'describe itself' do | |
16 | + assert_not_equal Block.description, PeopleBlock.description | |
17 | + end | |
18 | + | |
19 | + | |
20 | + should 'is editable' do | |
21 | + block = PeopleBlock.new | |
22 | + assert block.editable? | |
23 | + end | |
24 | + | |
25 | + | |
26 | + should 'have field limit' do | |
27 | + block = PeopleBlock.new | |
28 | + assert_respond_to block, :limit | |
29 | + end | |
30 | + | |
31 | + | |
32 | + should 'default value of limit' do | |
33 | + block = PeopleBlock.new | |
34 | + assert_equal 6, block.limit | |
35 | + end | |
36 | + | |
37 | + | |
38 | + should 'have field name' do | |
39 | + block = PeopleBlock.new | |
40 | + assert_respond_to block, :name | |
41 | + end | |
42 | + | |
43 | + | |
44 | + should 'default value of name' do | |
45 | + block = PeopleBlock.new | |
46 | + assert_equal "", block.name | |
47 | + end | |
48 | + | |
49 | + | |
50 | + should 'have field address' do | |
51 | + block = PeopleBlock.new | |
52 | + assert_respond_to block, :address | |
53 | + end | |
54 | + | |
55 | + | |
56 | + should 'default value of address' do | |
57 | + block = PeopleBlock.new | |
58 | + assert_equal "", block.address | |
59 | + end | |
60 | + | |
61 | + | |
62 | + should 'prioritize profiles with image by default' do | |
63 | + assert PeopleBlock.new.prioritize_people_with_image | |
64 | + end | |
65 | + | |
66 | + | |
67 | + should 'respect limit when listing people' do | |
68 | + env = fast_create(Environment) | |
69 | + p1 = fast_create(Person, :environment_id => env.id) | |
70 | + p2 = fast_create(Person, :environment_id => env.id) | |
71 | + p3 = fast_create(Person, :environment_id => env.id) | |
72 | + p4 = fast_create(Person, :environment_id => env.id) | |
73 | + | |
74 | + block = PeopleBlock.new(:limit => 3) | |
75 | + block.stubs(:owner).returns(env) | |
76 | + | |
77 | + assert_equal 3, block.profile_list.size | |
78 | + end | |
79 | + | |
80 | + | |
81 | + should 'accept a limit of people to be displayed' do | |
82 | + block = PeopleBlock.new | |
83 | + block.limit = 20 | |
84 | + assert_equal 20, block.limit | |
85 | + end | |
86 | + | |
87 | + | |
88 | + should 'list people from environment' do | |
89 | + owner = fast_create(Environment) | |
90 | + person1 = fast_create(Person, :environment_id => owner.id) | |
91 | + person2 = fast_create(Person, :environment_id => owner.id) | |
92 | + | |
93 | + block = PeopleBlock.new | |
94 | + | |
95 | + block.expects(:owner).returns(owner).at_least_once | |
96 | + expects(:profile_image_link).with(person1, :minor).returns(person1.name) | |
97 | + expects(:profile_image_link).with(person2, :minor).returns(person2.name) | |
98 | + expects(:block_title).with(anything).returns('') | |
99 | + | |
100 | + content = instance_eval(&block.content) | |
101 | + | |
102 | + assert_match(/#{person1.name}/, content) | |
103 | + assert_match(/#{person2.name}/, content) | |
104 | + end | |
105 | + | |
106 | + | |
107 | + should 'link to "all people"' do | |
108 | + env = fast_create(Environment) | |
109 | + | |
110 | + block = PeopleBlock.new | |
111 | + | |
112 | + expects(:_).with('View all').returns('View all') | |
113 | + expects(:link_to).with('View all', :controller => 'search', :action => 'people').returns('link-to-people') | |
114 | + | |
115 | + assert_equal 'link-to-people', instance_eval(&block.footer) | |
116 | + end | |
117 | + | |
118 | + | |
119 | + should 'count number of public and private people' do | |
120 | + owner = fast_create(Environment) | |
121 | + private_p = fast_create(Person, :public_profile => false, :environment_id => owner.id) | |
122 | + public_p = fast_create(Person, :public_profile => true, :environment_id => owner.id) | |
123 | + | |
124 | + block = PeopleBlock.new | |
125 | + block.expects(:owner).returns(owner).at_least_once | |
126 | + | |
127 | + assert_equal 2, block.profile_count | |
128 | + end | |
129 | + | |
130 | + | |
131 | + should 'not count number of invisible people' do | |
132 | + owner = fast_create(Environment) | |
133 | + private_p = fast_create(Person, :visible => false, :environment_id => owner.id) | |
134 | + public_p = fast_create(Person, :visible => true, :environment_id => owner.id) | |
135 | + | |
136 | + block = PeopleBlock.new | |
137 | + block.expects(:owner).returns(owner).at_least_once | |
138 | + | |
139 | + assert_equal 1, block.profile_count | |
140 | + end | |
141 | + | |
142 | + protected | |
143 | + include NoosferoTestHelper | |
144 | + | |
145 | +end | ... | ... |
plugins/people_block/views/box_organizer/_friends_block.rhtml
0 → 120000
plugins/people_block/views/box_organizer/_members_block.rhtml
0 → 120000
plugins/people_block/views/box_organizer/_people_block.rhtml
0 → 120000
... | ... | @@ -0,0 +1,21 @@ |
1 | +<div id="people_block_plugin"> | |
2 | + | |
3 | + <p> | |
4 | + <span>Limit</span> | |
5 | + <br /> | |
6 | + <%= text_field_tag 'block[limit]', @block.limit, :maxlength => 2 %> | |
7 | + </p> | |
8 | + | |
9 | + <p> | |
10 | + <span>Name</span> | |
11 | + <br /> | |
12 | + <%= text_field_tag 'block[name]', @block.name %> | |
13 | + </p> | |
14 | + | |
15 | + <p> | |
16 | + <span>Address</span> | |
17 | + <br /> | |
18 | + <%= text_field_tag 'block[address]', @block.address %> | |
19 | + </p> | |
20 | + | |
21 | +</div> | ... | ... |
test/functional/environment_design_controller_test.rb
... | ... | @@ -6,7 +6,7 @@ class EnvironmentDesignController; def rescue_action(e) raise e end; end |
6 | 6 | |
7 | 7 | class EnvironmentDesignControllerTest < ActionController::TestCase |
8 | 8 | |
9 | - ALL_BLOCKS = [ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, PeopleBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock, TagsBlock ] | |
9 | + ALL_BLOCKS = [ArticleBlock, LoginBlock, EnvironmentStatisticsBlock, RecentDocumentsBlock, EnterprisesBlock, CommunitiesBlock, SellersSearchBlock, LinkListBlock, FeedReaderBlock, SlideshowBlock, HighlightsBlock, FeaturedProductsBlock, CategoriesBlock, RawHTMLBlock, TagsBlock ] | |
10 | 10 | |
11 | 11 | def setup |
12 | 12 | @controller = EnvironmentDesignController.new |
... | ... | @@ -103,16 +103,6 @@ class EnvironmentDesignControllerTest < ActionController::TestCase |
103 | 103 | assert_tag :tag => 'input', :attributes => { :id => 'block_limit' } |
104 | 104 | end |
105 | 105 | |
106 | - should 'be able to edit PeopleBlock' do | |
107 | - login_as(create_admin_user(Environment.default)) | |
108 | - b = PeopleBlock.create! | |
109 | - e = Environment.default | |
110 | - e.boxes.create! | |
111 | - e.boxes.first.blocks << b | |
112 | - get :edit, :id => b.id | |
113 | - assert_tag :tag => 'input', :attributes => { :id => 'block_limit' } | |
114 | - end | |
115 | - | |
116 | 106 | should 'be able to edit SlideshowBlock' do |
117 | 107 | login_as(create_admin_user(Environment.default)) |
118 | 108 | b = SlideshowBlock.create! | ... | ... |
test/functional/profile_design_controller_test.rb
... | ... | @@ -6,8 +6,7 @@ class ProfileDesignController; def rescue_action(e) raise e end; end |
6 | 6 | class ProfileDesignControllerTest < ActionController::TestCase |
7 | 7 | |
8 | 8 | COMMOM_BLOCKS = [ ArticleBlock, TagsBlock, RecentDocumentsBlock, ProfileInfoBlock, LinkListBlock, MyNetworkBlock, FeedReaderBlock, ProfileImageBlock, LocationBlock, SlideshowBlock, ProfileSearchBlock, HighlightsBlock ] |
9 | - PERSON_BLOCKS = COMMOM_BLOCKS + [FriendsBlock, FavoriteEnterprisesBlock, CommunitiesBlock, EnterprisesBlock ] | |
10 | - PERSON_BLOCKS_WITH_MEMBERS = PERSON_BLOCKS + [MembersBlock] | |
9 | + PERSON_BLOCKS = COMMOM_BLOCKS + [ FavoriteEnterprisesBlock, CommunitiesBlock, EnterprisesBlock ] | |
11 | 10 | PERSON_BLOCKS_WITH_BLOG = PERSON_BLOCKS + [BlogArchivesBlock] |
12 | 11 | |
13 | 12 | ENTERPRISE_BLOCKS = COMMOM_BLOCKS + [DisabledEnterpriseMessageBlock, FeaturedProductsBlock, FansBlock] |
... | ... | @@ -485,23 +484,6 @@ class ProfileDesignControllerTest < ActionController::TestCase |
485 | 484 | assert_equal PERSON_BLOCKS, @controller.available_blocks |
486 | 485 | end |
487 | 486 | |
488 | - should 'the person with members blocks are all available' do | |
489 | - profile = mock | |
490 | - profile.stubs(:has_members?).returns(true) | |
491 | - profile.stubs(:person?).returns(true) | |
492 | - profile.stubs(:community?).returns(true) | |
493 | - profile.stubs(:enterprise?).returns(false) | |
494 | - profile.stubs(:has_blog?).returns(false) | |
495 | - profile.stubs(:is_admin?).with(anything).returns(false) | |
496 | - environment = mock | |
497 | - profile.stubs(:environment).returns(environment) | |
498 | - environment.stubs(:enabled?).returns(false) | |
499 | - @controller.stubs(:profile).returns(profile) | |
500 | - @controller.stubs(:user).returns(profile) | |
501 | - Noosfero::Plugin::Manager.any_instance.stubs(:enabled_plugins).returns([]) | |
502 | - assert_equal [], @controller.available_blocks - PERSON_BLOCKS_WITH_MEMBERS | |
503 | - end | |
504 | - | |
505 | 487 | should 'the person with blog blocks are all available' do |
506 | 488 | profile = mock |
507 | 489 | profile.stubs(:has_members?).returns(false) | ... | ... |
test/unit/box_test.rb
... | ... | @@ -32,14 +32,11 @@ class BoxTest < ActiveSupport::TestCase |
32 | 32 | assert blocks.include?('fans-block') |
33 | 33 | assert blocks.include?('favorite-enterprises-block') |
34 | 34 | assert blocks.include?('feed-reader-block') |
35 | - assert blocks.include?('friends-block') | |
36 | 35 | assert blocks.include?('highlights-block') |
37 | 36 | assert blocks.include?('link-list-block') |
38 | 37 | assert blocks.include?('login-block') |
39 | 38 | assert blocks.include?('main-block') |
40 | - assert blocks.include?('members-block') | |
41 | 39 | assert blocks.include?('my-network-block') |
42 | - assert blocks.include?('people-block') | |
43 | 40 | assert blocks.include?('profile-image-block') |
44 | 41 | assert blocks.include?('raw-html-block') |
45 | 42 | assert blocks.include?('recent-documents-block') |
... | ... | @@ -65,14 +62,11 @@ class BoxTest < ActiveSupport::TestCase |
65 | 62 | assert blocks.include?('favorite-enterprises-block') |
66 | 63 | assert blocks.include?('featured-products-block') |
67 | 64 | assert blocks.include?('feed-reader-block') |
68 | - assert blocks.include?('friends-block') | |
69 | 65 | assert blocks.include?('highlights-block') |
70 | 66 | assert blocks.include?('link-list-block') |
71 | 67 | assert blocks.include?('location-block') |
72 | 68 | assert blocks.include?('login-block') |
73 | - assert blocks.include?('members-block') | |
74 | 69 | assert blocks.include?('my-network-block') |
75 | - assert blocks.include?('people-block') | |
76 | 70 | assert blocks.include?('products-block') |
77 | 71 | assert blocks.include?('profile-image-block') |
78 | 72 | assert blocks.include?('profile-info-block') | ... | ... |
test/unit/friends_block_test.rb
... | ... | @@ -1,86 +0,0 @@ |
1 | -require File.dirname(__FILE__) + '/../test_helper' | |
2 | - | |
3 | -class FriendsBlockTest < ActiveSupport::TestCase | |
4 | - | |
5 | - should 'describe itself' do | |
6 | - assert_not_equal ProfileListBlock.description, FriendsBlock.description | |
7 | - end | |
8 | - | |
9 | - should 'declare its default title' do | |
10 | - FriendsBlock.any_instance.stubs(:profile_count).returns(0) | |
11 | - assert_not_equal ProfileListBlock.new.default_title, FriendsBlock.new.default_title | |
12 | - end | |
13 | - | |
14 | - should 'list owner friends' do | |
15 | - p1 = create_user('testuser1').person | |
16 | - p2 = create_user('testuser2').person | |
17 | - p3 = create_user('testuser3').person | |
18 | - p4 = create_user('testuser4').person | |
19 | - | |
20 | - p1.add_friend(p2) | |
21 | - p1.add_friend(p3) | |
22 | - p1.add_friend(p4) | |
23 | - p1.friends.reload | |
24 | - | |
25 | - block = FriendsBlock.new | |
26 | - block.expects(:owner).returns(p1) | |
27 | - | |
28 | - assert_equivalent [p2, p3, p4], block.profiles | |
29 | - end | |
30 | - | |
31 | - should 'point to list with all friends' do | |
32 | - block = FriendsBlock.new | |
33 | - user = mock | |
34 | - user.expects(:identifier).returns('theuser') | |
35 | - block.expects(:owner).returns(user) | |
36 | - | |
37 | - expects(:link_to).with('View all', :profile => 'theuser', :controller => 'profile', :action => 'friends') | |
38 | - | |
39 | - instance_eval(&block.footer) | |
40 | - end | |
41 | - | |
42 | - should 'count number of owner friends' do | |
43 | - p1 = create_user('testuser1').person | |
44 | - p2 = create_user('testuser2').person | |
45 | - p3 = create_user('testuser3').person | |
46 | - p4 = create_user('testuser4').person | |
47 | - | |
48 | - p1.add_friend(p2) | |
49 | - p1.add_friend(p3) | |
50 | - p1.add_friend(p4) | |
51 | - | |
52 | - block = FriendsBlock.new | |
53 | - block.expects(:owner).returns(p1) | |
54 | - | |
55 | - assert_equal 3, block.profile_count | |
56 | - end | |
57 | - | |
58 | - should 'count number of public and private people' do | |
59 | - owner = create_user('testuser1').person | |
60 | - private_p = fast_create(Person, {:public_profile => false}) | |
61 | - public_p = fast_create(Person, {:public_profile => true}) | |
62 | - | |
63 | - owner.add_friend(private_p) | |
64 | - owner.add_friend(public_p) | |
65 | - | |
66 | - block = FriendsBlock.new | |
67 | - block.expects(:owner).returns(owner) | |
68 | - | |
69 | - assert_equal 2, block.profile_count | |
70 | - end | |
71 | - | |
72 | - should 'not count number of invisible people' do | |
73 | - owner = create_user('testuser1').person | |
74 | - private_p = fast_create(Person, {:visible => false}) | |
75 | - public_p = fast_create(Person, {:visible => true}) | |
76 | - | |
77 | - owner.add_friend(private_p) | |
78 | - owner.add_friend(public_p) | |
79 | - | |
80 | - block = FriendsBlock.new | |
81 | - block.expects(:owner).returns(owner) | |
82 | - | |
83 | - assert_equal 1, block.profile_count | |
84 | - end | |
85 | - | |
86 | -end |
test/unit/members_block_test.rb
... | ... | @@ -1,42 +0,0 @@ |
1 | -require File.dirname(__FILE__) + '/../test_helper' | |
2 | - | |
3 | -class MembersBlockTest < ActiveSupport::TestCase | |
4 | - | |
5 | - should 'inherit from ProfileListBlock' do | |
6 | - assert_kind_of ProfileListBlock, MembersBlock.new | |
7 | - end | |
8 | - | |
9 | - should 'describe itself' do | |
10 | - assert_not_equal ProfileListBlock.description, MembersBlock.description | |
11 | - end | |
12 | - | |
13 | - should 'provide a default title' do | |
14 | - assert_not_equal ProfileListBlock.new.default_title, MembersBlock.new.default_title | |
15 | - end | |
16 | - | |
17 | - should 'link to "all members" page' do | |
18 | - profile = create_user('mytestuser').person | |
19 | - block = MembersBlock.new | |
20 | - block.box = profile.boxes.first | |
21 | - block.save! | |
22 | - | |
23 | - expects(:_).with('View all').returns('View all') | |
24 | - expects(:link_to).with('View all' , :profile => 'mytestuser', :controller => 'profile', :action => 'members').returns('link-to-members') | |
25 | - | |
26 | - assert_equal 'link-to-members', instance_eval(&block.footer) | |
27 | - end | |
28 | - | |
29 | - should 'pick random members' do | |
30 | - block = MembersBlock.new | |
31 | - | |
32 | - owner = mock | |
33 | - block.expects(:owner).returns(owner) | |
34 | - | |
35 | - list = [] | |
36 | - owner.expects(:members).returns(list) | |
37 | - | |
38 | - assert_same list, block.profiles | |
39 | - end | |
40 | - | |
41 | -end | |
42 | - |
test/unit/people_block_test.rb
... | ... | @@ -1,50 +0,0 @@ |
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 default title' do | |
10 | - assert_not_equal ProfileListBlock.new.default_title, PeopleBlock.new.default_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 'list people' do | |
22 | - owner = fast_create(Environment) | |
23 | - block = PeopleBlock.new | |
24 | - block.expects(:owner).returns(owner).at_least_once | |
25 | - person1 = fast_create(Person, :environment_id => owner.id) | |
26 | - person2 = fast_create(Person, :environment_id => owner.id) | |
27 | - | |
28 | - expects(:profile_image_link).with(person1, :minor).returns(person1.name) | |
29 | - expects(:profile_image_link).with(person2, :minor).returns(person2.name) | |
30 | - expects(:block_title).with(anything).returns('') | |
31 | - | |
32 | - content = instance_eval(&block.content) | |
33 | - | |
34 | - assert_match(/#{person1.name}/, content) | |
35 | - assert_match(/#{person2.name}/, content) | |
36 | - end | |
37 | - | |
38 | - should 'link to browse people' do | |
39 | - block = PeopleBlock.new | |
40 | - block.stubs(:owner).returns(Environment.default) | |
41 | - | |
42 | - expects(:_).with('View all').returns('View all people') | |
43 | - expects(:link_to).with('View all people', :controller => 'search', :action => 'people') | |
44 | - instance_eval(&block.footer) | |
45 | - end | |
46 | - | |
47 | - protected | |
48 | - include NoosferoTestHelper | |
49 | - | |
50 | -end |