From 41af608f407597509b041efc3caef6604a26e386 Mon Sep 17 00:00:00 2001 From: Luciano Date: Mon, 19 Jan 2015 17:19:36 -0200 Subject: [PATCH] Add privacy of block only to members in organizations and only to friends in person. --- app/models/block.rb | 3 ++- test/unit/block_test.rb | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/app/models/block.rb b/app/models/block.rb index a3ba731..56d94c8 100644 --- a/app/models/block.rb +++ b/app/models/block.rb @@ -64,7 +64,7 @@ class Block < ActiveRecord::Base end def display_to_user?(user) - display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') + display_user == 'all' || (user.nil? && display_user == 'not_logged') || (user && display_user == 'logged') || (user && display_user == 'followers' && user.follows?(owner)) end def display_always(context) @@ -224,6 +224,7 @@ class Block < ActiveRecord::Base 'all' => _('All users'), 'logged' => _('Logged'), 'not_logged' => _('Not logged'), + 'followers' => owner.organization? ? _('Members') : _('Friends') } end diff --git a/test/unit/block_test.rb b/test/unit/block_test.rb index 58dfa45..2150484 100644 --- a/test/unit/block_test.rb +++ b/test/unit/block_test.rb @@ -284,4 +284,50 @@ class BlockTest < ActiveSupport::TestCase assert_equal block.cache_key('en'), block.cache_key('en', person) end + should 'display block to members of community for display_user = members' do + community = fast_create(Community) + user = create_user('testinguser') + community.add_member(user.person) + + box = fast_create(Box, :owner_id => community.id, :owner_type => 'Community') + block = create(Block, :box_id => box.id) + block.display_user = 'followers' + block.save! + assert block.display_to_user?(user.person) + end + + should 'do not display block to non members of community for display_user = members' do + community = fast_create(Community) + user = create_user('testinguser') + + box = fast_create(Box, :owner_id => community.id, :owner_type => 'Community') + block = create(Block, :box_id => box.id) + block.display_user = 'followers' + block.save! + assert !block.display_to_user?(user.person) + end + + should 'display block to friends of person for display_user = friends' do + person = create_user('person_one').person + person_friend = create_user('person_friend').person + + person.add_friend(person_friend) + + box = fast_create(Box, :owner_id => person.id, :owner_type => 'Person') + block = create(Block, :box_id => box.id) + block.display_user = 'followers' + block.save! + assert block.display_to_user?(person_friend) + end + + should 'do not display block to non friends of person for display_user = friends' do + person = create_user('person_one').person + person_friend = create_user('person_friend').person + + box = fast_create(Box, :owner_id => person.id, :owner_type => 'Person') + block = create(Block, :box_id => box.id) + block.display_user = 'followers' + block.save! + assert !block.display_to_user?(person_friend) + end end -- libgit2 0.21.2