diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-11-21 15:16:07 +0000 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-11-25 16:31:19 +0000 |
commit | 9750dd3f14ea2be22b3e4a8c8c15d90625a9e5fb (patch) | |
tree | 3475f8697f66d8a52c0976f57db1d56b9fb05a2e /spec/models/info_request_spec.rb | |
parent | 040793f9e29810d35bb27759b5946d594daa83fa (diff) |
Move getting recent requests into a helper method.
Diffstat (limited to 'spec/models/info_request_spec.rb')
-rw-r--r-- | spec/models/info_request_spec.rb | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/spec/models/info_request_spec.rb b/spec/models/info_request_spec.rb index ed7c55bb8..dcc94e967 100644 --- a/spec/models/info_request_spec.rb +++ b/spec/models/info_request_spec.rb @@ -1140,4 +1140,41 @@ describe InfoRequest do end + describe InfoRequest, 'when constructing the list of recent requests' do + + before(:each) do + get_fixtures_xapian_index + end + + describe 'when there are fewer than five successful requests' do + + it 'should list the most recently sent and successful requests by the creation date of the + request event' do + # Make sure the newest response is listed first even if a request + # with an older response has a newer comment or was reclassified more recently: + # https://github.com/mysociety/alaveteli/issues/370 + # + # This is a deliberate behaviour change, in that the + # previous behaviour (showing more-recently-reclassified + # requests first) was intentional. + request_events, request_events_all_successful = InfoRequest.recent_requests + previous = nil + request_events.each do |event| + if previous + previous.created_at.should be >= event.created_at + end + ['sent', 'response'].include?(event.event_type).should be_true + if event.event_type == 'response' + ['successful', 'partially_successful'].include?(event.calculated_state).should be_true + end + previous = event + end + end + end + + it 'should coalesce duplicate requests' do + request_events, request_events_all_successful = InfoRequest.recent_requests + request_events.map(&:info_request).select{|x|x.url_title =~ /^spam/}.length.should == 1 + end + end end |