From 9c7d7a336b73fb958c4877e2273717968465e993 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Thu, 4 Mar 2021 16:38:00 +0100 Subject: [PATCH] added it_get_all_users, it_get_single_user, it_get_user_storage_detail test --- app/Http/Controllers/Admin/UserController.php | 23 ++-- app/Http/Resources/UserStorageResource.php | 2 +- tests/Feature/AdminTest.php | 109 +++++++++++++++++- 3 files changed, 118 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 49f2582d..02e03c51 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -2,8 +2,8 @@ namespace App\Http\Controllers\Admin; -use App\File; -use App\Folder; +use App\Models\File; +use App\Models\Folder; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\ChangeRoleRequest; use App\Http\Requests\Admin\ChangeStorageCapacityRequest; @@ -14,18 +14,14 @@ use App\Http\Resources\UsersCollection; use App\Http\Resources\UserResource; use App\Http\Resources\UserStorageResource; use App\Http\Resources\UserSubscription; -use App\Http\Tools\Demo; use App\Services\StripeService; -use App\Share; -use App\User; -use App\UserSettings; +use App\Models\Share; +use App\Models\User; +use App\Models\UserSettings; use Illuminate\Contracts\Routing\ResponseFactory; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; -use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Password; -use Illuminate\Support\Str; use Storage; class UserController extends Controller @@ -68,10 +64,10 @@ class UserController extends Controller */ public function invoices($id) { - $user = User::find($id); - return new InvoiceCollection( - $this->stripe->getUserInvoices($user) + $this->stripe->getUserInvoices( + User::find($id) + ) ); } @@ -102,7 +98,8 @@ class UserController extends Controller public function users() { return new UsersCollection( - User::sortable(['created_at', 'DESC'])->paginate('20') + User::sortable(['created_at', 'DESC']) + ->paginate(20) ); } diff --git a/app/Http/Resources/UserStorageResource.php b/app/Http/Resources/UserStorageResource.php index f2499afd..a8897baf 100644 --- a/app/Http/Resources/UserStorageResource.php +++ b/app/Http/Resources/UserStorageResource.php @@ -2,7 +2,7 @@ namespace App\Http\Resources; -use App\File; +use App\Models\File; use ByteUnits\Metric; use Illuminate\Http\Resources\Json\JsonResource; diff --git a/tests/Feature/AdminTest.php b/tests/Feature/AdminTest.php index d342bc3c..14593671 100644 --- a/tests/Feature/AdminTest.php +++ b/tests/Feature/AdminTest.php @@ -47,10 +47,10 @@ class AdminTest extends TestCase $this->getJson('/api/admin/dashboard') ->assertStatus(200) ->assertExactJson([ - "license" => "Regular", + "license" => 'Regular', "app_version" => config('vuefilemanager.version'), "total_users" => 1, - "total_used_space" => "2.00MB", + "total_used_space" => '2.00MB', "total_premium_users" => 1, ]); } @@ -77,4 +77,109 @@ class AdminTest extends TestCase ]); }); } + + /** + * @test + */ + public function it_get_all_users() + { + $users = User::factory(User::class) + ->count(5) + ->create(['role' => 'user']); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + $users->each(function ($user) { + $this->getJson('/api/admin/users?page=1') + ->assertStatus(200) + ->assertJsonFragment([ + 'id' => $user->id, + ]); + }); + } + + /** + * @test + */ + public function it_get_single_user() + { + $user = User::factory(User::class) + ->create(['role' => 'user']); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + // TODO: pridat exactjson po refaktorovani userresource + $this->getJson("/api/admin/users/$user->id/detail") + ->assertStatus(200) + ->assertJsonFragment([ + 'id' => $user->id, + ]); + } + + /** + * @test + */ + public function it_get_user_storage_detail() + { + $user = User::factory(User::class) + ->create(['role' => 'user']); + + collect(['image', 'audio', 'video', 'pdf', 'zip']) + ->each(function ($mimetype) use ($user) { + File::factory(File::class) + ->create([ + 'user_id' => $user->id, + 'type' => $mimetype, + 'mimetype' => $mimetype, + 'filesize' => 1000000, + ]); + }); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + $this->getJson("/api/admin/users/$user->id/storage") + ->assertStatus(200) + ->assertExactJson([ + "data" => [ + "id" => $user->id, + "type" => "storage", + "attributes" => [ + "used" => "5.00MB", + "capacity" => "5GB", + "percentage" => 0.1, + ], + "meta" => [ + "images" => [ + "used" => '1.00MB', + "percentage" => 0.02, + ], + "audios" => [ + "used" => '1.00MB', + "percentage" => 0.02, + ], + "videos" => [ + "used" => '1.00MB', + "percentage" => 0.02, + ], + "documents" => [ + "used" => '1.00MB', + "percentage" => 0.02, + ], + "others" => [ + "used" => '1.00MB', + "percentage" => 0.02, + ] + ] + ] + ]); + } }