added it_remove_folder_from_favourites, it_delete_multiple_folder_hardly

This commit is contained in:
Peter Papp
2021-02-27 11:03:04 +01:00
parent 5225673163
commit 97ade6c238
5 changed files with 75 additions and 19 deletions
@@ -43,10 +43,10 @@ class FavouriteController extends Controller
/** /**
* Remove folder from user favourites * Remove folder from user favourites
* *
* @param $unique_id * @param $id
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/ */
public function destroy($unique_id) public function destroy($id)
{ {
// Get user // Get user
$user = Auth::user(); $user = Auth::user();
@@ -56,9 +56,9 @@ class FavouriteController extends Controller
} }
// Remove folder from user favourites // Remove folder from user favourites
$user->favourite_folders()->detach($unique_id); $user->favourite_folders()->detach($id);
// Return updated favourites // Return updated favourites
return $user->favourite_folders; return response($user->favourite_folders, 204);
} }
} }
+6 -7
View File
@@ -5,7 +5,7 @@ namespace App\Http\Tools;
use App; use App;
use App\Models\Folder; use App\Models\Folder;
use App\Models\Share; use App\Models\Share;
use App\File as UserFile; use App\Models\File as UserFile;
use App\Http\Requests\FileFunctions\RenameItemRequest; use App\Http\Requests\FileFunctions\RenameItemRequest;
use App\Models\User; use App\Models\User;
use App\Models\Zip; use App\Models\Zip;
@@ -295,14 +295,14 @@ class Editor
$shared->delete(); $shared->delete();
} }
// Soft delete items
if (! $item['force_delete']) {
// Remove folder from user favourites // Remove folder from user favourites
DB::table('favourite_folder') DB::table('favourite_folder')
->where('folder_id', $folder->id) ->where('folder_id', $folder->id)
->delete(); ->delete();
// Soft delete items
if (! $item['force_delete']) {
// Soft delete folder record // Soft delete folder record
$folder->delete(); $folder->delete();
} }
@@ -311,12 +311,11 @@ class Editor
if ($item['force_delete']) { if ($item['force_delete']) {
// Get children folder ids // Get children folder ids
$child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id'); $child_folders = filter_folders_ids($folder->trashed_folders, 'id');
// Get children files // Get children files
$files = UserFile::onlyTrashed() $files = UserFile::onlyTrashed()
->where('user_id', $user->id) ->whereIn('folder_id', Arr::flatten([$id, $child_folders]))
->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders]))
->get(); ->get();
// Remove all children files // Remove all children files
+2 -1
View File
@@ -243,7 +243,8 @@ class User extends Authenticatable
*/ */
public function favourite_folders() public function favourite_folders()
{ {
return $this->belongsToMany(Folder::class, 'favourite_folder', 'user_id', 'folder_id', 'id', 'id')->with('shared:token,id,item_id,permission,protected,expire_in'); return $this->belongsToMany(Folder::class, 'favourite_folder', 'user_id', 'folder_id', 'id', 'id')
->with('shared:token,id,item_id,permission,protected,expire_in');
} }
/** /**
+1 -1
View File
@@ -64,7 +64,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
// Favourites // Favourites
Route::group(['prefix' => 'folders'], function () { Route::group(['prefix' => 'folders'], function () {
Route::delete('/favourites/{unique_id}', [FavouriteController::class, 'destroy']); Route::delete('/favourites/{id}', [FavouriteController::class, 'destroy']);
Route::post('/favourites', [FavouriteController::class, 'store']); Route::post('/favourites', [FavouriteController::class, 'store']);
}); });
+60 -4
View File
@@ -201,6 +201,32 @@ class FolderTest extends TestCase
]); ]);
} }
/**
* @test
*/
public function it_remove_folder_from_favourites()
{
$folder = Folder::factory(Folder::class)
->create();
$user = User::factory(User::class)
->create();
Sanctum::actingAs($user);
$user
->favourite_folders()
->attach($folder->id);
$this->deleteJson("/api/folders/favourites/$folder->id")
->assertStatus(204);
$this->assertDatabaseMissing('favourite_folder', [
'user_id' => $user->id,
'folder_id' => $folder->id,
]);
}
/** /**
* @test * @test
*/ */
@@ -252,14 +278,44 @@ class FolderTest extends TestCase
]); ]);
} }
public function it_delete_folder_softly() /**
* @test
*/
public function it_delete_multiple_folder_hardly()
{ {
$user = User::factory(User::class)
->create();
} $folder_1 = Folder::factory(Folder::class)
->create();
public function it_delete_folder_hardly() $folder_2 = Folder::factory(Folder::class)
{ ->create();
Sanctum::actingAs($user);
$this->postJson("/api/remove", [
'items' => [
[
'id' => $folder_1->id,
'type' => 'folder',
'force_delete' => true,
],
[
'id' => $folder_2->id,
'type' => 'folder',
'force_delete' => true,
],
],
])->assertStatus(204);
$this->assertDatabaseMissing('folders', [
'id' => $folder_1->id,
]);
$this->assertDatabaseMissing('folders', [
'id' => $folder_2->id,
]);
} }
public function it_delete_folder_with_their_content_within_softly() public function it_delete_folder_with_their_content_within_softly()