aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/info_request_spec.rb
diff options
context:
space:
mode:
authorLouise Crow <louise.crow@gmail.com>2013-08-27 16:13:02 +0100
committerLouise Crow <louise.crow@gmail.com>2013-09-16 14:03:23 +0100
commitbc743d9fc8c8f740f37b91cbe374c6ae20b10619 (patch)
treecc6608daf4ad6bc8d2e0c17c2436d6976694e2c5 /spec/models/info_request_spec.rb
parent7cf64ac6665c8349c8b31120d6e22b800b99c3ab (diff)
Add public criteria for message event access methods
get_last_response_event and get_last_outgoing_event are used in various places to determine which events to link to, use in queries etc. Restrict them to refer to the last publicly visible event of the relevant type, and rename them to make that clear.
Diffstat (limited to 'spec/models/info_request_spec.rb')
-rw-r--r--spec/models/info_request_spec.rb63
1 files changed, 61 insertions, 2 deletions
diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb
index 2846fa6dc..a6f877b20 100644
--- a/spec/models/info_request_spec.rb
+++ b/spec/models/info_request_spec.rb
@@ -451,8 +451,14 @@ describe InfoRequest do
before do
Time.stub!(:now).and_return(Time.utc(2007, 11, 9, 23, 59))
- @mock_comment_event = mock_model(InfoRequestEvent, :created_at => Time.now - 23.days, :event_type => 'comment', :response? => false)
- @mock_response_event = mock_model(InfoRequestEvent, :created_at => Time.now - 22.days, :event_type => 'response', :response? => true)
+ @mock_comment_event = mock_model(InfoRequestEvent, :created_at => Time.now - 23.days,
+ :event_type => 'comment',
+ :response? => false)
+ mock_incoming_message = mock_model(IncomingMessage, :all_can_view? => true)
+ @mock_response_event = mock_model(InfoRequestEvent, :created_at => Time.now - 22.days,
+ :event_type => 'response',
+ :response? => true,
+ :incoming_message => mock_incoming_message)
@info_request = InfoRequest.new(:prominence => 'normal',
:awaiting_description => true,
:info_request_events => [@mock_response_event, @mock_comment_event])
@@ -589,6 +595,59 @@ describe InfoRequest do
end
end
+ describe 'when asked for the last public response event' do
+
+ before do
+ @info_request = FactoryGirl.create(:info_request_with_incoming)
+ @incoming_message = @info_request.incoming_messages.first
+ end
+
+ it 'should not return an event with a hidden prominence message' do
+ @incoming_message.prominence = 'hidden'
+ @incoming_message.save!
+ @info_request.get_last_public_response_event.should == nil
+ end
+
+ it 'should not return an event with a requester_only prominence message' do
+ @incoming_message.prominence = 'requester_only'
+ @incoming_message.save!
+ @info_request.get_last_public_response_event.should == nil
+ end
+
+ it 'should return an event with a normal prominence message' do
+ @incoming_message.prominence = 'normal'
+ @incoming_message.save!
+ @info_request.get_last_public_response_event.should == @incoming_message.response_event
+ end
+ end
+
+ describe 'when asked for the last public outgoing event' do
+
+ before do
+ @info_request = FactoryGirl.create(:info_request)
+ @outgoing_message = @info_request.outgoing_messages.first
+ end
+
+ it 'should not return an event with a hidden prominence message' do
+ @outgoing_message.prominence = 'hidden'
+ @outgoing_message.save!
+ @info_request.get_last_public_outgoing_event.should == nil
+ end
+
+ it 'should not return an event with a requester_only prominence message' do
+ @outgoing_message.prominence = 'requester_only'
+ @outgoing_message.save!
+ @info_request.get_last_public_outgoing_event.should == nil
+ end
+
+ it 'should return an event with a normal prominence message' do
+ @outgoing_message.prominence = 'normal'
+ @outgoing_message.save!
+ @info_request.get_last_public_outgoing_event.should == @outgoing_message.info_request_events.first
+ end
+
+ end
+
describe 'when generating json for the api' do
before do