CommentsTest.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Functional;
  3. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  4. use PhpOffice\PhpSpreadsheet\Style\Alignment;
  5. class CommentsTest extends AbstractFunctional
  6. {
  7. public function providerFormats(): array
  8. {
  9. return [
  10. ['Html'],
  11. ['Xlsx'],
  12. ['Ods'],
  13. ];
  14. }
  15. /**
  16. * Test load file with comment in sheet to load proper
  17. * count of comments in correct coords.
  18. *
  19. * @dataProvider providerFormats
  20. */
  21. public function testComments(string $format): void
  22. {
  23. $spreadsheet = new Spreadsheet();
  24. $spreadsheet->getActiveSheet()->getCell('E10')->setValue('Comment');
  25. $spreadsheet->getActiveSheet()
  26. ->getComment('E10')
  27. ->getText()
  28. ->createText('Comment to test');
  29. $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, $format);
  30. $sheet = $reloadedSpreadsheet->getSheet(0);
  31. $commentsLoaded = $sheet->getComments();
  32. self::assertCount(1, $commentsLoaded);
  33. $commentCoordinate = key($commentsLoaded);
  34. self::assertSame('E10', $commentCoordinate);
  35. self::assertSame('Comment', $sheet->getCell('E10')->getValue());
  36. $comment = $commentsLoaded[$commentCoordinate];
  37. self::assertSame('Comment to test', (string) $comment);
  38. $commentClone = clone $comment;
  39. self::assertEquals($comment, $commentClone);
  40. self::assertNotSame($comment, $commentClone);
  41. if ($format === 'Xlsx') {
  42. self::assertEquals('feb0c24b880a8130262dadf801f85e94', $comment->getHashCode());
  43. self::assertEquals(Alignment::HORIZONTAL_GENERAL, $comment->getAlignment());
  44. $comment->setAlignment(Alignment::HORIZONTAL_RIGHT);
  45. self::assertEquals(Alignment::HORIZONTAL_RIGHT, $comment->getAlignment());
  46. }
  47. $spreadsheet->disconnectWorksheets();
  48. $reloadedSpreadsheet->disconnectWorksheets();
  49. }
  50. }