TableCellRendererTest.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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\Table;
  12. use League\CommonMark\Exception\InvalidArgumentException;
  13. use League\CommonMark\Extension\Table\TableCell;
  14. use League\CommonMark\Extension\Table\TableCellRenderer;
  15. use League\CommonMark\Extension\Table\TableSection;
  16. use League\CommonMark\Tests\Unit\Renderer\FakeChildNodeRenderer;
  17. use PHPUnit\Framework\TestCase;
  18. final class TableCellRendererTest extends TestCase
  19. {
  20. public function testRenderWithTableHeader(): void
  21. {
  22. $tableCell = new TableCell(TableCell::TYPE_HEADER);
  23. $tableCell->data->set('attributes/class', 'foo');
  24. $childRenderer = new FakeChildNodeRenderer();
  25. $childRenderer->pretendChildrenExist();
  26. $renderer = new TableCellRenderer();
  27. $this->assertSame('<th class="foo">::children::</th>', (string) $renderer->render($tableCell, $childRenderer));
  28. }
  29. public function testRenderWithTableCell(): void
  30. {
  31. $tableCell = new TableCell(TableCell::TYPE_DATA);
  32. $tableCell->data->set('attributes/class', 'foo');
  33. $childRenderer = new FakeChildNodeRenderer();
  34. $childRenderer->pretendChildrenExist();
  35. $renderer = new TableCellRenderer();
  36. $this->assertSame('<td class="foo">::children::</td>', (string) $renderer->render($tableCell, $childRenderer));
  37. }
  38. public function testRenderWithTableCellHavingAlignment(): void
  39. {
  40. $tableCell = new TableCell(TableCell::TYPE_DATA, TableCell::ALIGN_CENTER);
  41. $tableCell->data->set('attributes/class', 'foo');
  42. $childRenderer = new FakeChildNodeRenderer();
  43. $childRenderer->pretendChildrenExist();
  44. $renderer = new TableCellRenderer();
  45. $this->assertSame('<td class="foo" align="center">::children::</td>', (string) $renderer->render($tableCell, $childRenderer));
  46. }
  47. public function testRenderWithTableCellWithCustomAttributes(): void
  48. {
  49. $tableCell = new TableCell(TableCell::TYPE_DATA, TableCell::ALIGN_CENTER);
  50. $tableCell->data->set('attributes/class', 'foo');
  51. $childRenderer = new FakeChildNodeRenderer();
  52. $childRenderer->pretendChildrenExist();
  53. $renderer = new TableCellRenderer([
  54. 'left' => ['class' => 'foo', 'style' => 'text-align: left'],
  55. 'center' => ['class' => 'bar', 'style' => 'text-align: center'],
  56. 'right' => ['class' => 'baz', 'style' => 'text-align: right'],
  57. ]);
  58. $this->assertSame('<td class="foo bar" style="text-align: center">::children::</td>', (string) $renderer->render($tableCell, $childRenderer));
  59. }
  60. public function testRenderWithWrongType(): void
  61. {
  62. $this->expectException(InvalidArgumentException::class);
  63. (new TableCellRenderer())->render(new TableSection(), new FakeChildNodeRenderer());
  64. }
  65. }