1
1
import vueUnitHelper from 'vue-unit-helper' ;
2
2
import LangPicker from '!!vue-loader?inject!@/locale/cd-lang-picker' ;
3
+ import { expect } from 'chai' ;
3
4
4
5
describe ( 'Lang Picker' , ( ) => {
5
6
let CookieMock ;
6
7
let LocaleServiceMock ;
7
8
let MomentMock ;
8
9
let LangPickerWithMocks ;
10
+ let StoreMock ;
9
11
10
12
beforeEach ( ( ) => {
11
13
CookieMock = {
@@ -23,6 +25,10 @@ describe('Lang Picker', () => {
23
25
'./service' : LocaleServiceMock ,
24
26
moment : MomentMock ,
25
27
} ) ;
28
+
29
+ StoreMock = {
30
+ dispatch : sinon . stub ( ) ,
31
+ } ;
26
32
} ) ;
27
33
28
34
afterEach ( ( ) => {
@@ -74,6 +80,7 @@ describe('Lang Picker', () => {
74
80
} ;
75
81
LocaleServiceMock . getStrings . withArgs ( 'es_ES' ) . returns ( Promise . resolve ( { body : stringsMock } ) ) ;
76
82
sinon . stub ( vm , 'setMomentLocale' ) ;
83
+ vm . $store = StoreMock ;
77
84
78
85
// ACT
79
86
vm . $watchers . lang ( 'es_ES' ) ;
@@ -89,6 +96,7 @@ describe('Lang Picker', () => {
89
96
foo : 'foo' ,
90
97
} ) ;
91
98
expect ( vm . $i18n . locale ) . to . equal ( 'es_ES' ) ;
99
+ expect ( StoreMock . dispatch . calledOnce ) . to . eq ( true ) ;
92
100
done ( ) ;
93
101
} ) ;
94
102
} ) ;
@@ -99,6 +107,7 @@ describe('Lang Picker', () => {
99
107
it ( 'should recover languages from the API' , async ( ) => {
100
108
// ARRANGE
101
109
const vm = vueUnitHelper ( LangPickerWithMocks ) ;
110
+ vm . $store = StoreMock ;
102
111
CookieMock . get . withArgs ( 'NG_TRANSLATE_LANG_KEY' ) . returns ( '"es_ES"' ) ;
103
112
vm . getAvailableLanguages = sinon . stub ( ) . resolves ( { body : [ 'a' ] } ) ;
104
113
// ACT
@@ -115,16 +124,19 @@ describe('Lang Picker', () => {
115
124
CookieMock . get . withArgs ( 'NG_TRANSLATE_LANG_KEY' ) . returns ( '"es_ES"' ) ;
116
125
vm . getAvailableLanguages = sinon . stub ( ) . resolves ( { body : [ { code : 'es_ES' } ] } ) ;
117
126
127
+ vm . $store = StoreMock ;
118
128
// ACT
119
129
await vm . $lifecycleMethods . created ( ) ;
120
130
121
131
// ASSERT
122
132
expect ( vm . lang ) . to . equal ( 'es_ES' ) ;
133
+ expect ( StoreMock . dispatch . calledOnce ) . to . eq ( true ) ;
123
134
} ) ;
124
135
125
136
it ( 'should set lang to the browser locale if no cookie, and locale matches an available one' , async ( ) => {
126
137
// ARRANGE
127
138
const vm = vueUnitHelper ( LangPickerWithMocks ) ;
139
+ vm . $store = StoreMock ;
128
140
CookieMock . get . withArgs ( 'NG_TRANSLATE_LANG_KEY' ) . returns ( undefined ) ;
129
141
vm . getAvailableLanguages = sinon . stub ( ) . resolves ( { body : [ { code : 'it_IT' } ] } ) ;
130
142
Object . defineProperty ( window . navigator , 'language' , { value : 'it-IT' , configurable : true } ) ;
@@ -134,11 +146,13 @@ describe('Lang Picker', () => {
134
146
135
147
// ASSERT
136
148
expect ( vm . lang ) . to . equal ( 'it_IT' ) ;
149
+ expect ( StoreMock . dispatch . calledOnce ) . to . eq ( true ) ;
137
150
} ) ;
138
151
139
152
it ( 'should set lang to en_US if no cookie and browser locale doesnt match available lang' , async ( ) => {
140
153
// ARRANGE
141
154
const vm = vueUnitHelper ( LangPickerWithMocks ) ;
155
+ vm . $store = StoreMock ;
142
156
vm . getAvailableLanguages = sinon . stub ( ) . resolves ( { body : [ { code : 'en_US' } ] } ) ;
143
157
CookieMock . get . withArgs ( 'NG_TRANSLATE_LANG_KEY' ) . returns ( undefined ) ;
144
158
Object . defineProperty ( window . navigator , 'language' , { value : 'zh-CN' , configurable : true } ) ;
@@ -148,6 +162,7 @@ describe('Lang Picker', () => {
148
162
149
163
// ASSERT
150
164
expect ( vm . lang ) . to . equal ( 'en_US' ) ;
165
+ expect ( StoreMock . dispatch . calledOnce ) . to . eq ( true ) ;
151
166
} ) ;
152
167
} ) ;
153
168
} ) ;
0 commit comments