Task 3 - update and delete old file

This commit is contained in:
PovilasKorop
2021-12-06 07:58:56 +02:00
parent 669b1de915
commit c72be05cea
6 changed files with 110 additions and 3 deletions
+8
View File
@@ -40,3 +40,11 @@ In `app/Http/Controllers/ProjectController.php` file, in the `store()` method, p
Test method `test_file_size_validation()`.
---
## Task 3. Update: Delete Old File
In `app/Http/Controllers/HouseController.php` file, in the `update()` method, we upload the new file but don't delete the old one. Help to clean up the disk and delete the old file.
Test method `test_update_file_remove_old_one()`.
---
+36
View File
@@ -0,0 +1,36 @@
<?php
namespace App\Http\Controllers;
use App\Models\House;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
class HouseController extends Controller
{
public function store(Request $request)
{
$filename = $request->file('photo')->store('houses');
House::create([
'name' => $request->name,
'photo' => $filename,
]);
return 'Success';
}
public function update(Request $request, House $house)
{
$filename = $request->file('photo')->store('houses');
// TASK: Delete the old file from the storage
$house->update([
'name' => $request->name,
'photo' => $filename,
]);
return 'Success';
}
}
+13
View File
@@ -0,0 +1,13 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class House extends Model
{
use HasFactory;
protected $fillable = ['name', 'photo'];
}
@@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateHousesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('houses', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('photo');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('houses');
}
}
+1
View File
@@ -18,3 +18,4 @@ Route::get('/', function () {
});
Route::post('projects', [\App\Http\Controllers\ProjectController::class, 'store']);
Route::resource('houses', \App\Http\Controllers\HouseController::class);
+19 -3
View File
@@ -2,6 +2,7 @@
namespace Tests\Feature;
use App\Models\House;
use App\Models\Project;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Http\UploadedFile;
@@ -14,7 +15,6 @@ class FileUploadTest extends TestCase
public function test_original_filename_upload()
{
Storage::fake('logos');
$filename = 'logo.jpg';
$response = $this->post('projects', [
@@ -31,8 +31,6 @@ class FileUploadTest extends TestCase
public function test_file_size_validation()
{
Storage::fake('logos');
$response = $this->post('projects', [
'name' => 'Some name',
'logo' => UploadedFile::fake()->create('logo.jpg', 2000)
@@ -45,4 +43,22 @@ class FileUploadTest extends TestCase
]);
$response->assertValid();
}
public function test_update_file_remove_old_one()
{
$response = $this->post('houses', [
'name' => 'Some name',
'photo' => UploadedFile::fake()->image('photo.jpg')
]);
$response->assertStatus(200);
$house = House::first();
$this->assertTrue(Storage::exists($house->photo));
$response = $this->put('houses/1', [
'name' => 'Some name',
'photo' => UploadedFile::fake()->image('photo2.jpg')
]);
$response->assertStatus(200);
$this->assertFalse(Storage::exists($house->photo));
}
}