From 42d243e2fe0c68314ac70ca2166df4544a4167e3 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Tue, 2 Mar 2021 13:19:23 +0100 Subject: [PATCH] added it_restore_items_from_trash test --- .../FileFunctions/TrashController.php | 23 +++++----- routes/api.php | 2 +- tests/Feature/TrashTest.php | 44 +++++++++++++++++++ 3 files changed, 57 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/FileFunctions/TrashController.php b/app/Http/Controllers/FileFunctions/TrashController.php index 831b6380..0fc6ca55 100644 --- a/app/Http/Controllers/FileFunctions/TrashController.php +++ b/app/Http/Controllers/FileFunctions/TrashController.php @@ -58,15 +58,16 @@ class TrashController extends Controller * Restore item from trash * * @param Request $request - * @param $unique_id + * @param $id * @return ResponseFactory|\Illuminate\Http\Response */ public function restore(Request $request) { // Validate request - $validator = Validator::make($request->input('data'), [ - '*.type' => 'required|string', - '*.unique_id' => 'integer', + // TODO: zrefaktorovat validator do requestu + $validator = Validator::make($request->input('items'), [ + '*.type' => 'required|string', + '*.id' => 'string', ]); // Return error @@ -79,20 +80,20 @@ class TrashController extends Controller return Demo::response_204(); } - foreach($request->input('data') as $restore_item) { - + foreach ($request->input('items') as $restore) { + // Get folder - if ($restore_item['type'] === 'folder') { + if ($restore['type'] === 'folder') { // Get folder $item = Folder::onlyTrashed() ->where('user_id', $user_id) - ->where('unique_id', $restore_item['unique_id']) + ->where('id', $restore['id']) ->first(); // Restore item to home directory if ($request->has('to_home') && $request->to_home) { - $item->parent_id = 0; + $item->parent_id = null; $item->save(); } } else { @@ -100,12 +101,12 @@ class TrashController extends Controller // Get item $item = File::onlyTrashed() ->where('user_id', $user_id) - ->where('unique_id', $restore_item['unique_id']) + ->where('id', $restore['id']) ->first(); // Restore item to home directory if ($request->has('to_home') && $request->to_home) { - $item->folder_id = 0; + $item->folder_id = null; $item->save(); } } diff --git a/routes/api.php b/routes/api.php index f38655e6..4c69f72a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -58,7 +58,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () { // Trash Route::group(['prefix' => 'trash'], function () { - Route::post('/restore-items', [TrashController::class, 'restore']); + Route::post('/restore', [TrashController::class, 'restore']); Route::delete('/dump', [TrashController::class, 'clear']); }); diff --git a/tests/Feature/TrashTest.php b/tests/Feature/TrashTest.php index 24730975..89c261d9 100644 --- a/tests/Feature/TrashTest.php +++ b/tests/Feature/TrashTest.php @@ -6,6 +6,7 @@ use App\Models\File; use App\Models\Folder; use App\Models\User; use App\Services\SetupService; +use Carbon\Carbon; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Http\UploadedFile; use Laravel\Sanctum\Sanctum; @@ -22,6 +23,49 @@ class TrashTest extends TestCase $this->setup = app()->make(SetupService::class); } + /** + * @test + */ + public function it_restore_items_from_trash() + { + $user = User::factory(User::class) + ->create(); + + Sanctum::actingAs($user); + + $attributes = [ + 'user_id' => $user->id, + 'deleted_at' => Carbon::now(), + ]; + + $folder = Folder::factory(Folder::class) + ->create($attributes); + + $file = File::factory(File::class) + ->create($attributes); + + $this->postJson("/api/trash/restore", [ + 'items' => [ + [ + 'id' => $file->id, + 'type' => 'file', + ], + [ + 'id' => $folder->id, + 'type' => 'folder', + ], + ], + ])->assertStatus(204); + + $this->assertDatabaseHas('files', [ + 'deleted_at' => null + ]); + + $this->assertDatabaseHas('folders', [ + 'deleted_at' => null + ]); + } + /** * @test */