From 6c414d8562010a99c57518cdc64fd033a5213089 Mon Sep 17 00:00:00 2001 From: Maxwell Salzberg Date: Fri, 16 Sep 2011 11:23:39 -0700 Subject: [PATCH] add tests for object_should_be_processed_as_public? and delegegated public to the parent of relayable objects --- app/models/comment.rb | 1 + lib/diaspora/relayable.rb | 2 ++ lib/postzord/dispatcher.rb | 2 -- spec/lib/postzord/dispatcher_spec.rb | 18 ++++++++++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/models/comment.rb b/app/models/comment.rb index 38f6f3862..77eade82c 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -76,4 +76,5 @@ class Comment < ActiveRecord::Base def parent= parent self.post = parent end + end diff --git a/lib/diaspora/relayable.rb b/lib/diaspora/relayable.rb index 41457b251..b887c76fd 100644 --- a/lib/diaspora/relayable.rb +++ b/lib/diaspora/relayable.rb @@ -15,6 +15,8 @@ module Diaspora validates_associated :parent validates :author, :presence => true + + delegate :public?, :to => :parent end end diff --git a/lib/postzord/dispatcher.rb b/lib/postzord/dispatcher.rb index f51c1acf9..21d89c361 100644 --- a/lib/postzord/dispatcher.rb +++ b/lib/postzord/dispatcher.rb @@ -27,8 +27,6 @@ class Postzord::Dispatcher def self.object_should_be_processed_as_public?(object) if object.respond_to?(:public?) && object.public? true - elsif object.respond_to?(:relayable?) && object.parent.respond_to?(:public?) && object.parent.public? - true else false end diff --git a/spec/lib/postzord/dispatcher_spec.rb b/spec/lib/postzord/dispatcher_spec.rb index 575f171bc..bae4ff20d 100644 --- a/spec/lib/postzord/dispatcher_spec.rb +++ b/spec/lib/postzord/dispatcher_spec.rb @@ -256,6 +256,24 @@ describe Postzord::Dispatcher do end end + describe '#object_should_be_processed_as_public?' do + it 'returns true with a comment on a public post' do + f = Factory(:comment, :post => Factory(:status_message, :public => true)) + Postzord::Dispatcher.object_should_be_processed_as_public?(f).should be_true + end + + it 'returns false with a comment on a private post' do + f = Factory(:comment, :post => Factory(:status_message, :public => false)) + Postzord::Dispatcher.object_should_be_processed_as_public?(f).should be_false + end + + it 'returns true with a like on a comment on a private post' do + f = Factory(:like, :target => Factory(:comment, :post => Factory(:status_message, :public => true))) + Postzord::Dispatcher.object_should_be_processed_as_public?(f).should be_true + end + end + + describe '#deliver_to_services' do before do alice.aspects.create(:name => "whatever")