Skip to content

Commit 5e369b9

Browse files
author
Andrey Helldar
authored
Merge pull request #7 from TheDragonCode/1.x
Expanded list of collisions
2 parents d7d65da + 2d59a8b commit 5e369b9

File tree

7 files changed

+55
-20
lines changed

7 files changed

+55
-20
lines changed

README.md

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ composer require dragon-code/laravel-route-names
1818

1919
Next, replace `Illuminate\Foundation\Application` with `DragonCode\LaravelRouteNames\Application` in the `bootstrap/app.php` file.
2020

21-
You can now list the routes, for example by calling the `php artisan route:list` command or by using the [`dragon-code/pretty-routes`](https://github.com/TheDragonCode/pretty-routes) package.
21+
You can now list the routes, for example by calling the `php artisan route:list` command or by using
22+
the [`dragon-code/pretty-routes`](https://github.com/TheDragonCode/pretty-routes) package.
2223

2324
## Using
2425

@@ -34,29 +35,12 @@ Since route names are generated at the time they are received, we recommend usin
3435

3536
```bash
3637
php artisan route:cache
37-
```
3838

39-
or
39+
// or
4040

41-
```bash
4241
php artisan optimize
4342
```
4443

45-
For example:
46-
47-
```php
48-
app('router')
49-
->get('pages', [IndexController::class, 'index'])
50-
->name('my_pages');
51-
52-
return route('my_pages');
53-
// \Symfony\Component\Routing\Exception\RouteNotFoundException
54-
// Route [my_pages] not defined.
55-
56-
return route('pages.index');
57-
// Returns the result of executing the `IndexController@index` method.
58-
```
59-
6044
### Base Routes
6145

6246
```php
@@ -122,6 +106,21 @@ app('router')->apiResource('authors/{author}/photos', Author\PhotoController::cl
122106
| PATCH | `/authors/123/photos/{photo}` | `authors.photos.patch` | `route('authors.photos.patch')` |
123107
| DELETE | `/authors/123/photos/{photo}` | `authors.photos.destroy` | `route('authors.photos.destroy')` |
124108

109+
### Exceptions
110+
111+
```php
112+
app('router')
113+
->get('pages', [IndexController::class, 'index'])
114+
->name('my_pages');
115+
116+
return route('my_pages');
117+
// \Symfony\Component\Routing\Exception\RouteNotFoundException
118+
// Route [my_pages] not defined.
119+
120+
return route('pages.index');
121+
// Returns the result of executing the `IndexController@index` method.
122+
```
123+
125124
## Result
126125

127126
```php

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"illuminate/routing": "^7.0 || ^8.0 || ^9.0"
2727
},
2828
"require-dev": {
29+
"dragon-code/extended-routes": "^3.1",
2930
"orchestra/testbench": "^5.0 || ^6.0 || ^7.0",
3031
"phpunit/phpunit": "^9.5"
3132
},

src/Helpers/Action.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ class Action
2424
'edit' => [RequestMethodInterface::METHOD_GET, RequestMethodInterface::METHOD_HEAD],
2525
'destroy' => [RequestMethodInterface::METHOD_DELETE],
2626
'delete' => [RequestMethodInterface::METHOD_DELETE],
27+
'trashed' => [RequestMethodInterface::METHOD_GET, RequestMethodInterface::METHOD_HEAD],
28+
'restore' => [RequestMethodInterface::METHOD_POST],
2729
];
2830

2931
protected array $show = [RequestMethodInterface::METHOD_GET, RequestMethodInterface::METHOD_HEAD];

tests/Concerns/Routes.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Routing\Router;
88
use Tests\Http\Controllers\ApiResourceController;
99
use Tests\Http\Controllers\Controller;
10+
use Tests\Http\Controllers\RestorableResourceController;
1011
use Tests\Http\Controllers\WebResourceController;
1112

1213
trait Routes
@@ -108,6 +109,8 @@ protected function resourceRoutes(Router $router): void
108109
$router->resource('resources/photos', WebResourceController::class);
109110

110111
$router->apiResource('resources/comments', ApiResourceController::class);
112+
113+
$router->apiRestorableResource('resources/pages', RestorableResourceController::class);
111114
}
112115

113116
protected function protectedRoutes(Router $router): void
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Tests\Http\Controllers;
6+
7+
use Illuminate\Routing\Controller as BaseController;
8+
9+
class RestorableResourceController extends BaseController
10+
{
11+
public function __invoke()
12+
{
13+
}
14+
}

tests/Routes/ResourcesTest.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
namespace Tests\Routes;
66

77
use Tests\Http\Controllers\ApiResourceController;
8+
use Tests\Http\Controllers\RestorableResourceController;
89
use Tests\Http\Controllers\WebResourceController;
910
use Tests\TestCase;
1011

@@ -29,4 +30,15 @@ public function testApi(): void
2930
$this->assertSame('api.resources.comments.update', $this->getRouteName('update', ApiResourceController::class));
3031
$this->assertSame('api.resources.comments.destroy', $this->getRouteName('destroy', ApiResourceController::class));
3132
}
33+
34+
public function testRestorableApi(): void
35+
{
36+
$this->assertSame('api.resources.pages.index', $this->getRouteName('index', RestorableResourceController::class));
37+
$this->assertSame('api.resources.pages.store', $this->getRouteName('store', RestorableResourceController::class));
38+
$this->assertSame('api.resources.pages.trashed', $this->getRouteName('trashed', RestorableResourceController::class));
39+
$this->assertSame('api.resources.pages.show', $this->getRouteName('show', RestorableResourceController::class));
40+
$this->assertSame('api.resources.pages.update', $this->getRouteName('update', RestorableResourceController::class));
41+
$this->assertSame('api.resources.pages.destroy', $this->getRouteName('destroy', RestorableResourceController::class));
42+
$this->assertSame('api.resources.pages.restore', $this->getRouteName('restore', RestorableResourceController::class));
43+
}
3244
}

tests/TestCase.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
namespace Tests;
1818

19+
use DragonCode\ExtendedRoutes\ServiceProvider as ExtendedRoutesServiceProvider;
1920
use DragonCode\LaravelRouteNames\Application;
2021
use DragonCode\LaravelRouteNames\ServiceProvider;
2122
use Illuminate\Foundation\Bootstrap\LoadConfiguration;
@@ -32,7 +33,10 @@ abstract class TestCase extends BaseTestCase
3233

3334
protected function getPackageProviders($app): array
3435
{
35-
return [ServiceProvider::class];
36+
return [
37+
ExtendedRoutesServiceProvider::class,
38+
ServiceProvider::class,
39+
];
3640
}
3741

3842
protected function resolveApplication()

0 commit comments

Comments
 (0)