- added folder test methods

This commit is contained in:
Peter Papp
2021-02-27 09:22:23 +01:00
parent dfb809acee
commit 6736afaefb
6 changed files with 69 additions and 39 deletions
@@ -84,15 +84,15 @@ class EditItemsController extends Controller
* Rename item for authenticated master|editor user * Rename item for authenticated master|editor user
* *
* @param RenameItemRequest $request * @param RenameItemRequest $request
* @param $unique_id * @param $id
* @return mixed * @return mixed
* @throws Exception * @throws Exception
*/ */
public function user_rename_item(RenameItemRequest $request, $unique_id) public function user_rename_item(RenameItemRequest $request, $id)
{ {
// Demo preview // Demo preview
if (is_demo(Auth::id())) { if (is_demo(Auth::id())) {
return Demo::rename_item($request, $unique_id); return Demo::rename_item($request, $id);
} }
// Check permission to rename item for authenticated editor // Check permission to rename item for authenticated editor
@@ -105,7 +105,7 @@ class EditItemsController extends Controller
$shared = get_shared($request->cookie('shared_token')); $shared = get_shared($request->cookie('shared_token'));
// Get file|folder item // Get file|folder item
$item = get_item($request->type, $unique_id, Auth::id()); $item = get_item($request->type, $id);
// Check access to requested directory // Check access to requested directory
if ($request->type === 'folder') { if ($request->type === 'folder') {
@@ -118,11 +118,11 @@ class EditItemsController extends Controller
// If request have a change folder icon values set the folder icon // If request have a change folder icon values set the folder icon
if ($request->type === 'folder' && $request->filled('folder_icon')) { if ($request->type === 'folder' && $request->filled('folder_icon')) {
Editor::set_folder_icon($request->folder_icon, $unique_id); Editor::set_folder_icon($request->folder_icon, $id);
} }
// Rename Item // Rename Item
return Editor::rename_item($request, $unique_id); return Editor::rename_item($request, $id);
} }
/** /**
+3 -16
View File
@@ -191,25 +191,12 @@ function is_demo($user_id)
* Get folder or file item * Get folder or file item
* *
* @param $type * @param $type
* @param $unique_id * @param $id
* @param $user_id
* @return \Illuminate\Database\Eloquent\Builder|Model * @return \Illuminate\Database\Eloquent\Builder|Model
*/ */
function get_item($type, $unique_id, $user_id) function get_item($type, $id)
{ {
return ('App\\Models\\' . ucfirst($type))::find($id);
if ($type === 'folder') {
// Return folder item
return Folder::where('unique_id', $unique_id)
->where('user_id', $user_id)
->firstOrFail();
}
// Return file item
return File::where('unique_id', $unique_id)
->where('user_id', $user_id)
->firstOrFail();
} }
/** /**
@@ -25,8 +25,8 @@ class CreateFolderRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'parent_id' => 'required|integer', 'parent_id' => 'nullable|uuid',
'name' => 'string', 'name' => 'required|string',
]; ];
} }
} }
+11 -11
View File
@@ -3,12 +3,12 @@
namespace App\Http\Tools; namespace App\Http\Tools;
use App; use App;
use App\Share; use App\Models\Folder;
use App\File; use App\Models\Share;
use App\Folder; use App\File as UserFile;
use App\Http\Requests\FileFunctions\RenameItemRequest; use App\Http\Requests\FileFunctions\RenameItemRequest;
use App\User; use App\Models\User;
use App\Zip; use App\Models\Zip;
use Aws\Exception\MultipartUploadException; use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader; use Aws\S3\MultipartUploader;
use Carbon\Carbon; use Carbon\Carbon;
@@ -222,15 +222,15 @@ class Editor
public static function create_folder($request, $shared = null) public static function create_folder($request, $shared = null)
{ {
// Get variables // Get variables
$user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor'; //$user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor';
$user_scope = is_null($shared) ? 'master' : 'editor';
$name = $request->has('name') ? $request->input('name') : 'New Folder'; $name = $request->has('name') ? $request->input('name') : 'New Folder';
$user_id = is_null($shared) ? Auth::id() : $shared->user_id; $user_id = is_null($shared) ? Auth::id() : $shared->user_id;
$unique_id = get_unique_id();
// Create folder // Create folder
$folder = Folder::create([ $folder = Folder::create([
'parent_id' => $request->parent_id, 'parent_id' => $request->parent_id,
'unique_id' => $unique_id,
'user_scope' => $user_scope, 'user_scope' => $user_scope,
'user_id' => $user_id, 'user_id' => $user_id,
'type' => 'folder', 'type' => 'folder',
@@ -308,7 +308,7 @@ class Editor
$child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id'); $child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id');
// Get children files // Get children files
$files = File::onlyTrashed() $files = UserFile::onlyTrashed()
->where('user_id', $user->id) ->where('user_id', $user->id)
->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders])) ->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders]))
->get(); ->get();
@@ -412,7 +412,7 @@ class Editor
} else { } else {
// Move file under new folder // Move file under new folder
$item = File::where('user_id', $user_id) $item = UserFile::where('user_id', $user_id)
->where('unique_id', $unique_id) ->where('unique_id', $unique_id)
->firstOrFail(); ->firstOrFail();
@@ -523,7 +523,7 @@ class Editor
} }
// Return new file // Return new file
return File::create($options); return UserFile::create($options);
} }
} }
+2 -2
View File
@@ -88,10 +88,10 @@ Route::group(['middleware' => ['auth:api', 'auth.shared', 'scope:visitor,editor'
}); });
// User master,editor routes // User master,editor routes
Route::group(['middleware' => ['auth:api', 'auth.shared', 'auth.master', 'scope:master,editor']], function () { Route::group(['middleware' => ['auth:sanctum']], function () {
// Edit items // Edit items
Route::patch('/rename-item/{unique_id}', [EditItemsController::class, 'user_rename_item']); Route::patch('/rename/{id}', [EditItemsController::class, 'user_rename_item']);
Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']); Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']);
Route::post('/remove-item', [EditItemsController::class, 'user_delete_item']); Route::post('/remove-item', [EditItemsController::class, 'user_delete_item']);
Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']); Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']);
+45 -2
View File
@@ -3,9 +3,9 @@
namespace Tests\Feature; namespace Tests\Feature;
use App\Models\Folder; use App\Models\Folder;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\RefreshDatabase; use Laravel\Sanctum\Sanctum;
use Illuminate\Foundation\Testing\WithFaker;
use Tests\TestCase; use Tests\TestCase;
class FolderTest extends TestCase class FolderTest extends TestCase
@@ -25,14 +25,57 @@ class FolderTest extends TestCase
]); ]);
} }
/**
* @test
*/
public function it_create_new_folder() public function it_create_new_folder()
{ {
$user = User::factory(User::class)
->create();
Sanctum::actingAs($user);
// TODO: pridat do api skupiny
$this->postJson('/api/create-folder', [
'name' => 'New Folder',
'parent_id' => null,
])
->assertStatus(201)
->assertJsonFragment([
'name' => 'New Folder',
]);
$this->assertDatabaseHas('folders', [
'name' => 'New Folder'
]);
} }
/**
* @test
*/
public function it_rename_folder() public function it_rename_folder()
{ {
$folder = Folder::factory(Folder::class)
->create();
$user = User::factory(User::class)
->create();
Sanctum::actingAs($user);
// TODO: pridat do api skupiny
$this->patchJson("/api/rename/{$folder->id}", [
'name' => 'Renamed Folder',
'type' => 'folder',
])
->assertStatus(200)
->assertJsonFragment([
'name' => 'Renamed Folder',
]);
$this->assertDatabaseHas('folders', [
'name' => 'Renamed Folder'
]);
} }
public function it_set_folder_emoji() public function it_set_folder_emoji()