added it_restore_items_from_trash test

This commit is contained in:
Peter Papp
2021-03-02 13:19:23 +01:00
parent 9583c22b72
commit 42d243e2fe
3 changed files with 57 additions and 12 deletions
@@ -58,15 +58,16 @@ class TrashController extends Controller
* Restore item from trash * Restore item from trash
* *
* @param Request $request * @param Request $request
* @param $unique_id * @param $id
* @return ResponseFactory|\Illuminate\Http\Response * @return ResponseFactory|\Illuminate\Http\Response
*/ */
public function restore(Request $request) public function restore(Request $request)
{ {
// Validate request // Validate request
$validator = Validator::make($request->input('data'), [ // TODO: zrefaktorovat validator do requestu
$validator = Validator::make($request->input('items'), [
'*.type' => 'required|string', '*.type' => 'required|string',
'*.unique_id' => 'integer', '*.id' => 'string',
]); ]);
// Return error // Return error
@@ -79,20 +80,20 @@ class TrashController extends Controller
return Demo::response_204(); return Demo::response_204();
} }
foreach($request->input('data') as $restore_item) { foreach ($request->input('items') as $restore) {
// Get folder // Get folder
if ($restore_item['type'] === 'folder') { if ($restore['type'] === 'folder') {
// Get folder // Get folder
$item = Folder::onlyTrashed() $item = Folder::onlyTrashed()
->where('user_id', $user_id) ->where('user_id', $user_id)
->where('unique_id', $restore_item['unique_id']) ->where('id', $restore['id'])
->first(); ->first();
// Restore item to home directory // Restore item to home directory
if ($request->has('to_home') && $request->to_home) { if ($request->has('to_home') && $request->to_home) {
$item->parent_id = 0; $item->parent_id = null;
$item->save(); $item->save();
} }
} else { } else {
@@ -100,12 +101,12 @@ class TrashController extends Controller
// Get item // Get item
$item = File::onlyTrashed() $item = File::onlyTrashed()
->where('user_id', $user_id) ->where('user_id', $user_id)
->where('unique_id', $restore_item['unique_id']) ->where('id', $restore['id'])
->first(); ->first();
// Restore item to home directory // Restore item to home directory
if ($request->has('to_home') && $request->to_home) { if ($request->has('to_home') && $request->to_home) {
$item->folder_id = 0; $item->folder_id = null;
$item->save(); $item->save();
} }
} }
+1 -1
View File
@@ -58,7 +58,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
// Trash // Trash
Route::group(['prefix' => 'trash'], function () { Route::group(['prefix' => 'trash'], function () {
Route::post('/restore-items', [TrashController::class, 'restore']); Route::post('/restore', [TrashController::class, 'restore']);
Route::delete('/dump', [TrashController::class, 'clear']); Route::delete('/dump', [TrashController::class, 'clear']);
}); });
+44
View File
@@ -6,6 +6,7 @@ use App\Models\File;
use App\Models\Folder; use App\Models\Folder;
use App\Models\User; use App\Models\User;
use App\Services\SetupService; use App\Services\SetupService;
use Carbon\Carbon;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Http\UploadedFile; use Illuminate\Http\UploadedFile;
use Laravel\Sanctum\Sanctum; use Laravel\Sanctum\Sanctum;
@@ -22,6 +23,49 @@ class TrashTest extends TestCase
$this->setup = app()->make(SetupService::class); $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 * @test
*/ */