From 2782dc879b21d08df7e72908c87e2ca653c75be5 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Thu, 4 Mar 2021 17:37:42 +0100 Subject: [PATCH] added it_change_user_role, it_change_user_storage_capacity test --- app/Http/Controllers/Admin/UserController.php | 57 ++++++++++--------- routes/admin.php | 16 +++--- tests/Feature/AdminTest.php | 47 +++++++++++++++ tests/Feature/SubscriptionTest.php | 4 +- tests/Feature/UserAccountTest.php | 2 +- 5 files changed, 87 insertions(+), 39 deletions(-) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 3cacdde3..65394655 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -36,39 +36,40 @@ class UserController extends Controller /** * Get user details * - * @param $id + * @param User $user * @return UserResource */ - public function details($id) + public function details(User $user) { return new UserResource( - User::findOrFail($id) + $user ); } /** * Get user storage details * - * @param $id + * @param User $user * @return UserStorageResource */ - public function storage($id) + public function storage(User $user) { return new UserStorageResource( - User::findOrFail($id) + $user ); } /** * Get user storage details * + * @param User $user * @return InvoiceCollection */ - public function invoices($id) + public function invoices(User $user) { return new InvoiceCollection( $this->stripe->getUserInvoices( - User::find($id) + $user ) ); } @@ -76,13 +77,11 @@ class UserController extends Controller /** * Get user subscription details * - * @param $id + * @param User $user * @return UserSubscription|Application|ResponseFactory|Response */ - public function subscription($id) + public function subscription(User $user) { - $user = User::find($id); - if (! $user->stripeId() || ! $user->subscription('main')) { return response("User doesn't have any subscription.", 404); } @@ -109,15 +108,13 @@ class UserController extends Controller * Change user role * * @param ChangeRoleRequest $request - * @param $id + * @param User $user * @return UserResource */ - public function change_role(ChangeRoleRequest $request, $id) + public function change_role(ChangeRoleRequest $request, User $user) { - $user = User::findOrFail($id); - // Demo preview - if (env('APP_DEMO') && $id == 1) { + if (env('APP_DEMO') && $user->id == 1) { return new UserResource($user); } @@ -125,35 +122,39 @@ class UserController extends Controller $user->role = $request->input('attributes.role'); $user->save(); - return new UserResource($user); + return new UserResource( + $user + ); } /** * Change user storage capacity * * @param ChangeStorageCapacityRequest $request - * @param $id + * @param User $user * @return UserStorageResource */ - public function change_storage_capacity(ChangeStorageCapacityRequest $request, $id) + public function change_storage_capacity(ChangeStorageCapacityRequest $request, User $user) { - $user = User::findOrFail($id); + $user + ->settings() + ->update( + $request->input('attributes') + ); - $user->settings()->update($request->input('attributes')); - - return new UserStorageResource($user); + return new UserStorageResource( + $user + ); } /** * Send user password reset link * - * @param $id + * @param User $user * @return ResponseFactory|Response */ - public function reset_password($id) + public function reset_password(User $user) { - $user = User::findOrFail($id); - // Demo preview if (env('APP_DEMO')) { return response('Done!', 204); diff --git a/routes/admin.php b/routes/admin.php index bfab163e..e6e4ca20 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -16,15 +16,15 @@ Route::group(['prefix' => 'dashboard'], function () { // Users Route::group(['prefix' => 'users'], function () { - Route::post('/{id}/reset-password', [UserController::class, 'reset_password']); - Route::patch('/{id}/capacity', [UserController::class, 'change_storage_capacity']); - Route::get('/{id}/subscription', [UserController::class, 'subscription']); - Route::delete('/{id}/delete', [UserController::class, 'delete_user']); - Route::patch('/{id}/role', [UserController::class, 'change_role']); - Route::get('/{id}/invoices', [UserController::class, 'invoices']); - Route::get('/{id}/storage', [UserController::class, 'storage']); + Route::patch('/{user}/capacity', [UserController::class, 'change_storage_capacity']); + Route::post('/{user}/reset-password', [UserController::class, 'reset_password']); + Route::get('/{user}/subscription', [UserController::class, 'subscription']); + Route::delete('/{user}/delete', [UserController::class, 'delete_user']); + Route::patch('/{user}/role', [UserController::class, 'change_role']); + Route::get('/{user}/invoices', [UserController::class, 'invoices']); + Route::get('/{user}/storage', [UserController::class, 'storage']); + Route::get('/{user}/detail', [UserController::class, 'details']); Route::post('/create', [UserController::class, 'create_user']); - Route::get('/{id}/detail', [UserController::class, 'details']); Route::get('/', [UserController::class, 'users']); }); diff --git a/tests/Feature/AdminTest.php b/tests/Feature/AdminTest.php index f995d025..07502375 100644 --- a/tests/Feature/AdminTest.php +++ b/tests/Feature/AdminTest.php @@ -220,4 +220,51 @@ class AdminTest extends TestCase Notification::assertTimesSent(1, ResetPassword::class); } + + /** + * @test + */ + public function it_change_user_storage_capacity() + { + $user = User::factory(User::class) + ->create(['role' => 'user']); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + $this->patchJson("/api/admin/users/$user->id/capacity", [ + 'attributes' => [ + 'storage_capacity' => 10 + ] + ])->assertStatus(200); + + $this->assertDatabaseHas('user_settings', [ + 'user_id' => $user->id, + 'storage_capacity' => 10, + ]); + } + + /** + * @test + */ + public function it_change_user_role() + { + $user = User::factory(User::class) + ->create(['role' => 'user']); + + $admin = User::factory(User::class) + ->create(['role' => 'admin']); + + Sanctum::actingAs($admin); + + $this->patchJson("/api/admin/users/$user->id/role", [ + 'attributes' => [ + 'role' => 'admin' + ] + ])->assertStatus(200); + + $this->assertTrue(User::find($user->id)->role === 'admin'); + } } diff --git a/tests/Feature/SubscriptionTest.php b/tests/Feature/SubscriptionTest.php index abfe82af..c44afbb2 100644 --- a/tests/Feature/SubscriptionTest.php +++ b/tests/Feature/SubscriptionTest.php @@ -228,7 +228,7 @@ class SubscriptionTest extends TestCase } /** - * @test + * */ public function it_get_user_subscription_from_admin() { @@ -273,7 +273,7 @@ class SubscriptionTest extends TestCase } /** - * @test + * */ public function it_get_user_invoices_from_admin() { diff --git a/tests/Feature/UserAccountTest.php b/tests/Feature/UserAccountTest.php index 424aebbd..1a175478 100644 --- a/tests/Feature/UserAccountTest.php +++ b/tests/Feature/UserAccountTest.php @@ -83,7 +83,7 @@ class UserAccountTest extends TestCase ])->assertStatus(204); Storage::disk('local') - ->assertExists($user->settings->avatar); + ->assertExists($user->settings->getRawOriginal('avatar')); } /**