|
3 | 3 | namespace Orkhanahmadov\LaravelAcceptLanguageMiddleware\Tests;
|
4 | 4 |
|
5 | 5 | use Illuminate\Http\Request;
|
| 6 | +use Illuminate\Http\Response; |
6 | 7 | use Illuminate\Support\Facades\App;
|
7 | 8 | use Orkhanahmadov\LaravelAcceptLanguageMiddleware\Middleware;
|
8 | 9 |
|
9 | 10 | class MiddlewareTest extends TestCase
|
10 | 11 | {
|
| 12 | + /** |
| 13 | + * @var Response |
| 14 | + */ |
| 15 | + private $response; |
| 16 | + /** |
| 17 | + * @var Middleware |
| 18 | + */ |
| 19 | + private $middleware; |
| 20 | + |
11 | 21 | public function test_with_single_locale()
|
12 | 22 | {
|
13 |
| - $middleware = $this->app->make(Middleware::class); |
14 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 23 | + $request = Request::create('/', 'GET', [], [], [], [ |
15 | 24 | 'HTTP_ACCEPT_LANGUAGE' => 'es',
|
16 | 25 | ]);
|
17 | 26 | $this->assertEquals('en', App::getLocale());
|
18 | 27 |
|
19 |
| - $middleware->handle($request, function () { |
| 28 | + $this->middleware->handle($request, function () { |
| 29 | + return $this->response; |
20 | 30 | });
|
21 | 31 |
|
22 | 32 | $this->assertEquals('es', App::getLocale());
|
23 | 33 | }
|
24 | 34 |
|
25 | 35 | public function test_with_single_with_country()
|
26 | 36 | {
|
27 |
| - $middleware = $this->app->make(Middleware::class); |
28 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 37 | + $request = Request::create('/', 'GET', [], [], [], [ |
29 | 38 | 'HTTP_ACCEPT_LANGUAGE' => 'es-US',
|
30 | 39 | ]);
|
31 | 40 | $this->assertEquals('en', App::getLocale());
|
32 | 41 |
|
33 |
| - $middleware->handle($request, function () { |
| 42 | + $this->middleware->handle($request, function () { |
| 43 | + return $this->response; |
34 | 44 | });
|
35 | 45 |
|
36 | 46 | $this->assertEquals('es-US', App::getLocale());
|
37 | 47 | }
|
38 | 48 |
|
39 | 49 | public function test_with_single_with_country_and_quality_value()
|
40 | 50 | {
|
41 |
| - $middleware = $this->app->make(Middleware::class); |
42 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 51 | + $request = Request::create('/', 'GET', [], [], [], [ |
43 | 52 | 'HTTP_ACCEPT_LANGUAGE' => 'es-US;q=0.5',
|
44 | 53 | ]);
|
45 | 54 | $this->assertEquals('en', App::getLocale());
|
46 | 55 |
|
47 |
| - $middleware->handle($request, function () { |
| 56 | + $this->middleware->handle($request, function () { |
| 57 | + return $this->response; |
48 | 58 | });
|
49 | 59 |
|
50 | 60 | $this->assertEquals('es-US', App::getLocale());
|
51 | 61 | }
|
52 | 62 |
|
53 | 63 | public function test_with_multiple_locales()
|
54 | 64 | {
|
55 |
| - $middleware = $this->app->make(Middleware::class); |
56 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 65 | + $request = Request::create('/', 'GET', [], [], [], [ |
57 | 66 | 'HTTP_ACCEPT_LANGUAGE' => 'es, de',
|
58 | 67 | ]);
|
59 | 68 | $this->assertEquals('en', App::getLocale());
|
60 | 69 |
|
61 |
| - $middleware->handle($request, function () { |
| 70 | + $this->middleware->handle($request, function () { |
| 71 | + return $this->response; |
62 | 72 | });
|
63 | 73 |
|
64 | 74 | $this->assertEquals('es', App::getLocale());
|
65 | 75 | }
|
66 | 76 |
|
67 | 77 | public function test_with_multiple_locales_with_countries()
|
68 | 78 | {
|
69 |
| - $middleware = $this->app->make(Middleware::class); |
70 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 79 | + $request = Request::create('/', 'GET', [], [], [], [ |
71 | 80 | 'HTTP_ACCEPT_LANGUAGE' => 'es-US, de-DE',
|
72 | 81 | ]);
|
73 | 82 | $this->assertEquals('en', App::getLocale());
|
74 | 83 |
|
75 |
| - $middleware->handle($request, function () { |
| 84 | + $this->middleware->handle($request, function () { |
| 85 | + return $this->response; |
76 | 86 | });
|
77 | 87 |
|
78 | 88 | $this->assertEquals('es-US', App::getLocale());
|
79 | 89 | }
|
80 | 90 |
|
81 | 91 | public function test_with_multiple_locales_with_countries_and_quality_value()
|
82 | 92 | {
|
83 |
| - $middleware = $this->app->make(Middleware::class); |
84 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 93 | + $request = Request::create('/', 'GET', [], [], [], [ |
85 | 94 | 'HTTP_ACCEPT_LANGUAGE' => 'es-AZ;q=0.7, de-DE;q=0.8',
|
86 | 95 | ]);
|
87 | 96 | $this->assertEquals('en', App::getLocale());
|
88 | 97 |
|
89 |
| - $middleware->handle($request, function () { |
| 98 | + $this->middleware->handle($request, function () { |
| 99 | + return $this->response; |
90 | 100 | });
|
91 | 101 |
|
92 | 102 | $this->assertEquals('de-DE', App::getLocale());
|
93 | 103 | }
|
94 | 104 |
|
95 | 105 | public function test_with_mixed_locale_values()
|
96 | 106 | {
|
97 |
| - $middleware = $this->app->make(Middleware::class); |
98 |
| - $request = Request::create('whatever', 'GET', [], [], [], [ |
| 107 | + $request = Request::create('/', 'GET', [], [], [], [ |
99 | 108 | 'HTTP_ACCEPT_LANGUAGE' => 'fr-CH, de;q=0.7, fr;q=0.9, en;q=0.8, *;q=0.5',
|
100 | 109 | ]);
|
101 | 110 | $this->assertEquals('en', App::getLocale());
|
102 | 111 |
|
103 |
| - $middleware->handle($request, function () { |
| 112 | + $this->middleware->handle($request, function () { |
| 113 | + return $this->response; |
104 | 114 | });
|
105 | 115 |
|
106 | 116 | $this->assertEquals('fr-CH', App::getLocale());
|
107 | 117 | }
|
| 118 | + |
| 119 | + public function test_does_not_set_app_locale_when_request_header_is_not_available() |
| 120 | + { |
| 121 | + $request = new Request(); |
| 122 | + App::setLocale('es'); |
| 123 | + |
| 124 | + $this->middleware->handle($request, function () { |
| 125 | + return $this->response; |
| 126 | + }); |
| 127 | + |
| 128 | + $this->assertEquals('es', App::getLocale()); |
| 129 | + } |
| 130 | + |
| 131 | + protected function setUp(): void |
| 132 | + { |
| 133 | + parent::setUp(); |
| 134 | + |
| 135 | + $this->response = new Response(); |
| 136 | + $this->middleware = new Middleware(); |
| 137 | + } |
108 | 138 | }
|
0 commit comments