GetFromFormRequestTest.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Strategies\BodyParameters;
  3. use Illuminate\Support\Facades\Validator;
  4. use Illuminate\Validation\ValidationException;
  5. use Knuckles\Scribe\Extracting\Strategies\BodyParameters\GetFromFormRequest;
  6. use Knuckles\Scribe\ScribeServiceProvider;
  7. use Knuckles\Scribe\Tests\BaseLaravelTest;
  8. use Knuckles\Scribe\Tests\Fixtures\TestController;
  9. use Knuckles\Scribe\Tools\DocumentationConfig;
  10. use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
  11. class GetFromFormRequestTest extends BaseLaravelTest
  12. {
  13. use ArraySubsetAsserts;
  14. /** @test */
  15. public function can_fetch_from_form_request()
  16. {
  17. $method = new \ReflectionMethod(TestController::class, 'withFormRequestParameter');
  18. $strategy = new GetFromFormRequest(new DocumentationConfig([]));
  19. $results = $strategy->getBodyParametersFromFormRequest($method);
  20. $this->assertArraySubset([
  21. 'user_id' => [
  22. 'type' => 'integer',
  23. 'required' => true,
  24. 'description' => 'The id of the user.',
  25. 'example' => 9,
  26. ],
  27. 'room_id' => [
  28. 'type' => 'string',
  29. 'required' => false,
  30. 'description' => 'The id of the room.',
  31. ],
  32. 'forever' => [
  33. 'type' => 'boolean',
  34. 'required' => false,
  35. 'description' => 'Whether to ban the user forever.',
  36. 'example' => false,
  37. ],
  38. 'another_one' => [
  39. 'type' => 'number',
  40. 'required' => false,
  41. 'description' => 'Just need something here.',
  42. ],
  43. 'even_more_param' => [
  44. 'type' => 'string[]',
  45. 'required' => false,
  46. 'description' => '',
  47. ],
  48. 'book' => [
  49. 'type' => 'object',
  50. 'description' => '',
  51. 'required' => false,
  52. 'example' => [],
  53. ],
  54. 'book.name' => [
  55. 'type' => 'string',
  56. 'description' => '',
  57. 'required' => false,
  58. ],
  59. 'book.author_id' => [
  60. 'type' => 'integer',
  61. 'description' => '',
  62. 'required' => false,
  63. ],
  64. 'book.pages_count' => [
  65. 'type' => 'integer',
  66. 'description' => '',
  67. 'required' => false,
  68. ],
  69. 'ids' => [
  70. 'type' => 'integer[]',
  71. 'description' => '',
  72. 'required' => false,
  73. ],
  74. 'users' => [
  75. 'type' => 'object[]',
  76. 'description' => '',
  77. 'required' => false,
  78. 'example' => [[]],
  79. ],
  80. 'users[].first_name' => [
  81. 'type' => 'string',
  82. 'description' => 'The first name of the user.',
  83. 'required' => false,
  84. 'example' => 'John',
  85. ],
  86. 'users[].last_name' => [
  87. 'type' => 'string',
  88. 'description' => 'The last name of the user.',
  89. 'required' => false,
  90. 'example' => 'Doe',
  91. ],
  92. ], $results);
  93. $this->assertIsArray($results['ids']['example']);
  94. }
  95. }