From 3b0222d887e2ef1bd508e505b2327f8c2acac1d3 Mon Sep 17 00:00:00 2001 From: Seb Bacon Date: Tue, 17 Jan 2012 11:30:56 +0000 Subject: Fail silently if third party services are broken or unavailable. Fixes #354. --- spec/controllers/general_controller_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 40a676d61..ad5578800 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -1,4 +1,14 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require 'fakeweb' + +describe GeneralController, "when trying to show the blog" do + it "should fail silently if the blog is returning an error" do + FakeWeb.register_uri(:get, %r|.*|, :body => "Error", :status => ["500", "Error"]) + get :blog + response.status.should == "200 OK" + assigns[:blog_items].count.should == 0 + end +end describe GeneralController, "when searching" do integrate_views -- cgit v1.2.3 From 4fbeed80c636528fd42e280a83a88ce394993548 Mon Sep 17 00:00:00 2001 From: Seb Bacon Date: Tue, 17 Jan 2012 12:54:29 +0000 Subject: Test fix that belongs to e82ca928a140400f8446dba85014a0c9059e789b --- spec/controllers/general_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index ad5578800..e1539fa68 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -78,7 +78,7 @@ describe GeneralController, "when searching" do it "should redirect from search query URL to pretty URL" do post :search_redirect, :query => "mouse" # query hidden in POST parameters - response.should redirect_to(:action => 'search', :combined => "mouse", :view => "requests") # URL /search/:query/all + response.should redirect_to(:action => 'search', :combined => "mouse", :view => "all") # URL /search/:query/all end describe "when using different locale settings" do -- cgit v1.2.3 From 34dad8557132bc730db8e502684f12e4c247c24d Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Fri, 20 Jan 2012 12:10:15 +0000 Subject: Be sure to restore RoutingFilters There were some order-dependent test failures that turned out to be caused by the fact that the RoutingFilters were cleared and not subsequently restored, by some tests. --- spec/controllers/general_controller_spec.rb | 2 -- 1 file changed, 2 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index e1539fa68..7dd0a70d3 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -84,13 +84,11 @@ describe GeneralController, "when searching" do describe "when using different locale settings" do home_link_regex = /href=".*\/en"/ it "should generate URLs with a locale prepended when there's more than one locale set" do - ActionController::Routing::Routes.add_filters('conditionallyprependlocale') get :frontpage response.should have_text(home_link_regex) end it "should generate URLs without a locale prepended when there's only one locale set" do - ActionController::Routing::Routes.add_filters('conditionallyprependlocale') old_available_locales = FastGettext.default_available_locales available_locales = ['en'] FastGettext.default_available_locales = available_locales -- cgit v1.2.3 From c92892e3a4fdc3e339996fc4db737634b15894c8 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Fri, 20 Jan 2012 12:12:16 +0000 Subject: Make sure the FakeWeb registry is kept clean MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To be fair this change does not seem to make any tests pass that didn’t pass before, but (based on my limited understanding) it seems like a good idea. It also conforms to how FakeWeb is used in application_controller_spec.rb. --- spec/controllers/general_controller_spec.rb | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 7dd0a70d3..a5bb3ba5a 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -2,6 +2,13 @@ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') require 'fakeweb' describe GeneralController, "when trying to show the blog" do + before (:each) do + FakeWeb.clean_registry + end + after (:each) do + FakeWeb.clean_registry + end + it "should fail silently if the blog is returning an error" do FakeWeb.register_uri(:get, %r|.*|, :body => "Error", :status => ["500", "Error"]) get :blog -- cgit v1.2.3 From 61eb3a3ac95efbeae60b977cc1a3b4f9d3cc752d Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Fri, 20 Jan 2012 15:17:27 +0000 Subject: Remove assumption MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit I feel uncomfortable about the assumption that FastGettext.default_available_locales is always equal to I18n.available_locales. Even if that’s true now, it might not always be -- and if a bug causes them to become erroneously different, the previous code would have masked that. --- spec/controllers/general_controller_spec.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index a5bb3ba5a..bcd577484 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -96,16 +96,15 @@ describe GeneralController, "when searching" do end it "should generate URLs without a locale prepended when there's only one locale set" do - old_available_locales = FastGettext.default_available_locales - available_locales = ['en'] - FastGettext.default_available_locales = available_locales - I18n.available_locales = available_locales + old_fgt_available_locales = FastGettext.default_available_locales + old_i18n_available_locales = I18n.available_locales + FastGettext.default_available_locales = I18n.available_locales = ['en'] get :frontpage response.should_not have_text(home_link_regex) - FastGettext.default_available_locales = old_available_locales - I18n.available_locales = old_available_locales + FastGettext.default_available_locales = old_fgt_available_locales + I18n.available_locales = old_i18n_available_locales end end -- cgit v1.2.3 From 323a2941b253f4ddd1c21f152da26b96bde77662 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Tue, 24 Jan 2012 13:30:14 +0000 Subject: Fix a bunch of order-dependent failures This fixes a lot of the failures in #361. --- spec/controllers/general_controller_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index bcd577484..37e3aa1e3 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -111,7 +111,7 @@ describe GeneralController, "when searching" do describe 'when using xapian search' do # rebuild xapian index after fixtures loaded - before(:all) do + before(:each) do rebuild_xapian_index end -- cgit v1.2.3 From 7ce3c4e7547fe16849ba9287dfd94d96183eafac Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Tue, 24 Jan 2012 18:16:47 +0000 Subject: Improve test isolation Towards #361. Fixes: spec/models/xapian_spec.rb spec/controllers/general_controller_spec.rb --- spec/controllers/general_controller_spec.rb | 2 ++ 1 file changed, 2 insertions(+) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 37e3aa1e3..2750a33f3 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -35,6 +35,7 @@ describe GeneralController, "when searching" do before(:each) do load_raw_emails_data(raw_emails) + rebuild_xapian_index end it "should render the front page successfully" do @@ -112,6 +113,7 @@ describe GeneralController, "when searching" do # rebuild xapian index after fixtures loaded before(:each) do + load_raw_emails_data(raw_emails) rebuild_xapian_index end -- cgit v1.2.3 From ac8946b96ad80762d84d1ef67bfc395ad3700124 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Fri, 27 Jan 2012 00:25:50 +0000 Subject: Add a trivial test for the list of recent requests --- spec/controllers/general_controller_spec.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 2750a33f3..c4fd46c14 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -108,6 +108,18 @@ describe GeneralController, "when searching" do I18n.available_locales = old_i18n_available_locales end end + + describe 'when constructing the list of recent requests' do + before(:each) do + load_raw_emails_data(raw_emails) + rebuild_xapian_index + end + + it 'should list the successful request first' do + get :frontpage + assigns[:request_events].first.info_request.should == info_requests(:boring_request) + end + end describe 'when using xapian search' do -- cgit v1.2.3 From 347a24ccfe0881b494044778cae64809d3e001c0 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Fri, 27 Jan 2012 09:36:02 +0000 Subject: More test data and a new test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is a test for what I thought issue #370 might be. However this test is passing, so it isn’t that. --- spec/controllers/general_controller_spec.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index c4fd46c14..b067707de 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -115,9 +115,11 @@ describe GeneralController, "when searching" do rebuild_xapian_index end - it 'should list the successful request first' do + it 'should list the newest successful request first' do + # Make sure the newest is listed first even if an older one has an even newer comment: + # https://github.com/sebbacon/alaveteli/issues/370 get :frontpage - assigns[:request_events].first.info_request.should == info_requests(:boring_request) + assigns[:request_events].first.info_request.should == info_requests(:another_boring_request) end end -- cgit v1.2.3 From 5aa2bd13042110e73212f83564c35b3a1d672bbb Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Sun, 29 Jan 2012 16:26:50 +0000 Subject: Load all raw emails for testing Previously there was just one raw email, and the test code relied on that fact. Generalise it to handle multiple raw emails. This change causes a number of tests to fail, because it exposes failures that should have happened when the second raw email was added but were masked by the fact that the text of this second raw email was never loaded. These failures will be fixed in the next commit. --- spec/controllers/general_controller_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index b067707de..8eb445146 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -34,7 +34,7 @@ describe GeneralController, "when searching" do ] before(:each) do - load_raw_emails_data(raw_emails) + load_raw_emails_data rebuild_xapian_index end @@ -111,7 +111,7 @@ describe GeneralController, "when searching" do describe 'when constructing the list of recent requests' do before(:each) do - load_raw_emails_data(raw_emails) + load_raw_emails_data rebuild_xapian_index end @@ -127,7 +127,7 @@ describe GeneralController, "when searching" do # rebuild xapian index after fixtures loaded before(:each) do - load_raw_emails_data(raw_emails) + load_raw_emails_data rebuild_xapian_index end -- cgit v1.2.3 From 9613b118b148dff0d54100d7f931189b59f3535c Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Sun, 29 Jan 2012 16:35:06 +0000 Subject: More test data, and fix tests Add some more test data, and fix the tests to accommodate both this new test data and the fact that raw emails are now correctly loaded into the test environment. --- spec/controllers/general_controller_spec.rb | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 8eb445146..00239c14e 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -158,21 +158,31 @@ describe GeneralController, "when searching" do it "should filter results based on end of URL being 'all'" do get :search, :combined => ['"bob"', "all"] - assigns[:xapian_requests].results.size.should == 2 - assigns[:xapian_users].results.size.should == 1 - assigns[:xapian_bodies].results.size.should == 0 + assigns[:xapian_requests].results.map{|x| x[:model]}.should =~ [ + info_request_events(:useless_outgoing_message_event), + info_request_events(:silly_outgoing_message_event), + info_request_events(:useful_incoming_message_event), + info_request_events(:another_useful_incoming_message_event), + ] + assigns[:xapian_users].results.map{|x| x[:model]}.should == [users(:bob_smith_user)] + assigns[:xapian_bodies].results.should == [] end it "should filter results based on end of URL being 'users'" do get :search, :combined => ['"bob"', "users"] assigns[:xapian_requests].should == nil - assigns[:xapian_users].results.size.should == 1 + assigns[:xapian_users].results.map{|x| x[:model]}.should == [users(:bob_smith_user)] assigns[:xapian_bodies].should == nil end it "should filter results based on end of URL being 'requests'" do get :search, :combined => ['"bob"', "requests"] - assigns[:xapian_requests].results.size.should == 2 + assigns[:xapian_requests].results.map{|x|x[:model]}.should =~ [ + info_request_events(:useless_outgoing_message_event), + info_request_events(:silly_outgoing_message_event), + info_request_events(:useful_incoming_message_event), + info_request_events(:another_useful_incoming_message_event), + ] assigns[:xapian_users].should == nil assigns[:xapian_bodies].should == nil end @@ -181,7 +191,7 @@ describe GeneralController, "when searching" do get :search, :combined => ['"quango"', "bodies"] assigns[:xapian_requests].should == nil assigns[:xapian_users].should == nil - assigns[:xapian_bodies].results.size.should == 1 + assigns[:xapian_bodies].results.map{|x|x[:model]}.should == [public_bodies(:geraldine_public_body)] end it "should show help when searching for nothing" do -- cgit v1.2.3 From 2f82314374a644952019ac34b59dff10f6470004 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Sun, 29 Jan 2012 19:07:42 +0000 Subject: Change order of requests on front page Put the most-recently-answered first, rather than the most-recently-reclassified. This is inspired by issue #370, though it does not fix all the issues raised in that ticket. (The wording is still outright misleading in some cases.) --- spec/controllers/general_controller_spec.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 00239c14e..6c9f8b88d 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -116,8 +116,13 @@ describe GeneralController, "when searching" do end it 'should list the newest successful request first' do - # Make sure the newest is listed first even if an older one has an even newer comment: + # Make sure the newest is listed first even if an older one + # has a newer comment or was reclassified more recently: # https://github.com/sebbacon/alaveteli/issues/370 + # + # This is a deliberate behaviour change, in that the + # previous behaviour (showing more-recently-reclassified + # requests first) was intentional. get :frontpage assigns[:request_events].first.info_request.should == info_requests(:another_boring_request) end -- cgit v1.2.3 From f6cd280bbfafa2151ededb8280407686fb73e8a7 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Sun, 29 Jan 2012 19:12:01 +0000 Subject: Test duplicate requests are coalesced Test that duplicate requests are coalesced on the front page. --- spec/controllers/general_controller_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 6c9f8b88d..9a5421a78 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -126,6 +126,11 @@ describe GeneralController, "when searching" do get :frontpage assigns[:request_events].first.info_request.should == info_requests(:another_boring_request) end + + it 'should coalesce duplicate requests' do + get :frontpage + assigns[:request_events].map(&:info_request).select{|x|x.url_title =~ /^spam/}.length.should == 1 + end end describe 'when using xapian search' do -- cgit v1.2.3 From ac4587afff81177a0bf86fc0064b81538811cb29 Mon Sep 17 00:00:00 2001 From: Robin Houston Date: Tue, 31 Jan 2012 16:29:04 +0000 Subject: Load all fixtures for all tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The ad hoc specification of fixtures has been an ongoing source of bugs in the tests. The straw that broke the camel’s back is that 7c6eb09 requires the fixtures to be loaded in order (i.e. children before their parents), and it would have been a painful process to reorder all the dozens of different fixture lists, but the test system ought to be more reliable this way. --- spec/controllers/general_controller_spec.rb | 13 ------------- 1 file changed, 13 deletions(-) (limited to 'spec/controllers/general_controller_spec.rb') diff --git a/spec/controllers/general_controller_spec.rb b/spec/controllers/general_controller_spec.rb index 9a5421a78..7fc019c64 100644 --- a/spec/controllers/general_controller_spec.rb +++ b/spec/controllers/general_controller_spec.rb @@ -19,19 +19,6 @@ end describe GeneralController, "when searching" do integrate_views - fixtures [ - :public_bodies, - :public_body_translations, - :public_body_versions, - :users, - :info_requests, - :raw_emails, - :incoming_messages, - :outgoing_messages, - :comments, - :info_request_events, - :track_things, - ] before(:each) do load_raw_emails_data -- cgit v1.2.3