GetFromDocBlocksTest.php 2.7 KB

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