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

View File

@@ -43,10 +43,10 @@ class FavouriteController extends Controller
/**
* Remove folder from user favourites
*
* @param $unique_id
* @param $id
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function destroy($unique_id)
public function destroy($id)
{
// Get user
$user = Auth::user();
@@ -56,9 +56,9 @@ class FavouriteController extends Controller
}
// Remove folder from user favourites
$user->favourite_folders()->detach($unique_id);
$user->favourite_folders()->detach($id);
// Return updated favourites
return $user->favourite_folders;
return response($user->favourite_folders, 204);
}
}

View File

@@ -5,7 +5,7 @@ namespace App\Http\Tools;
use App;
use App\Models\Folder;
use App\Models\Share;
use App\File as UserFile;
use App\Models\File as UserFile;
use App\Http\Requests\FileFunctions\RenameItemRequest;
use App\Models\User;
use App\Models\Zip;
@@ -295,14 +295,14 @@ class Editor
$shared->delete();
}
// Remove folder from user favourites
DB::table('favourite_folder')
->where('folder_id', $folder->id)
->delete();
// Soft delete items
if (! $item['force_delete']) {
// Remove folder from user favourites
DB::table('favourite_folder')
->where('folder_id', $folder->id)
->delete();
// Soft delete folder record
$folder->delete();
}
@@ -311,12 +311,11 @@ class Editor
if ($item['force_delete']) {
// 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
$files = UserFile::onlyTrashed()
->where('user_id', $user->id)
->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders]))
->whereIn('folder_id', Arr::flatten([$id, $child_folders]))
->get();
// Remove all children files

View File

@@ -243,7 +243,8 @@ class User extends Authenticatable
*/
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');
}
/**

View File

@@ -64,7 +64,7 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
// Favourites
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']);
});

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
*/
@@ -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()