DingoGeneratorTest.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace Mpociot\ApiDoc\Tests;
  3. use Orchestra\Testbench\TestCase;
  4. use Mpociot\ApiDoc\Generators\DingoGenerator;
  5. use Dingo\Api\Provider\LaravelServiceProvider;
  6. use Mpociot\ApiDoc\Tests\Fixtures\TestRequest;
  7. use Mpociot\ApiDoc\Tests\Fixtures\TestController;
  8. use Mpociot\ApiDoc\ApiDocGeneratorServiceProvider;
  9. use Mpociot\ApiDoc\Tests\Fixtures\DingoTestController;
  10. class DingoGeneratorTest extends TestCase
  11. {
  12. /**
  13. * @var \Mpociot\ApiDoc\Generators\DingoGenerator
  14. */
  15. protected $generator;
  16. protected function getPackageProviders($app)
  17. {
  18. return [
  19. LaravelServiceProvider::class,
  20. ApiDocGeneratorServiceProvider::class,
  21. ];
  22. }
  23. /**
  24. * Setup the test environment.
  25. */
  26. public function setUp()
  27. {
  28. parent::setUp();
  29. $this->generator = new DingoGenerator();
  30. }
  31. public function testCanParseMethodDescription()
  32. {
  33. $api = app('Dingo\Api\Routing\Router');
  34. $api->version('v1', function ($api) {
  35. $api->get('/api/test', TestController::class.'@parseMethodDescription');
  36. });
  37. $route = app('Dingo\Api\Routing\Router')->getRoutes()['v1']->getRoutes()[0];
  38. $parsed = $this->generator->processRoute($route);
  39. $this->assertSame('Example title.', $parsed['title']);
  40. $this->assertSame("This will be the long description.\nIt can also be multiple lines long.", $parsed['description']);
  41. }
  42. public function testCanParseRouteMethods()
  43. {
  44. $api = app('Dingo\Api\Routing\Router');
  45. $api->version('v1', function ($api) {
  46. $api->get('/get', TestController::class.'@dummy');
  47. $api->post('/post', TestController::class.'@dummy');
  48. $api->put('/put', TestController::class.'@dummy');
  49. $api->delete('/delete', TestController::class.'@dummy');
  50. });
  51. $route = app('Dingo\Api\Routing\Router')->getRoutes()['v1']->getRoutes()[0];
  52. $parsed = $this->generator->processRoute($route);
  53. $this->assertSame(['GET'], $parsed['methods']);
  54. $route = app('Dingo\Api\Routing\Router')->getRoutes()['v1']->getRoutes()[1];
  55. $parsed = $this->generator->processRoute($route);
  56. $this->assertSame(['POST'], $parsed['methods']);
  57. $route = app('Dingo\Api\Routing\Router')->getRoutes()['v1']->getRoutes()[2];
  58. $parsed = $this->generator->processRoute($route);
  59. $this->assertSame(['PUT'], $parsed['methods']);
  60. $route = app('Dingo\Api\Routing\Router')->getRoutes()['v1']->getRoutes()[3];
  61. $parsed = $this->generator->processRoute($route);
  62. $this->assertSame(['DELETE'], $parsed['methods']);
  63. }
  64. }