From 710e83fb22c71682e7725bcfc3f4b87e8bbfed9d Mon Sep 17 00:00:00 2001 From: kikito Date: Wed, 19 Aug 2015 21:40:17 +0200 Subject: [PATCH] Adds locale switcher js code + feature tests --- .../javascripts/locale_switcher.js.coffee | 19 ++++++++++++ spec/features/locale_switcher_spec.rb | 29 +++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 app/assets/javascripts/locale_switcher.js.coffee create mode 100644 spec/features/locale_switcher_spec.rb diff --git a/app/assets/javascripts/locale_switcher.js.coffee b/app/assets/javascripts/locale_switcher.js.coffee new file mode 100644 index 000000000..2bd88b8ef --- /dev/null +++ b/app/assets/javascripts/locale_switcher.js.coffee @@ -0,0 +1,19 @@ +App.LocaleSwitcher = + + href_with_params: (query_params) -> + loc = window.location + + loc.protocol + "//" + loc.hostname + + (if loc.port then ':' + loc.port else '') + + loc.pathname + + loc.hash + + '?' + $.param(query_params) + + initialize: -> + $('.js-locale-switcher').on 'change', -> + query_params = window.getQueryParameters() + query_params['locale'] = $(this).val() + window.location.assign(App.LocaleSwitcher.href_with_params(query_params)) + + + diff --git a/spec/features/locale_switcher_spec.rb b/spec/features/locale_switcher_spec.rb new file mode 100644 index 000000000..7f60e2c24 --- /dev/null +++ b/spec/features/locale_switcher_spec.rb @@ -0,0 +1,29 @@ +require 'rails_helper' + +feature 'Locale Switcher' do + + scenario 'Available locales appear in the locale switcher' do + visit '/' + + within('.js-locale-switcher') do + expect(page).to have_content 'Español' + expect(page).to have_content 'English' + end + end + + scenario 'The current locale is selected' do + visit '/' + expect(page).to have_select('locale-switcher', selected: 'English') + end + + scenario 'Changing the locale', :js do + visit '/' + expect(page).to have_content('Site language') + + select('Español', from: 'locale-switcher') + expect(page).to have_content('Idioma de la página') + expect(page).to_not have_content('Site language') + expect(page).to have_select('locale-switcher', selected: 'Español') + end + +end