DocumentRenderedEventTest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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\DocumentRenderedEvent;
  14. use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
  15. use League\CommonMark\Node\Block\Document;
  16. use League\CommonMark\Output\RenderedContent;
  17. use League\CommonMark\Output\RenderedContentInterface;
  18. use League\CommonMark\Renderer\HtmlRenderer;
  19. use PHPUnit\Framework\TestCase;
  20. final class DocumentRenderedEventTest extends TestCase
  21. {
  22. public function testGettersAndReplacers(): void
  23. {
  24. $output = $this->createMock(RenderedContentInterface::class);
  25. $event = new DocumentRenderedEvent($output);
  26. $this->assertSame($output, $event->getOutput());
  27. // Replace the output with something else - the getter should return something different now
  28. $event->replaceOutput($this->createMock(RenderedContentInterface::class));
  29. $this->assertNotSame($output, $event->getOutput());
  30. }
  31. public function testEventDispatchedAtCorrectTime(): void
  32. {
  33. $wasCalled = false;
  34. $environment = new Environment();
  35. $environment->addExtension(new CommonMarkCoreExtension());
  36. $environment->addEventListener(DocumentRenderedEvent::class, static function (DocumentRenderedEvent $event) use (&$wasCalled): void {
  37. $wasCalled = true;
  38. $event->replaceOutput(new RenderedContent(new Document(), 'foo'));
  39. });
  40. $renderer = new HtmlRenderer($environment);
  41. $result = $renderer->renderDocument(new Document());
  42. $this->assertTrue($wasCalled);
  43. $this->assertSame('foo', (string) $result);
  44. }
  45. }