URLImageTest.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. namespace PhpOffice\PhpSpreadsheetTests\Reader\Xlsx;
  3. use PhpOffice\PhpSpreadsheet\IOFactory;
  4. use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
  5. use PhpOffice\PhpSpreadsheetTests\Reader\Utility\File;
  6. use PHPUnit\Framework\TestCase;
  7. class URLImageTest extends TestCase
  8. {
  9. public function testURLImageSource(): void
  10. {
  11. if (getenv('SKIP_URL_IMAGE_TEST') === '1') {
  12. self::markTestSkipped('Skipped due to setting of environment variable');
  13. }
  14. $filename = realpath(__DIR__ . '/../../../data/Reader/XLSX/urlImage.xlsx');
  15. self::assertNotFalse($filename);
  16. $reader = IOFactory::createReader('Xlsx');
  17. $spreadsheet = $reader->load($filename);
  18. $worksheet = $spreadsheet->getActiveSheet();
  19. $collection = $worksheet->getDrawingCollection();
  20. self::assertCount(1, $collection);
  21. foreach ($collection as $drawing) {
  22. self::assertInstanceOf(Drawing::class, $drawing);
  23. // Check if the source is a URL or a file path
  24. self::assertTrue($drawing->getIsURL());
  25. self::assertSame('https://phpspreadsheet.readthedocs.io/en/latest/topics/images/01-03-filter-icon-1.png', $drawing->getPath());
  26. $imageContents = file_get_contents($drawing->getPath());
  27. self::assertNotFalse($imageContents);
  28. $filePath = tempnam(sys_get_temp_dir(), 'Drawing');
  29. self::assertNotFalse($filePath);
  30. self::assertNotFalse(file_put_contents($filePath, $imageContents));
  31. $mimeType = mime_content_type($filePath);
  32. unlink($filePath);
  33. self::assertNotFalse($mimeType);
  34. $extension = File::mime2ext($mimeType);
  35. self::assertSame('png', $extension);
  36. }
  37. }
  38. }