- 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

View File

@@ -84,15 +84,15 @@ class EditItemsController extends Controller
* Rename item for authenticated master|editor user
*
* @param RenameItemRequest $request
* @param $unique_id
* @param $id
* @return mixed
* @throws Exception
*/
public function user_rename_item(RenameItemRequest $request, $unique_id)
public function user_rename_item(RenameItemRequest $request, $id)
{
// Demo preview
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
@@ -105,7 +105,7 @@ class EditItemsController extends Controller
$shared = get_shared($request->cookie('shared_token'));
// Get file|folder item
$item = get_item($request->type, $unique_id, Auth::id());
$item = get_item($request->type, $id);
// Check access to requested directory
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->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
return Editor::rename_item($request, $unique_id);
return Editor::rename_item($request, $id);
}
/**

View File

@@ -191,25 +191,12 @@ function is_demo($user_id)
* Get folder or file item
*
* @param $type
* @param $unique_id
* @param $user_id
* @param $id
* @return \Illuminate\Database\Eloquent\Builder|Model
*/
function get_item($type, $unique_id, $user_id)
function get_item($type, $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();
return ('App\\Models\\' . ucfirst($type))::find($id);
}
/**

View File

@@ -25,8 +25,8 @@ class CreateFolderRequest extends FormRequest
public function rules()
{
return [
'parent_id' => 'required|integer',
'name' => 'string',
'parent_id' => 'nullable|uuid',
'name' => 'required|string',
];
}
}

View File

@@ -3,12 +3,12 @@
namespace App\Http\Tools;
use App;
use App\Share;
use App\File;
use App\Folder;
use App\Models\Folder;
use App\Models\Share;
use App\File as UserFile;
use App\Http\Requests\FileFunctions\RenameItemRequest;
use App\User;
use App\Zip;
use App\Models\User;
use App\Models\Zip;
use Aws\Exception\MultipartUploadException;
use Aws\S3\MultipartUploader;
use Carbon\Carbon;
@@ -222,15 +222,15 @@ class Editor
public static function create_folder($request, $shared = null)
{
// 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';
$user_id = is_null($shared) ? Auth::id() : $shared->user_id;
$unique_id = get_unique_id();
// Create folder
$folder = Folder::create([
'parent_id' => $request->parent_id,
'unique_id' => $unique_id,
'user_scope' => $user_scope,
'user_id' => $user_id,
'type' => 'folder',
@@ -308,7 +308,7 @@ class Editor
$child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id');
// Get children files
$files = File::onlyTrashed()
$files = UserFile::onlyTrashed()
->where('user_id', $user->id)
->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders]))
->get();
@@ -412,7 +412,7 @@ class Editor
} else {
// Move file under new folder
$item = File::where('user_id', $user_id)
$item = UserFile::where('user_id', $user_id)
->where('unique_id', $unique_id)
->firstOrFail();
@@ -523,7 +523,7 @@ class Editor
}
// Return new file
return File::create($options);
return UserFile::create($options);
}
}

View File

@@ -88,10 +88,10 @@ Route::group(['middleware' => ['auth:api', 'auth.shared', 'scope:visitor,editor'
});
// 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
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('/remove-item', [EditItemsController::class, 'user_delete_item']);
Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']);

View File

@@ -3,9 +3,9 @@
namespace Tests\Feature;
use App\Models\Folder;
use App\Models\User;
use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Foundation\Testing\WithFaker;
use Laravel\Sanctum\Sanctum;
use Tests\TestCase;
class FolderTest extends TestCase
@@ -25,14 +25,57 @@ class FolderTest extends TestCase
]);
}
/**
* @test
*/
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()
{
$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()