]> BookStack Code Mirror - bookstack/blobdiff - tests/Exports/ZipTestHelper.php
Customization: Added parent tag classes
[bookstack] / tests / Exports / ZipTestHelper.php
index 3a9b34354542957c0d66525c979df9235ad53b41..d830d8eb6bf9ea925f06f8e45fb1da084030ced2 100644 (file)
@@ -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);