DingoGeneratorTest.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Unit;
  3. use Dingo\Api\Routing\RouteCollection;
  4. use Dingo\Api\Routing\Router;
  5. use Illuminate\Routing\Route;
  6. use Knuckles\Scribe\Extracting\Generator;
  7. use Knuckles\Scribe\ScribeServiceProvider;
  8. use Knuckles\Scribe\Tests\Fixtures\TestController;
  9. use Knuckles\Scribe\Tools\DocumentationConfig;
  10. /**
  11. * @group dingo
  12. */
  13. class DingoGeneratorTest extends GeneratorTestCase
  14. {
  15. protected function getPackageProviders($app)
  16. {
  17. return [
  18. ScribeServiceProvider::class,
  19. \Dingo\Api\Provider\LaravelServiceProvider::class,
  20. ];
  21. }
  22. public function setUp(): void
  23. {
  24. parent::setUp();
  25. $config = $this->config;
  26. $config['router'] = 'dingo';
  27. $this->generator = new Generator(new DocumentationConfig($config));
  28. }
  29. public function createRoute(string $httpMethod, string $path, string $controllerMethod, $register = false, $class = TestController::class)
  30. {
  31. $desiredRoute = null;
  32. /** @var Router $api */
  33. $api = app(Router::class);
  34. $api->version('v1', function (Router $api) use ($class, $controllerMethod, $path, $httpMethod, &$desiredRoute) {
  35. $desiredRoute = $api->$httpMethod($path, $class . "@$controllerMethod");
  36. });
  37. $routes = app(\Dingo\Api\Routing\Router::class)->getRoutes('v1');
  38. /*
  39. * Doing this bc we want an instance of Dingo\Api\Routing\Route, not Illuminate\Routing\Route, which the method above returns
  40. */
  41. return collect($routes)
  42. ->first(function (Route $route) use ($desiredRoute) {
  43. return $route->uri() === $desiredRoute->uri();
  44. });
  45. }
  46. public function createRouteUsesArray(string $httpMethod, string $path, string $controllerMethod, $register = false, $class = TestController::class)
  47. {
  48. $route = null;
  49. /** @var Router $api */
  50. $api = app(Router::class);
  51. $api->version('v1', function (Router $api) use ($class, $controllerMethod, $path, $httpMethod, &$route) {
  52. $route = $api->$httpMethod($path, [$class, $controllerMethod]);
  53. });
  54. return $route;
  55. }
  56. public function createRouteUsesCallable(string $httpMethod, string $path, callable $handler, $register = false)
  57. {
  58. $route = null;
  59. /** @var Router $api */
  60. $api = app(Router::class);
  61. $api->version('v1', function (Router $api) use ($handler, $path, $httpMethod, &$route) {
  62. $route = $api->$httpMethod($path, $handler);
  63. });
  64. return $route;
  65. }
  66. }