ImagesRootTest.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Writer\Html;
  3. use DOMDocument;
  4. use PhpOffice\PhpSpreadsheet\Spreadsheet;
  5. use PhpOffice\PhpSpreadsheet\Writer\Html;
  6. use PhpOffice\PhpSpreadsheetTests\Functional;
  7. class ImagesRootTest extends Functional\AbstractFunctional
  8. {
  9. /**
  10. * @var string
  11. */
  12. private $curdir = '';
  13. protected function setUp(): void
  14. {
  15. $curdir = getcwd();
  16. if ($curdir === false) {
  17. self::fail('Unable to obtain current directory');
  18. } else {
  19. $this->curdir = $curdir;
  20. }
  21. }
  22. protected function tearDown(): void
  23. {
  24. chdir($this->curdir);
  25. }
  26. public function testImagesRoot(): void
  27. {
  28. $spreadsheet = new Spreadsheet();
  29. $sheet = $spreadsheet->getActiveSheet();
  30. $drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
  31. $drawing->setName('Test');
  32. $drawing->setDescription('Test');
  33. $root = 'http://www.example.com';
  34. $newdir = __DIR__ . '/../../../data/Reader/HTML';
  35. $stub = 'image.jpg';
  36. $imagePath = "./$stub";
  37. chdir($newdir);
  38. self::assertFileExists($imagePath);
  39. $drawing->setPath($imagePath);
  40. $desc = 'Test <img> tag';
  41. $drawing->setDescription($desc);
  42. $drawing->setHeight(36);
  43. $drawing->setWorksheet($spreadsheet->getActiveSheet());
  44. $drawing->setCoordinates('A1');
  45. $sheet->setCellValue('A2', 'Image Above?');
  46. $writer = new Html($spreadsheet);
  47. $writer->setImagesRoot($root);
  48. $html = $writer->generateHTMLAll();
  49. $dom = new DOMDocument();
  50. $dom->loadHTML($html);
  51. $body = $dom->getElementsByTagName('body')[0];
  52. $divs = $body->getElementsByTagName('div');
  53. $tabl = $divs[0]->getElementsByTagName('table');
  54. $tbod = $tabl[0]->getElementsByTagName('tbody');
  55. $rows = $tbod[0]->getElementsByTagName('tr');
  56. self::assertCount(2, $rows);
  57. $tds = $rows[0]->getElementsByTagName('td');
  58. self::assertCount(1, $tds);
  59. $img = $tds[0]->getElementsByTagName('img');
  60. self::assertCount(1, $img);
  61. self::assertEquals("$root/$stub", $img[0]->getAttribute('src'));
  62. self::assertEquals($desc, $img[0]->getAttribute('alt'));
  63. $spreadsheet->disconnectWorksheets();
  64. }
  65. }