X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/7681e32dca6cb7d06c2d196bf46239a41a86852c..refs/pull/5681/head:/tests/Exports/ZipTestHelper.php diff --git a/tests/Exports/ZipTestHelper.php b/tests/Exports/ZipTestHelper.php index 3a9b34354..d830d8eb6 100644 --- a/tests/Exports/ZipTestHelper.php +++ b/tests/Exports/ZipTestHelper.php @@ -8,7 +8,7 @@ use ZipArchive; class ZipTestHelper { - public static function importFromData(array $importData, array $zipData): Import + public static function importFromData(array $importData, array $zipData, array $files = []): Import { if (isset($zipData['book'])) { $importData['type'] = 'book'; @@ -19,8 +19,15 @@ class ZipTestHelper } $import = Import::factory()->create($importData); - $zip = static::zipUploadFromData($zipData); - rename($zip->getRealPath(), storage_path($import->path)); + $zip = static::zipUploadFromData($zipData, $files); + $targetPath = storage_path($import->path); + $targetDir = dirname($targetPath); + + if (!file_exists($targetDir)) { + mkdir($targetDir); + } + + rename($zip->getRealPath(), $targetPath); return $import; } @@ -33,13 +40,18 @@ class ZipTestHelper } } - public static function zipUploadFromData(array $data): UploadedFile + public static function zipUploadFromData(array $data, array $files = []): UploadedFile { $zipFile = tempnam(sys_get_temp_dir(), 'bstest-'); $zip = new ZipArchive(); $zip->open($zipFile, ZipArchive::CREATE); $zip->addFromString('data.json', json_encode($data)); + + foreach ($files as $name => $file) { + $zip->addFile($file, "files/$name"); + } + $zip->close(); return new UploadedFile($zipFile, 'upload.zip', 'application/zip', null, true);