FrontMatterParserTest.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4. * This file is part of the league/commonmark package.
  5. *
  6. * (c) Colin O'Dell <colinodell@gmail.com>
  7. *
  8. * For the full copyright and license information, please view the LICENSE
  9. * file that was distributed with this source code.
  10. */
  11. namespace League\CommonMark\Tests\Unit\Extension\FrontMatter;
  12. use League\CommonMark\Extension\FrontMatter\Data\SymfonyYamlFrontMatterParser;
  13. use League\CommonMark\Extension\FrontMatter\FrontMatterParser;
  14. use PHPUnit\Framework\TestCase;
  15. final class FrontMatterParserTest extends TestCase
  16. {
  17. public function testWithFrontMatter(): void
  18. {
  19. $markdown = <<<EOT
  20. ---
  21. title: Hello World!
  22. published: true
  23. ---
  24. Yay
  25. ---
  26. EOT;
  27. $parser = new FrontMatterParser(new SymfonyYamlFrontMatterParser());
  28. $parsedData = $parser->parse($markdown);
  29. $this->assertSame(['title' => 'Hello World!', 'published' => true], $parsedData->getFrontMatter());
  30. $this->assertSame("Yay\n---", $parsedData->getContent());
  31. }
  32. public function testWithFrontMatterThatsJustAString(): void
  33. {
  34. $markdown = <<<EOT
  35. ---
  36. Hello World!
  37. ---
  38. Yay
  39. ---
  40. EOT;
  41. $parser = new FrontMatterParser(new SymfonyYamlFrontMatterParser());
  42. $parsedData = $parser->parse($markdown);
  43. $this->assertSame('Hello World!', $parsedData->getFrontMatter());
  44. $this->assertSame("Yay\n---", $parsedData->getContent());
  45. }
  46. public function testWithNoFrontMatter(): void
  47. {
  48. $markdown = <<<EOT
  49. # Hello World!
  50. ---
  51. This is not front matter
  52. ---
  53. EOT;
  54. $parser = new FrontMatterParser(new SymfonyYamlFrontMatterParser());
  55. $parsedData = $parser->parse($markdown);
  56. $this->assertNull($parsedData->getFrontMatter());
  57. $this->assertSame($markdown, $parsedData->getContent());
  58. }
  59. public function testWithInvalidFrontMatterDelimiters(): void
  60. {
  61. $markdown = <<<EOT
  62. ---
  63. This is a heading
  64. -----------------
  65. EOT;
  66. $parser = new FrontMatterParser(new SymfonyYamlFrontMatterParser());
  67. $parsedData = $parser->parse($markdown);
  68. $this->assertNull($parsedData->getFrontMatter());
  69. $this->assertSame($markdown, $parsedData->getContent());
  70. }
  71. }