Commit d4f19d98fea7bd12493bbbd34e64ffca27aebf8f
Committed by
Victor Costa
1 parent
0b8db772
Exists in
master
and in
22 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 |