|
2 | 2 |
|
3 | 3 | use Alexwaha\Localize\LocalizeUrlGenerator;
|
4 | 4 | use Illuminate\Config\Repository;
|
| 5 | +use Illuminate\Events\Dispatcher; |
5 | 6 | use Illuminate\Http\Request;
|
6 | 7 | use Illuminate\Routing\Route;
|
7 | 8 | use Illuminate\Routing\RouteCollection;
|
| 9 | +use Illuminate\Routing\Router; |
8 | 10 | use Illuminate\Routing\UrlGenerator;
|
9 | 11 |
|
10 |
| -it('can generate a localized URL for non-paginated route', function () { |
| 12 | +it('can generate a localized URL', function () { |
11 | 13 | $routes = new RouteCollection;
|
12 | 14 |
|
13 | 15 | $request = Request::create('/');
|
| 16 | + $events = new Dispatcher; |
| 17 | + $router = new Router($events); |
14 | 18 | $urlGenerator = new UrlGenerator($routes, $request);
|
15 | 19 |
|
16 | 20 | $config = new Repository([
|
|
22 | 26 | $route = new Route(['GET'], '/en/home', ['as' => 'en.home']);
|
23 | 27 | $routes->add($route);
|
24 | 28 |
|
25 |
| - $localizer = new LocalizeUrlGenerator($urlGenerator, $config); |
| 29 | + $localizer = new LocalizeUrlGenerator($router, $config, $urlGenerator); |
26 | 30 |
|
27 | 31 | $url = $localizer->generate('home');
|
28 | 32 |
|
29 | 33 | expect($url)->toBe('http://localhost/en/home');
|
30 | 34 | });
|
31 | 35 |
|
32 |
| -it('can generate a localized paginated URL when page > 1', function () { |
33 |
| - $routes = new RouteCollection; |
| 36 | +it('can generate a localized paginated URL with route names using index/paginated', function () { |
| 37 | + $events = new Dispatcher; |
| 38 | + $router = new Router($events); |
34 | 39 |
|
35 | 40 | $request = Request::create('/');
|
36 |
| - $urlGenerator = new UrlGenerator($routes, $request); |
37 | 41 |
|
38 | 42 | $config = new Repository([
|
39 | 43 | 'app' => [
|
40 | 44 | 'locale' => 'en',
|
41 | 45 | ],
|
42 | 46 | ]);
|
43 | 47 |
|
44 |
| - $routes->add(new Route(['GET'], '/en/blog', ['as' => 'en.blog.index'])); |
45 |
| - $routes->add(new Route(['GET'], '/en/blog/page/{page}', ['as' => 'en.blog.paginated'])); |
| 48 | + $routes = $router->getRoutes(); |
| 49 | + |
| 50 | + $routes->add((new Route(['GET'], '/en/blog', ['as' => 'en.blog.index'])) |
| 51 | + ->middleware(['localize.setLocale', 'localize.paginated'])); |
| 52 | + |
| 53 | + $routes->add((new Route(['GET'], '/en/blog/page/{page?}', ['as' => 'en.blog.paginated'])) |
| 54 | + ->middleware(['localize.setLocale', 'localize.paginated'])); |
| 55 | + |
| 56 | + $urlGenerator = new UrlGenerator($routes, $request); |
46 | 57 |
|
47 |
| - $localizer = new LocalizeUrlGenerator($urlGenerator, $config); |
| 58 | + $localizer = new LocalizeUrlGenerator($router, $config, $urlGenerator); |
48 | 59 |
|
49 | 60 | $url = $localizer->generate('blog.index', ['page' => 2]);
|
50 | 61 |
|
51 | 62 | expect($url)->toBe('http://localhost/en/blog/page/2');
|
52 | 63 | });
|
| 64 | + |
| 65 | +it('can generate a localized paginated URL without route names index/paginated', function () { |
| 66 | + $routes = new RouteCollection; |
| 67 | + |
| 68 | + $request = Request::create('/'); |
| 69 | + $events = new Dispatcher; |
| 70 | + $router = new Router($events); |
| 71 | + $urlGenerator = new UrlGenerator($routes, $request); |
| 72 | + |
| 73 | + $config = new Repository([ |
| 74 | + 'app' => [ |
| 75 | + 'locale' => 'en', |
| 76 | + ], |
| 77 | + ]); |
| 78 | + |
| 79 | + $routes->add(new Route(['GET'], '/en/blog', ['as' => 'en.blog'])); |
| 80 | + |
| 81 | + $localizer = new LocalizeUrlGenerator($router, $config, $urlGenerator); |
| 82 | + |
| 83 | + $url = $localizer->generate('blog', ['page' => 2]); |
| 84 | + |
| 85 | + expect($url)->toBe('http://localhost/en/blog?page=2'); |
| 86 | +}); |
0 commit comments