wovnrb 3.10.2 → 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -239,6 +239,7 @@ HTML
239
239
  'rack.request.form_input' => '',
240
240
  'rack.request.form_hash' => {},
241
241
  'rack.request.form_pairs' => [],
242
+ 'rack.request.cookie_hash' => {},
242
243
  'HTTP_HOST' => 'test.com',
243
244
  'REQUEST_URI' => '/en/ignored',
244
245
  'PATH_INFO' => '/en/ignored'
@@ -247,6 +248,117 @@ HTML
247
248
  assert_call_affects_env(settings, env, mock_api: false, affected: false)
248
249
  end
249
250
 
251
+ def test_call__with_use_cookie_lang_true__cookie_lang_is_target_lang__should_redirect
252
+ settings = {
253
+ 'project_token' => '123456',
254
+ 'url_pattern' => 'path',
255
+ 'default_lang' => 'ja',
256
+ 'supported_langs' => %w[ja en],
257
+ 'use_cookie_lang' => true
258
+ }
259
+ env = Wovnrb.get_env(
260
+ {
261
+ 'url' => 'http://test.com/foo',
262
+ 'HTTP_COOKIE' => 'wovn_selected_lang=en'
263
+ }
264
+ )
265
+
266
+ sut = Wovnrb::Interceptor.new(get_app, settings)
267
+ status, res_headers, _body = sut.call(env)
268
+
269
+ assert_equal(302, status)
270
+ assert_equal('http://test.com/en/foo', res_headers['location'])
271
+ end
272
+
273
+ def test_call__with_use_cookie_lang_true__cookie_lang_is_default_lang__should_not_redirect
274
+ settings = {
275
+ 'project_token' => '123456',
276
+ 'url_pattern' => 'path',
277
+ 'default_lang' => 'ja',
278
+ 'supported_langs' => %w[ja en],
279
+ 'use_cookie_lang' => true
280
+ }
281
+ env = Wovnrb.get_env(
282
+ {
283
+ 'url' => 'http://test.com/foo',
284
+ 'HTTP_COOKIE' => 'wovn_selected_lang=ja'
285
+ }
286
+ )
287
+
288
+ sut = Wovnrb::Interceptor.new(get_app, settings)
289
+ status, res_headers, _body = sut.call(env)
290
+
291
+ assert_equal(200, status)
292
+ assert_nil(res_headers['location'])
293
+ end
294
+
295
+ def test_call__with_use_cookie_lang_true__cookie_lang_is_different_target_lang__should_not_redirect
296
+ settings = {
297
+ 'project_token' => '123456',
298
+ 'url_pattern' => 'path',
299
+ 'default_lang' => 'ja',
300
+ 'supported_langs' => %w[ja en fr],
301
+ 'use_cookie_lang' => true
302
+ }
303
+ env = Wovnrb.get_env(
304
+ {
305
+ 'url' => 'http://test.com/en/foo',
306
+ 'HTTP_COOKIE' => 'wovn_selected_lang=fr'
307
+ }
308
+ )
309
+
310
+ mock_translation_api_response('', '')
311
+ sut = Wovnrb::Interceptor.new(get_app, settings)
312
+ status, res_headers, _body = sut.call(env)
313
+
314
+ assert_equal(200, status)
315
+ assert_nil(res_headers['location'])
316
+ end
317
+
318
+ def test_call__with_use_cookie_lang_true__cookie_lang_is_empty__should_not_redirect
319
+ settings = {
320
+ 'project_token' => '123456',
321
+ 'url_pattern' => 'path',
322
+ 'default_lang' => 'ja',
323
+ 'supported_langs' => %w[ja en],
324
+ 'use_cookie_lang' => true
325
+ }
326
+ env = Wovnrb.get_env(
327
+ {
328
+ 'url' => 'http://test.com/foo',
329
+ 'HTTP_COOKIE' => ''
330
+ }
331
+ )
332
+
333
+ sut = Wovnrb::Interceptor.new(get_app, settings)
334
+ status, res_headers, _body = sut.call(env)
335
+
336
+ assert_equal(200, status)
337
+ assert_nil(res_headers['location'])
338
+ end
339
+
340
+ def test_call__with_use_cookie_lang_false__should_not_redirect
341
+ settings = {
342
+ 'project_token' => '123456',
343
+ 'url_pattern' => 'path',
344
+ 'default_lang' => 'ja',
345
+ 'supported_langs' => %w[ja en],
346
+ 'use_cookie_lang' => false
347
+ }
348
+ env = Wovnrb.get_env(
349
+ {
350
+ 'url' => 'http://test.com/foo',
351
+ 'HTTP_COOKIE' => 'wovn_selected_lang=en'
352
+ }
353
+ )
354
+
355
+ sut = Wovnrb::Interceptor.new(get_app, settings)
356
+ status, res_headers, _body = sut.call(env)
357
+
358
+ assert_equal(200, status)
359
+ assert_nil(res_headers['location'])
360
+ end
361
+
250
362
  private
251
363
 
252
364
  def assert_call_affects_env(settings, env, mock_api:, affected:)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wovnrb
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.2
4
+ version: 3.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wovn Technologies, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-24 00:00:00.000000000 Z
11
+ date: 2023-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport