|
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