diff options
author | Louise Crow <louise.crow@gmail.com> | 2013-07-18 15:33:05 +0100 |
---|---|---|
committer | Louise Crow <louise.crow@gmail.com> | 2013-07-18 17:43:11 +0100 |
commit | 9fe48c5b9db1c0ba6c1a59f0d092c88e5cae1aa0 (patch) | |
tree | 6a244ebe1422fa9fe627a7b4eebf2055adc6016e /spec/integration/localisation_spec.rb | |
parent | 6d67f4df65f8b56c9d54d71d449d46b1c6c92be2 (diff) |
Switch routing-filter (which takes locale out of the params and puts it in the URL) off by default in model, controller, and helper tests. This means we can supply the locale as a param. Turn it on specifically for a couple of controller tests that test routing, and change other url localization tests into integration tests.
Diffstat (limited to 'spec/integration/localisation_spec.rb')
-rw-r--r-- | spec/integration/localisation_spec.rb | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/spec/integration/localisation_spec.rb b/spec/integration/localisation_spec.rb new file mode 100644 index 000000000..140f9f785 --- /dev/null +++ b/spec/integration/localisation_spec.rb @@ -0,0 +1,96 @@ +require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') + +describe "when generating urls" do + + before do + @home_link_regex = /href=".*\/en\// + end + + it "should generate URLs that include the locale when using one that includes an underscore" do + AlaveteliConfiguration.stub!(:available_locales).and_return('en_GB') + get('/en_GB') + response.body.should match /href="\/en_GB\// + end + + it "should fall back to the language if the territory is unknown" do + AlaveteliConfiguration.stub!(:available_locales).and_return('es en') + AlaveteliConfiguration.stub!(:default_locale).and_return('es') + get('/', {}, {'HTTP_ACCEPT_LANGUAGE' => 'en_US'}) + response.body.should match /href="\/en\// + response.body.should_not match /href="\/en_US\// + end + + it "should generate URLs without a locale prepended when there's only one locale set" do + AlaveteliConfiguration.stub!(:available_locales).and_return('en') + get('/') + response.should_not contain @home_link_regex + end + + it 'should redirect requests for a public body in a locale to the canonical name in that locale' do + get('/es/body/dfh') + response.should redirect_to "/es/body/edfh" + end + + it 'should remember a filter view when redirecting a public body request to the canonical name' do + get('/es/body/tgq/successful') + response.should redirect_to "/es/body/etgq/successful" + end + + describe 'when there is more than one locale' do + + before do + AlaveteliConfiguration.stub!(:available_locales).and_return('en es') + AlaveteliConfiguration.stub!(:default_locale).and_return('en') + end + + it "should generate URLs with a locale prepended when there's more than one locale set" do + get('/') + response.body.should match @home_link_regex + end + + describe 'when using the default locale' do + + before do + @default_lang_home_link = /href=".*\/en\// + @other_lang_home_link = /href=".*\/es\// + @old_include_default_locale_in_urls = AlaveteliConfiguration::include_default_locale_in_urls + end + + def set_default_locale_in_urls(value) + AlaveteliConfiguration.stub!(:include_default_locale_in_urls).and_return(value) + load Rails.root.join("config/initializers/fast_gettext.rb") + end + + describe 'when the config value INCLUDE_DEFAULT_LOCALE_IN_URLS is false' do + + before do + set_default_locale_in_urls(false) + end + + it 'should generate URLs without a locale prepended' do + get '/' + response.should_not contain @default_lang_home_link + end + + it 'should render the front page in the default language when no locale param + is present and the session locale is not the default' do + get('/', {:locale => 'es'}) + response.should_not contain @other_lang_home_link + end + end + + it 'should generate URLs with a locale prepended when the config value + INCLUDE_DEFAULT_LOCALE_IN_URLS is true' do + set_default_locale_in_urls(true) + get '/' + response.body.should match /#{@default_lang_home_link}/ + end + + after do + set_default_locale_in_urls(@old_include_default_locale_in_urls) + end + + end + end + +end |