GetFromLaravelAPITest.php 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Strategies\UrlParameters;
  3. use Knuckles\Camel\Extraction\ExtractedEndpointData;
  4. use Knuckles\Scribe\Extracting\Strategies\UrlParameters\GetFromLaravelAPI;
  5. use Knuckles\Scribe\Tests\BaseLaravelTest;
  6. use Knuckles\Scribe\Tests\Fixtures\TestController;
  7. use Knuckles\Scribe\Tools\DocumentationConfig;
  8. use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
  9. class GetFromLaravelAPITest extends BaseLaravelTest
  10. {
  11. use ArraySubsetAsserts;
  12. /** @test */
  13. public function can_fetch_from_url()
  14. {
  15. $endpoint = new class extends ExtractedEndpointData {
  16. public function __construct(array $parameters = [])
  17. {
  18. $this->uri = 'users/{id}';
  19. $this->method = new \ReflectionMethod(TestController::class, 'withInjectedModel');
  20. }
  21. };
  22. $strategy = new GetFromLaravelAPI(new DocumentationConfig([]));
  23. $results = $strategy($endpoint, []);
  24. $this->assertArraySubset([
  25. "name" => "id",
  26. "description" => "The ID of the user.",
  27. "required" => true,
  28. "type" => "integer",
  29. ], $results['id']);
  30. $this->assertIsInt($results['id']['example']);
  31. }
  32. /** @test */
  33. public function can_infer_description()
  34. {
  35. $endpoint = new class extends ExtractedEndpointData {
  36. public function __construct(array $parameters = [])
  37. {
  38. $this->uri = 'everything/{cat_id}';
  39. $this->method = new \ReflectionMethod(TestController::class, 'dummy');
  40. }
  41. };
  42. $strategy = new GetFromLaravelAPI(new DocumentationConfig([]));
  43. $results = $strategy($endpoint, []);
  44. $this->assertArraySubset([
  45. "name" => "cat_id",
  46. "description" => "The ID of the cat.",
  47. "required" => true,
  48. "type" => "string",
  49. ], $results['cat_id']);
  50. $endpoint->uri = 'dogs/{id}';
  51. $results = $strategy($endpoint, []);
  52. $this->assertArraySubset([
  53. "name" => "id",
  54. "description" => "The ID of the dog.",
  55. "required" => true,
  56. "type" => "string",
  57. ], $results['id']);
  58. }
  59. }