GetFromDocBlocksTest.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace Knuckles\Scribe\Tests\Strategies\Metadata;
  3. use Knuckles\Scribe\Extracting\Strategies\Metadata\GetFromDocBlocks;
  4. use Knuckles\Scribe\Tools\DocumentationConfig;
  5. use Mpociot\Reflection\DocBlock;
  6. use Mpociot\Reflection\DocBlock\Tag;
  7. use DMS\PHPUnitExtensions\ArraySubset\ArraySubsetAsserts;
  8. use PHPUnit\Framework\TestCase;
  9. class GetFromDocBlocksTest extends TestCase
  10. {
  11. use ArraySubsetAsserts;
  12. /** @test */
  13. public function can_fetch_metadata_from_method_and_class()
  14. {
  15. $strategy = new GetFromDocBlocks(new DocumentationConfig([]));
  16. $methodDocblock = <<<DOCBLOCK
  17. /**
  18. * Endpoint title.
  19. * Endpoint description.
  20. * Multiline.
  21. */
  22. DOCBLOCK;
  23. $classDocblock = <<<DOCBLOCK
  24. /**
  25. * @group Group A
  26. * Group description.
  27. */
  28. DOCBLOCK;
  29. $results = $strategy->getMetadataFromDocBlock(new DocBlock($methodDocblock), new DocBlock($classDocblock));
  30. $this->assertFalse($results['authenticated']);
  31. $this->assertSame('Group A', $results['groupName']);
  32. $this->assertSame('Group description.', $results['groupDescription']);
  33. $this->assertSame('Endpoint title.', $results['title']);
  34. $this->assertSame("Endpoint description.\nMultiline.", $results['description']);
  35. $methodDocblock = <<<DOCBLOCK
  36. /**
  37. * Endpoint title.
  38. * @authenticated
  39. */
  40. DOCBLOCK;
  41. $classDocblock = <<<DOCBLOCK
  42. /**
  43. * @authenticated
  44. */
  45. DOCBLOCK;
  46. $results = $strategy->getMetadataFromDocBlock(new DocBlock($methodDocblock), new DocBlock($classDocblock));
  47. $this->assertTrue($results['authenticated']);
  48. $this->assertSame(null, $results['groupName']);
  49. $this->assertSame('', $results['groupDescription']);
  50. $this->assertSame('Endpoint title.', $results['title']);
  51. $this->assertSame("", $results['description']);
  52. }
  53. /** @test */
  54. public function can_override_group_name_group_description_and_auth_status_from_method()
  55. {
  56. $strategy = new GetFromDocBlocks(new DocumentationConfig([]));
  57. $methodDocblock = <<<DOCBLOCK
  58. /**
  59. * Endpoint title.
  60. * This is the endpoint description.
  61. * @authenticated
  62. * @group Group from method
  63. */
  64. DOCBLOCK;
  65. $classDocblock = <<<DOCBLOCK
  66. /**
  67. * @group Group from controller
  68. * This is the group description.
  69. */
  70. DOCBLOCK;
  71. $results = $strategy->getMetadataFromDocBlock(new DocBlock($methodDocblock), new DocBlock($classDocblock));
  72. $this->assertTrue($results['authenticated']);
  73. $this->assertSame('Group from method', $results['groupName']);
  74. $this->assertSame("", $results['groupDescription']);
  75. $this->assertSame("This is the endpoint description.", $results['description']);
  76. $this->assertSame("Endpoint title.", $results['title']);
  77. }
  78. }