ApiDocGeneratorTest.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. use Illuminate\Foundation\Http\FormRequest;
  3. use Illuminate\Routing\Controller;
  4. use Illuminate\Routing\Route;
  5. use Mpociot\ApiDoc\ApiDocGenerator;
  6. class ApiDocGeneratorTest extends Orchestra\Testbench\TestCase
  7. {
  8. /**
  9. * @var \Mpociot\ApiDoc\ApiDocGenerator
  10. */
  11. protected $generator;
  12. /**
  13. * Setup the test environment.
  14. */
  15. public function setUp()
  16. {
  17. parent::setUp();
  18. $this->generator = new ApiDocGenerator();
  19. }
  20. public function testCanParseMethodDescription()
  21. {
  22. \Illuminate\Support\Facades\Route::get('/api/test', 'TestController@parseMethodDescription');
  23. $route = new Route(['GET'], '/api/test', ['uses' => 'TestController@parseMethodDescription']);
  24. $parsed = $this->generator->processRoute($route);
  25. $this->assertEquals('Example title', $parsed['title']);
  26. $this->assertEquals("This will be the long description.\nIt can also be multiple lines long.", $parsed['description']);
  27. }
  28. public function testCanParseRouteMethods()
  29. {
  30. \Illuminate\Support\Facades\Route::get('/get', 'TestController@dummy');
  31. \Illuminate\Support\Facades\Route::post('/post', 'TestController@dummy');
  32. \Illuminate\Support\Facades\Route::put('/put', 'TestController@dummy');
  33. \Illuminate\Support\Facades\Route::delete('/delete', 'TestController@dummy');
  34. $route = new Route(['GET'], '/get', ['uses' => 'TestController@parseMethodDescription']);
  35. $parsed = $this->generator->processRoute($route);
  36. $this->assertEquals(['GET','HEAD'], $parsed['methods']);
  37. $route = new Route(['POST'], '/post', ['uses' => 'TestController@parseMethodDescription']);
  38. $parsed = $this->generator->processRoute($route);
  39. $this->assertEquals(['POST'], $parsed['methods']);
  40. $route = new Route(['PUT'], '/put', ['uses' => 'TestController@parseMethodDescription']);
  41. $parsed = $this->generator->processRoute($route);
  42. $this->assertEquals(['PUT'], $parsed['methods']);
  43. $route = new Route(['DELETE'], '/delete', ['uses' => 'TestController@parseMethodDescription']);
  44. $parsed = $this->generator->processRoute($route);
  45. $this->assertEquals(['DELETE'], $parsed['methods']);
  46. }
  47. public function testCanParseFormRequestRules()
  48. {
  49. \Illuminate\Support\Facades\Route::post('/post', 'TestController@parseFormRequestRules');
  50. $route = new Route(['POST'], '/post', ['uses' => 'TestController@parseFormRequestRules']);
  51. $parsed = $this->generator->processRoute($route);
  52. $parameters = $parsed['parameters'];
  53. $this->assertArrayHasKey('required_attribute', $parameters);
  54. $required_attribute = $parameters['required_attribute'];
  55. $this->assertTrue( $required_attribute['required'] );
  56. $this->assertEquals( 'string', $required_attribute['type'] );
  57. $this->assertCount( 0, $required_attribute['description'] );
  58. }
  59. }
  60. class TestController extends Controller
  61. {
  62. public function dummy()
  63. {
  64. return '';
  65. }
  66. /**
  67. * Example title
  68. *
  69. * This will be the long description.
  70. * It can also be multiple lines long.
  71. */
  72. public function parseMethodDescription()
  73. {
  74. return '';
  75. }
  76. public function parseFormRequestRules(TestRequest $request)
  77. {
  78. return '';
  79. }
  80. }
  81. class TestRequest extends FormRequest
  82. {
  83. public function rules()
  84. {
  85. return [
  86. 'required_attribute' => 'required'
  87. ];
  88. }
  89. }