From b2b9747653e45f4f1396f30cfc409b2d6d980186 Mon Sep 17 00:00:00 2001 From: AntonioTerceiro Date: Sat, 9 Feb 2008 20:06:45 +0000 Subject: [PATCH] ActionItem43: adding a block for listing members --- app/models/members_block.rb | 34 ++++++++++++++++++++++++++++++++++ test/unit/members_block_test.rb | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 0 deletions(-) create mode 100644 app/models/members_block.rb create mode 100644 test/unit/members_block_test.rb diff --git a/app/models/members_block.rb b/app/models/members_block.rb new file mode 100644 index 0000000..8544493 --- /dev/null +++ b/app/models/members_block.rb @@ -0,0 +1,34 @@ +class MembersBlock < ProfileListBlock + + def self.description + _('A block that displays members.') + end + + def title + _('Members') + end + + def footer + profile = self.owner + lambda do + link_to _('All members'), :profile => profile.identifier, :controller => 'profile', :action => 'members' + end + end + + class Finder + + def initialize(members) + @members = members + end + + # FIXME optimize this !!! + def find(options) + Profile.find(:all, options.merge(:conditions => { :id => @members.map(&:id) })) + end + end + + def profile_finder + @profile_finder ||= Finder.new(owner.members) + end + +end diff --git a/test/unit/members_block_test.rb b/test/unit/members_block_test.rb new file mode 100644 index 0000000..4ecbc73 --- /dev/null +++ b/test/unit/members_block_test.rb @@ -0,0 +1,34 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class MembersBlockTest < Test::Unit::TestCase + + should 'inherit from ProfileListBlock' do + assert_kind_of ProfileListBlock, MembersBlock.new + end + + should 'describe itself' do + assert_not_equal ProfileListBlock.description, MembersBlock.description + end + + should 'link to "all members" page' do + profile = create_user('mytestuser').person + block = MembersBlock.new + block.box = profile.boxes.first + block.save! + + expects(:_).with('All members').returns('All members') + expects(:link_to).with('All members' , :profile => 'mytestuser', :controller => 'profile', :action => 'members').returns('link-to-members') + + assert_equal 'link-to-members', instance_eval(&block.footer) + end + + should 'pick only members' do + profile = create_user('mytestuser').person + block = MembersBlock.new + block.box = profile.boxes.first + block.save! + + assert_equal profile.members, block.profiles + end + +end -- libgit2 0.21.2