@@ -7,48 +7,147 @@ import { parseAcceptLanguage } from '../../l10n/parseAcceptLanguage';
7
7
8
8
describe ( 'l10n/parseAcceptLanguage:' , ( ) => {
9
9
it ( 'returns default' , ( ) => {
10
- expect ( parseAcceptLanguage ( 'en' ) ) . to . deep . equal ( [ 'en' ] ) ;
11
- } ) ;
12
-
13
- it ( 'handles unknown' , ( ) => {
14
- expect ( parseAcceptLanguage ( 'xyz' ) ) . to . deep . equal ( [ 'en' ] ) ;
15
- } ) ;
16
-
17
- it ( 'parses single' , ( ) => {
18
- expect ( parseAcceptLanguage ( 'en' ) ) . to . deep . equal ( [ 'en' ] ) ;
10
+ expect ( parseAcceptLanguage ( 'en' ) ) . to . deep . equal ( [
11
+ 'en' ,
12
+ 'en-US' ,
13
+ 'en-GB' ,
14
+ 'en-CA' ,
15
+ ] ) ;
19
16
} ) ;
20
17
21
- it ( 'always contains default language (en) ' , ( ) => {
22
- expect ( parseAcceptLanguage ( 'es ' ) ) . to . deep . equal ( [ 'es' , 'en' ] ) ;
18
+ it ( 'handles empty case ' , ( ) => {
19
+ expect ( parseAcceptLanguage ( '' ) ) . to . deep . equal ( [ 'en' ] ) ;
23
20
} ) ;
24
21
25
- it ( 'handles region ' , ( ) => {
26
- expect ( parseAcceptLanguage ( 'es-MX ' ) ) . to . deep . equal ( [ 'es-MX' , 'en' ] ) ;
22
+ it ( 'handles unknown ' , ( ) => {
23
+ expect ( parseAcceptLanguage ( 'xyz ' ) ) . to . deep . equal ( [ 'en' ] ) ;
27
24
} ) ;
28
25
29
- it ( 'handles region with incorrect case' , ( ) => {
30
- expect ( parseAcceptLanguage ( 'es-mx, ru' ) ) . to . deep . equal ( [
31
- 'es-MX' ,
32
- 'ru' ,
33
- 'en' ,
34
- ] ) ;
26
+ it ( 'parses single and always contains default language (en)' , ( ) => {
27
+ expect ( parseAcceptLanguage ( 'it' ) ) . to . deep . equal ( [ 'it' , 'en' ] ) ;
35
28
} ) ;
36
29
37
- it ( 'parses several' , ( ) => {
30
+ it ( 'parses several with expected output ' , ( ) => {
38
31
expect ( parseAcceptLanguage ( 'en, de, es, ru' ) ) . to . deep . equal ( [
39
32
'en' ,
33
+ 'en-US' ,
34
+ 'en-GB' ,
35
+ 'en-CA' ,
40
36
'de' ,
41
37
'es' ,
38
+ 'es-ES' ,
39
+ 'es-AR' ,
40
+ 'es-CL' ,
41
+ 'es-MX' ,
42
42
'ru' ,
43
43
] ) ;
44
44
} ) ;
45
45
46
- it ( 'it applies qvalue' , ( ) => {
47
- expect ( parseAcceptLanguage ( 'en, de;q=0.1, es, ru;q=0.3' ) ) . to . deep . equal ( [
48
- 'en' ,
49
- 'es' ,
50
- 'ru' ,
51
- 'de' ,
52
- ] ) ;
46
+ describe ( 'qvalue' , ( ) => {
47
+ it ( 'applies correctly with an implicit and explicit value' , ( ) => {
48
+ expect ( parseAcceptLanguage ( 'ru;q=0.3, it' ) ) . to . deep . equal ( [
49
+ 'it' ,
50
+ 'ru' ,
51
+ 'en' ,
52
+ ] ) ;
53
+ } ) ;
54
+
55
+ it ( 'applies correctly with multiple explicit and implicit values' , ( ) => {
56
+ expect (
57
+ parseAcceptLanguage ( 'de, it;q=0.8, en;q=0.5, es;q=1.0' )
58
+ ) . to . deep . equal ( [
59
+ 'de' ,
60
+ 'es' ,
61
+ 'es-ES' ,
62
+ 'es-AR' ,
63
+ 'es-CL' ,
64
+ 'es-MX' ,
65
+ 'it' ,
66
+ 'en' ,
67
+ 'en-US' ,
68
+ 'en-GB' ,
69
+ 'en-CA' ,
70
+ ] ) ;
71
+ } ) ;
72
+
73
+ it ( 'applies correctly with dialects' , ( ) => {
74
+ expect ( parseAcceptLanguage ( 'de-DE, en-US;q=0.7, en;q=0.3' ) ) . to . deep . equal (
75
+ [ 'de' , 'en-US' , 'en' , 'en-GB' , 'en-CA' ]
76
+ ) ;
77
+ } ) ;
78
+ } ) ;
79
+
80
+ describe ( 'dialect (region) options' , ( ) => {
81
+ it ( 'handles en-*' , ( ) => {
82
+ expect ( parseAcceptLanguage ( 'en-CA' ) ) . to . deep . equal ( [
83
+ 'en-CA' ,
84
+ 'en' ,
85
+ 'en-US' ,
86
+ 'en-GB' ,
87
+ ] ) ;
88
+ } ) ;
89
+
90
+ it ( 'includes all options and always contains default language (en)' , ( ) => {
91
+ expect ( parseAcceptLanguage ( 'es' ) ) . to . deep . equal ( [
92
+ 'es' ,
93
+ 'es-ES' ,
94
+ 'es-AR' ,
95
+ 'es-CL' ,
96
+ 'es-MX' ,
97
+ 'en' ,
98
+ ] ) ;
99
+ } ) ;
100
+
101
+ it ( 'handles region with incorrect case' , ( ) => {
102
+ expect ( parseAcceptLanguage ( 'es-mx, ru' ) ) . to . deep . equal ( [
103
+ 'es-MX' ,
104
+ 'es' ,
105
+ 'es-ES' ,
106
+ 'es-AR' ,
107
+ 'es-CL' ,
108
+ 'ru' ,
109
+ 'en' ,
110
+ ] ) ;
111
+ } ) ;
112
+
113
+ it ( 'gives "en" higher priority than second locale when first locale is en-*' , ( ) => {
114
+ expect ( parseAcceptLanguage ( 'en-US, de' ) ) . to . deep . equal ( [
115
+ 'en-US' ,
116
+ 'en' ,
117
+ 'en-GB' ,
118
+ 'en-CA' ,
119
+ 'de' ,
120
+ ] ) ;
121
+ } ) ;
122
+
123
+ it ( 'handles alias to en-GB' , ( ) => {
124
+ expect ( parseAcceptLanguage ( 'en-NZ' ) ) . to . deep . equal ( [
125
+ 'en-GB' ,
126
+ 'en' ,
127
+ 'en-US' ,
128
+ 'en-CA' ,
129
+ ] ) ;
130
+ } ) ;
131
+
132
+ it ( 'handles multiple languages with en-GB alias' , ( ) => {
133
+ expect ( parseAcceptLanguage ( 'en-NZ, en-GB, en-MY' ) ) . to . deep . equal ( [
134
+ 'en-GB' ,
135
+ 'en' ,
136
+ 'en-US' ,
137
+ 'en-CA' ,
138
+ ] ) ;
139
+ } ) ;
140
+
141
+ it ( 'falls back to root language if dialect is missing' , ( ) => {
142
+ expect ( parseAcceptLanguage ( 'fr-FR' ) ) . to . deep . equal ( [ 'fr' , 'en' ] ) ;
143
+ } ) ;
144
+
145
+ it ( 'handles Chinese dialects properly' , ( ) => {
146
+ expect ( parseAcceptLanguage ( 'zh-CN, zh-TW, zh-HK, zh' ) ) . to . deep . equal ( [
147
+ 'zh-CN' ,
148
+ 'zh-TW' ,
149
+ 'en' ,
150
+ ] ) ;
151
+ } ) ;
53
152
} ) ;
54
153
} ) ;
0 commit comments