]> BookStack Code Mirror - bookstack/commitdiff
Images: Added test to cover thubmnail regen endpoint
authorDan Brown <redacted>
Sat, 30 Sep 2023 11:29:49 +0000 (12:29 +0100)
committerDan Brown <redacted>
Sat, 30 Sep 2023 11:29:49 +0000 (12:29 +0100)
tests/Helpers/FileProvider.php
tests/Uploads/ImageTest.php

index 9e44697c7a552738464286ed98379dbc11dfcd12..99ee11efbad8b355e136a794c9b2215b8b594e18 100644 (file)
@@ -133,12 +133,21 @@ class FileProvider
      */
     public function deleteAtRelativePath(string $path): void
     {
-        $fullPath = public_path($path);
+        $fullPath = $this->relativeToFullPath($path);
         if (file_exists($fullPath)) {
             unlink($fullPath);
         }
     }
 
+    /**
+     * Convert a relative path used by default in this provider to a full
+     * absolute local filesystem path.
+     */
+    public function relativeToFullPath(string $path): string
+    {
+        return public_path($path);
+    }
+
     /**
      * Delete all uploaded files.
      * To assist with cleanup.
index a9684eef72a9e52a55897571227ddf680f11daae..9943302d3049ca2fdfd4f2dc46fdb232e2cb6f2e 100644 (file)
@@ -552,6 +552,29 @@ class ImageTest extends TestCase
         $this->files->deleteAtRelativePath($relPath);
     }
 
+    public function test_image_manager_regen_thumbnails()
+    {
+        $this->asEditor();
+        $imageName = 'first-image.png';
+        $relPath = $this->files->expectedImagePath('gallery', $imageName);
+
+        $this->files->uploadGalleryImage($this, $imageName, $this->entities->page()->id);
+        $image = Image::first();
+
+        $resp = $this->get("/images/edit/{$image->id}");
+        $this->withHtml($resp)->assertElementExists('button#image-manager-rebuild-thumbs');
+
+        $expectedThumbPath = dirname($relPath) . '/scaled-1680-/' . basename($relPath);
+        $this->files->deleteAtRelativePath($expectedThumbPath);
+        $this->assertFileDoesNotExist($this->files->relativeToFullPath($expectedThumbPath));
+
+        $resp = $this->put("/images/{$image->id}/rebuild-thumbnails");
+        $resp->assertOk();
+
+        $this->assertFileExists($this->files->relativeToFullPath($expectedThumbPath));
+        $this->files->deleteAtRelativePath($relPath);
+    }
+
     protected function getTestProfileImage()
     {
         $imageName = 'profile.png';
Morty Proxy This is a proxified and sanitized view of the page, visit original site.