From 610eac0af6f8faf426b46f14ecbe9a312b428bb0 Mon Sep 17 00:00:00 2001 From: Louise Crow Date: Mon, 17 Dec 2012 10:32:36 +0000 Subject: Rewrite specs that were in spec/controller/application_controller as full-stack controller specs in the relevant controllers. It turns out that having spec blocks that reference the ApplicationController class directly i.e. "describe ApplicationController" can have unpredictable effects. actionpack's action_controller/test_case.rb rewrites rescue_action_without_handler on whatever it is included in, and if this is done on a controller class, and then directly on action controller, it can result in an infinite loop of recursive calls. This turns out to be the problem that was causing some tests in error_spec.rb to fail in Travis under Ruby 1.9. --- spec/controllers/services_controller_spec.rb | 46 ++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'spec/controllers/services_controller_spec.rb') diff --git a/spec/controllers/services_controller_spec.rb b/spec/controllers/services_controller_spec.rb index a701ae247..a9950d520 100644 --- a/spec/controllers/services_controller_spec.rb +++ b/spec/controllers/services_controller_spec.rb @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require 'fakeweb' -describe ServicesController, "when using web services" do +describe ServicesController, "when returning a message for people in other countries" do integrate_views @@ -40,4 +41,45 @@ describe ServicesController, "when using web services" do FastGettext.set_locale(@old_locale) end -end \ No newline at end of file + describe 'when the external country from IP service is in different states' do + + before (:each) do + FakeWeb.clean_registry + end + + after (:each) do + FakeWeb.clean_registry + end + + it "should return the 'another country' message if the service responds OK" do + config = MySociety::Config.load_default() + config['ISO_COUNTRY_CODE'] = "DE" + Configuration.stub!(:gaze_url).and_return('http://denmark.com') + FakeWeb.register_uri(:get, %r|denmark.com|, :body => "DK") + get :other_country_message + response.should be_success + response.body.should == 'Hello! We have an important message for visitors outside Deutschland X' + end + it "should default to no message if the country_from_ip domain doesn't exist" do + Configuration.stub!(:gaze_url).and_return('http://12123sdf14qsd.com') + get :other_country_message + response.should be_success + response.body.should == '' + end + it "should default to no message if the country_from_ip service doesn't exist" do + Configuration.stub!(:gaze_url).and_return('http://www.google.com') + get :other_country_message + response.should be_success + response.body.should == '' + end + it "should default to no message if the country_from_ip service returns an error" do + FakeWeb.register_uri(:get, %r|500.com|, :body => "Error", :status => ["500", "Error"]) + Configuration.stub!(:gaze_url).and_return('http://500.com') + get :other_country_message + response.should be_success + response.body.should == '' + end + + end + +end -- cgit v1.2.3