HtmlCommentsTest.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use PhpOffice\PhpSpreadsheet\RichText\RichText;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheetTests\Functional;
  6. class HtmlCommentsTest extends Functional\AbstractFunctional
  7. {
  8. /**
  9. * @var Spreadsheet
  10. */
  11. private $spreadsheet;
  12. public function providerCommentRichText(): array
  13. {
  14. $valueSingle = 'I am comment.';
  15. $valueMulti = 'I am ' . PHP_EOL . 'multi-line' . PHP_EOL . 'comment.';
  16. $plainSingle = new RichText();
  17. $plainSingle->createText($valueSingle);
  18. $plainMulti = new RichText();
  19. $plainMulti->createText($valueMulti);
  20. $richSingle = new RichText();
  21. $font = $richSingle->createTextRun($valueSingle)->getFont();
  22. self::assertNotNull($font);
  23. $font->setBold(true);
  24. $richMultiSimple = new RichText();
  25. $font = $richMultiSimple->createTextRun($valueMulti)->getFont();
  26. self::assertNotNull($font);
  27. $font->setBold(true);
  28. $richMultiMixed = new RichText();
  29. $richMultiMixed->createText('I am' . PHP_EOL);
  30. $font = $richMultiMixed->createTextRun('multi-line')->getFont();
  31. self::assertNotNull($font);
  32. $font->setBold(true);
  33. $richMultiMixed->createText(PHP_EOL . 'comment!');
  34. return [
  35. 'single line plain text' => [$plainSingle],
  36. 'multi-line plain text' => [$plainMulti],
  37. 'single line simple rich text' => [$richSingle],
  38. 'multi-line simple rich text' => [$richMultiSimple],
  39. 'multi-line mixed rich text' => [$richMultiMixed],
  40. ];
  41. }
  42. /**
  43. * @dataProvider providerCommentRichText
  44. *
  45. * @param mixed $richText
  46. */
  47. public function testComments($richText): void
  48. {
  49. $this->spreadsheet = new Spreadsheet();
  50. $this->spreadsheet->getActiveSheet()->getCell('A1')->setValue('Comment');
  51. $this->spreadsheet->getActiveSheet()
  52. ->getComment('A1')
  53. ->setText($richText);
  54. $reloadedSpreadsheet = $this->writeAndReload($this->spreadsheet, 'Html');
  55. $actual = $reloadedSpreadsheet->getActiveSheet()->getComment('A1')->getText()->getPlainText();
  56. self::assertSame($richText->getPlainText(), $actual);
  57. }
  58. }