DocumentPreRenderEventTest.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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\Event;
  12. use League\CommonMark\Environment\Environment;
  13. use League\CommonMark\Event\DocumentPreRenderEvent;
  14. use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
  15. use League\CommonMark\Node\Block\Document;
  16. use League\CommonMark\Node\Block\Paragraph;
  17. use League\CommonMark\Node\Inline\Text;
  18. use League\CommonMark\Renderer\HtmlRenderer;
  19. use PHPUnit\Framework\TestCase;
  20. final class DocumentPreRenderEventTest extends TestCase
  21. {
  22. public function testGettersAndReplacers(): void
  23. {
  24. $document = new Document();
  25. $event = new DocumentPreRenderEvent($document, 'html');
  26. $this->assertSame($document, $event->getDocument());
  27. $this->assertSame('html', $event->getFormat());
  28. }
  29. public function testEventDispatchedAtCorrectTime(): void
  30. {
  31. $document = new Document();
  32. $document->appendChild($paragraph = new Paragraph());
  33. $paragraph->appendChild(new Text('Original text'));
  34. $wasCalled = false;
  35. $environment = new Environment();
  36. $environment->addExtension(new CommonMarkCoreExtension());
  37. $environment->addEventListener(DocumentPreRenderEvent::class, static function (DocumentPreRenderEvent $event) use (&$wasCalled): void {
  38. $wasCalled = true;
  39. $event->getDocument()->firstChild()->replaceChildren([new Text('New text')]);
  40. });
  41. $renderer = new HtmlRenderer($environment);
  42. $result = $renderer->renderDocument($document);
  43. $this->assertTrue($wasCalled);
  44. $this->assertStringContainsString('New text', (string) $result);
  45. $this->assertStringNotContainsString('Original text', (string) $result);
  46. }
  47. }