From adde09542d199625baa10ce3879e4b904efb0fda Mon Sep 17 00:00:00 2001
From: unclexo <itsunclexo@gmail.com>
Date: Thu, 22 Dec 2022 21:41:15 +0600
Subject: [PATCH] Test uploaded image has a new name

---
 .../Controllers/MediaUploaderController.php   |  9 +++++++++
 routes/web.php                                |  2 ++
 tests/Feature/UploadModuleTest.php            | 19 +++++++++++++++++--
 3 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/app/Http/Controllers/MediaUploaderController.php b/app/Http/Controllers/MediaUploaderController.php
index 7456710..d88e2af 100644
--- a/app/Http/Controllers/MediaUploaderController.php
+++ b/app/Http/Controllers/MediaUploaderController.php
@@ -12,4 +12,13 @@ public function upload()
 
         // Use $path to get the image path
     }
+
+    public function rename()
+    {
+        $newImageName = 'you-name-it.jpg';
+
+        $path = \request()->file('image')->storeAs('renamed', $newImageName, 'local');
+
+        return ['path' => $path];
+    }
 }
diff --git a/routes/web.php b/routes/web.php
index 1ccc719..d340fe7 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -43,5 +43,7 @@
 
     Route::prefix('media')->controller(MediaUploaderController::class)->group(function() {
         Route::post('/upload', 'upload')->name('upload.common');
+
+        Route::post('/upload/renamed', 'rename')->name('upload.renamed');
     });
 });
diff --git a/tests/Feature/UploadModuleTest.php b/tests/Feature/UploadModuleTest.php
index 2238c5d..1359fd4 100644
--- a/tests/Feature/UploadModuleTest.php
+++ b/tests/Feature/UploadModuleTest.php
@@ -4,7 +4,6 @@
 
 use App\Models\User;
 use Illuminate\Foundation\Testing\RefreshDatabase;
-use Illuminate\Foundation\Testing\WithFaker;
 use Illuminate\Http\UploadedFile;
 use Illuminate\Support\Facades\Storage;
 use Tests\TestCase;
@@ -18,7 +17,6 @@ public function a_user_can_upload_an_image()
     {
         $this->actingAs(User::factory()->create());
 
-        // You may fake different disk "local" for example
         Storage::fake('public');
 
         $this->post(route('upload.common'), [
@@ -27,4 +25,21 @@ public function a_user_can_upload_an_image()
 
         Storage::disk('public')->assertExists('common/' . $file->hashName());
     }
+
+    /** @test */
+    public function uploaded_image_has_a_new_name()
+    {
+        $this->actingAs(User::factory()->create());
+
+        Storage::fake('local');
+
+        $response = $this->post(route('upload.renamed'), [
+            'image' => $file = UploadedFile::fake()->image($originalName = 'image-name.jpg'),
+        ]);
+
+        Storage::disk('local')
+            ->assertMissing('renamed/' . $originalName)
+            ->assertMissing('renamed/' . $file->hashName())
+            ->assertExists($response->json('path')); // Note this line
+    }
 }