SHOW:
|
|
- or go back to the newest paste.
1 | require 'rails_helper' | |
2 | ||
3 | describe ApplicationController do | |
4 | controller do | |
5 | def index | |
6 | render text: 'nothing' | |
7 | end | |
8 | end | |
9 | ||
10 | context '#geocode_locale' do | |
11 | let(:user_ip) { 'ip' } | |
12 | - | let(:country) { 'country' } |
12 | + | let(:country) { double country: 'country' } |
13 | let(:locale) { 'locale' } | |
14 | ||
15 | before do | |
16 | controller.stub(:ip).and_return user_ip | |
17 | end | |
18 | ||
19 | context 'locale set in session' do | |
20 | before do | |
21 | session[:locale] = locale | |
22 | end | |
23 | ||
24 | it 'should not change locale' do | |
25 | expect(Geocoder).not to_receive(:search) | |
26 | expect do | |
27 | get :index | |
28 | end.not_to change { session[:locale] } | |
29 | end | |
30 | end | |
31 | ||
32 | context 'locale is not in session yet' do | |
33 | it 'should get country and change session' do | |
34 | expect(Geocoder).to receive(:search).with(user_ip). | |
35 | and_return([country]) | |
36 | expect(I18nData).to receive(:country_code).with(country). | |
37 | and_return(locale) | |
38 | ||
39 | expect do | |
40 | get :index | |
41 | end.to change { session[:locale] }.to locale.to_sym | |
42 | end | |
43 | end | |
44 | end | |
45 | end |