@@ -23,9 +23,9 @@ public void Initialize()
23
23
{
24
24
_settings = new Mock < ISimplifyWebSettings > ( ) ;
25
25
_context = new Mock < HttpContext > ( ) ;
26
+ _responseCookies = new Mock < IResponseCookies > ( ) ;
26
27
27
28
_settings . SetupGet ( x => x . DefaultLanguage ) . Returns ( "en" ) ;
28
- _responseCookies = new Mock < IResponseCookies > ( ) ;
29
29
30
30
_context . SetupGet ( x => x . Request . Cookies ) . Returns ( Mock . Of < IRequestCookieCollection > ( ) ) ;
31
31
_context . SetupGet ( x => x . Response . Cookies ) . Returns ( _responseCookies . Object ) ;
@@ -34,23 +34,29 @@ public void Initialize()
34
34
}
35
35
36
36
[ Test ]
37
- public void Constructor_NoRequestCookieLanguage_DefaultLanguageSet ( )
37
+ public void Constructor_NoRequestCookieLanguageAndCookieLanguageIsEnabled_DefaultLanguageSet ( )
38
38
{
39
+ // Arrange
40
+ _settings . SetupGet ( x => x . AcceptCookieLanguage ) . Returns ( true ) ;
41
+
39
42
// Assert
40
43
Assert . AreEqual ( "en" , _languageManager . Language ) ;
41
44
}
42
45
43
46
[ Test ]
44
- public void Constructor_HaveRequestCookie_CurrentLanguageSet ( )
47
+ public void Constructor_HaveRequestCookieLanguageAndCookieLanguageIsEnabled_CurrentLanguageSet ( )
45
48
{
46
49
// Assign
47
50
48
51
var cookieCollection = new Mock < IRequestCookieCollection > ( ) ;
52
+
49
53
cookieCollection . SetupGet ( x => x [ It . Is < string > ( s => s == LanguageManager . CookieLanguageFieldName ) ] ) . Returns ( "ru" ) ;
50
- _context . SetupGet ( x => x . Request . Cookies ) . Returns ( cookieCollection . Object ) ;
51
54
55
+ _settings . SetupGet ( x => x . AcceptCookieLanguage ) . Returns ( true ) ;
52
56
_settings . SetupGet ( x => x . DefaultLanguage ) . Returns ( "en" ) ;
53
57
58
+ _context . SetupGet ( x => x . Request . Cookies ) . Returns ( cookieCollection . Object ) ;
59
+
54
60
// Act
55
61
_languageManager = new LanguageManager ( _settings . Object , _context . Object ) ;
56
62
@@ -70,9 +76,10 @@ public void SetCookieLanguage_CorrectLanguage_CorrectCookieCreated()
70
76
{
71
77
// Assign
72
78
73
- _settings . SetupGet ( x => x . DefaultLanguage ) . Returns ( "en" ) ;
74
79
_languageManager = new LanguageManager ( _settings . Object , _context . Object ) ;
75
80
81
+ _settings . SetupGet ( x => x . DefaultLanguage ) . Returns ( "en" ) ;
82
+
76
83
_responseCookies . Setup ( x => x . Append ( It . IsAny < string > ( ) , It . IsAny < string > ( ) ) ) . Callback < string , string > ( ( key , value ) =>
77
84
{
78
85
Assert . AreEqual ( "Set-Cookie" , key ) ;
@@ -84,13 +91,15 @@ public void SetCookieLanguage_CorrectLanguage_CorrectCookieCreated()
84
91
}
85
92
86
93
[ Test ]
87
- public void Constructor_HaveBrowserLanguageAndSettingIsEnabledCase1_LanguageSetFromHeader ( )
94
+ public void Constructor_HaveHeaderLanguageAndSettingIsEnabledCase1_LanguageSetFromHeader ( )
88
95
{
89
96
// Assign
90
97
91
- _settings . SetupGet ( x => x . AcceptBrowserLanguage ) . Returns ( true ) ;
92
98
var header = new HeaderDictionary ( new Dictionary < string , StringValues > ( ) ) ;
99
+
93
100
header . Append ( "Accept-Language" , "ru-RU" ) ;
101
+
102
+ _settings . SetupGet ( x => x . AcceptHeaderLanguage ) . Returns ( true ) ;
94
103
_context . SetupGet ( x => x . Request . Headers ) . Returns ( header ) ;
95
104
96
105
// Act
@@ -101,13 +110,15 @@ public void Constructor_HaveBrowserLanguageAndSettingIsEnabledCase1_LanguageSetF
101
110
}
102
111
103
112
[ Test ]
104
- public void Constructor_HaveBrowserLanguageAndSettingIsEnabledCase2_LanguageSetFromHeader ( )
113
+ public void Constructor_HaveHeaderLanguageAndSettingIsEnabledCase2_LanguageSetFromHeader ( )
105
114
{
106
115
// Assign
107
116
108
- _settings . SetupGet ( x => x . AcceptBrowserLanguage ) . Returns ( true ) ;
109
117
var header = new HeaderDictionary ( new Dictionary < string , StringValues > ( ) ) ;
118
+
110
119
header . Append ( "Accept-Language" , "ru-RU;q=0.5" ) ;
120
+
121
+ _settings . SetupGet ( x => x . AcceptHeaderLanguage ) . Returns ( true ) ;
111
122
_context . SetupGet ( x => x . Request . Headers ) . Returns ( header ) ;
112
123
113
124
// Act
@@ -118,33 +129,62 @@ public void Constructor_HaveBrowserLanguageAndSettingIsEnabledCase2_LanguageSetF
118
129
}
119
130
120
131
[ Test ]
121
- public void Constructor_HaveBrowserLanguageAndCookieLanguage_LanguageSetFromCookie ( )
132
+ public void Constructor_HaveHeaderLanguageAndCookieLanguageAndCookieLanguageIsEnabled_LanguageSetFromCookie ( )
122
133
{
123
134
// Assign
124
135
125
136
var cookieCollection = new Mock < IRequestCookieCollection > ( ) ;
137
+ var header = new HeaderDictionary ( new Dictionary < string , StringValues > ( ) ) ;
138
+
139
+ header . Append ( "Accept-Language" , "ru-RU" ) ;
140
+
126
141
cookieCollection . SetupGet ( x => x [ It . Is < string > ( s => s == LanguageManager . CookieLanguageFieldName ) ] ) . Returns ( "fr" ) ;
142
+
143
+ _settings . SetupGet ( x => x . AcceptCookieLanguage ) . Returns ( true ) ;
144
+ _settings . SetupGet ( x => x . AcceptHeaderLanguage ) . Returns ( true ) ;
145
+
127
146
_context . SetupGet ( x => x . Request . Cookies ) . Returns ( cookieCollection . Object ) ;
147
+ _context . SetupGet ( x => x . Request . Headers ) . Returns ( header ) ;
148
+
149
+ // Act
150
+ _languageManager = new LanguageManager ( _settings . Object , _context . Object ) ;
128
151
129
- _settings . SetupGet ( x => x . AcceptBrowserLanguage ) . Returns ( true ) ;
152
+ // Assert
153
+ Assert . AreEqual ( "fr" , _languageManager . Language ) ;
154
+ }
155
+
156
+ [ Test ]
157
+ public void Constructor_HaveHeaderLanguageAndCookieLanguageAndCookieLanguageIsDisabled_LanguageSetFromHeader ( )
158
+ {
159
+ // Assign
160
+
161
+ var cookieCollection = new Mock < IRequestCookieCollection > ( ) ;
130
162
var header = new HeaderDictionary ( new Dictionary < string , StringValues > ( ) ) ;
163
+
131
164
header . Append ( "Accept-Language" , "ru-RU" ) ;
165
+
166
+ cookieCollection . SetupGet ( x => x [ It . Is < string > ( s => s == LanguageManager . CookieLanguageFieldName ) ] ) . Returns ( "fr" ) ;
167
+
168
+ _settings . SetupGet ( x => x . AcceptHeaderLanguage ) . Returns ( true ) ;
169
+
170
+ _context . SetupGet ( x => x . Request . Cookies ) . Returns ( cookieCollection . Object ) ;
132
171
_context . SetupGet ( x => x . Request . Headers ) . Returns ( header ) ;
133
172
134
173
// Act
135
174
_languageManager = new LanguageManager ( _settings . Object , _context . Object ) ;
136
175
137
176
// Assert
138
- Assert . AreEqual ( "fr " , _languageManager . Language ) ;
177
+ Assert . AreEqual ( "ru " , _languageManager . Language ) ;
139
178
}
140
179
141
180
[ Test ]
142
- public void Constructor_NoBrowserLanguage_DefaultLanguageSet ( )
181
+ public void Constructor_NoHeaderLanguage_DefaultLanguageSet ( )
143
182
{
144
183
// Assign
145
184
146
- _settings . SetupGet ( x => x . AcceptBrowserLanguage ) . Returns ( true ) ;
147
185
var header = new HeaderDictionary ( new Dictionary < string , StringValues > ( ) ) ;
186
+
187
+ _settings . SetupGet ( x => x . AcceptHeaderLanguage ) . Returns ( true ) ;
148
188
_context . SetupGet ( x => x . Request . Headers ) . Returns ( header ) ;
149
189
150
190
// Act
@@ -153,4 +193,17 @@ public void Constructor_NoBrowserLanguage_DefaultLanguageSet()
153
193
// Assert
154
194
Assert . AreEqual ( "en" , _languageManager . Language ) ;
155
195
}
196
+
197
+ [ Test ]
198
+ public void Constructor_BadDefaultLanguage_InvariantLanguageSet ( )
199
+ {
200
+ // Arrange
201
+ _settings . SetupGet ( x => x . DefaultLanguage ) . Returns ( "badlanguage" ) ;
202
+
203
+ // Act
204
+ _languageManager = new LanguageManager ( _settings . Object , _context . Object ) ;
205
+
206
+ // Assert
207
+ Assert . AreEqual ( "iv" , _languageManager . Language ) ;
208
+ }
156
209
}
0 commit comments