thumbnailer = new Epubthumb(); } /* * Tests */ public function testEpubThumbMatch(): void { $this->assertTrue($this->thumbnailer->Match('application/epub+zip')); $this->assertFalse($this->thumbnailer->Match('application/zip')); } public function testNoThumbnailCreatedForFileThatDontExist(): void { $this->checkCreateThumbnail(self::TMPDIR . '/nonexisting.epub', false); } public function testNoThumbnailCreatedIfNotAZipArchive(): void { $filename = self::TMPDIR . '/notazip.epub'; file_put_contents($filename, 'This is not a ZIP file!'); $this->checkCreateThumbnail($filename, false); } public function testNoThumbnailCreatedIfInvalidEpub(): void { $filename = self::TMPDIR . '/nocontainer.epub'; $epub = new ZipArchive(); $epub->open($filename, ZipArchive::CREATE); $epub->addFromString('somefile.txt', 'It was a dark an stormy night...'); $epub->close(); $this->checkCreateThumbnail($filename, false); } public function testNoThumbnailCreatedIfCoverFileMissing(): void { $filename = self::TMPDIR . '/good.epub'; $epub = new ZipArchive(); $epub->open($filename, ZipArchive::CREATE); $this->addEpubContainer($epub); $this->addEpubPackage($epub); $epub->close(); $this->checkCreateThumbnail($filename, false); } public function testCreateCoverFromEpub(): void { $filename = self::TMPDIR . '/good.epub'; $epub = new ZipArchive(); $epub->open($filename, ZipArchive::CREATE); $this->addEpubContainer($epub); $this->addEpubPackage($epub); $epub->addFile(PROJECT_BASE . '/images/red-koala.png', 'EPUB/cover.png'); $epub->close(); $this->checkCreateThumbnail($filename, true); } /* * Helper functions */ private function checkCreateThumbnail(string $filename, bool $expectThumbnail): void { $attach = [ 'content' => $filename ]; $this->thumbnailer->Thumb($attach, 0); $this->assertEquals($expectThumbnail, file_exists($filename . '.thumb')); } private function addEpubContainer(ZipArchive $epub): void { $xml = << XML; $epub->addEmptyDir('META-INF'); $epub->addFromString('META-INF/container.xml', $xml); } private function addEpubPackage(ZipArchive $epub): void { $xml = << XML; $epub->addEmptyDir('EPUB'); $epub->addFromString('EPUB/package.opf', $xml); } }