From 60f0f3c329f36f7102bebf8c7771020f2bcd7f29 Mon Sep 17 00:00:00 2001 From: Peter Papp Date: Tue, 24 Aug 2021 13:39:05 +0200 Subject: [PATCH] it_reject_team_folder_invite --- routes/teams.php | 8 ++-- ...ntroller.php => InvitationsController.php} | 23 +++++++--- tests/Domain/Teams/TeamsTest.php | 44 ++++++++++++++++--- 3 files changed, 58 insertions(+), 17 deletions(-) rename src/Domain/Teams/Controllers/{AcceptTeamFolderInvitationController.php => InvitationsController.php} (61%) diff --git a/routes/teams.php b/routes/teams.php index c98c0ce5..e78b53d1 100644 --- a/routes/teams.php +++ b/routes/teams.php @@ -1,8 +1,10 @@ only('destroy', 'update'); + +Route::apiResource('/team-folders', TeamFoldersController::class); diff --git a/src/Domain/Teams/Controllers/AcceptTeamFolderInvitationController.php b/src/Domain/Teams/Controllers/InvitationsController.php similarity index 61% rename from src/Domain/Teams/Controllers/AcceptTeamFolderInvitationController.php rename to src/Domain/Teams/Controllers/InvitationsController.php index 18862ffb..05d5d8c9 100644 --- a/src/Domain/Teams/Controllers/AcceptTeamFolderInvitationController.php +++ b/src/Domain/Teams/Controllers/InvitationsController.php @@ -1,20 +1,18 @@ email) ->firstOrFail(); @@ -29,6 +27,17 @@ class AcceptTeamFolderInvitationController extends Controller 'permission' => 'can-edit', ]); - return response('Done', 201); + return response('Done', 204); + } + + public function destroy( + TeamFoldersInvitation $invitation + ): Response { + + $invitation->update([ + 'status' => 'rejected', + ]); + + return response('Done', 204); } } \ No newline at end of file diff --git a/tests/Domain/Teams/TeamsTest.php b/tests/Domain/Teams/TeamsTest.php index 032d6cc6..e3cb199f 100644 --- a/tests/Domain/Teams/TeamsTest.php +++ b/tests/Domain/Teams/TeamsTest.php @@ -96,26 +96,56 @@ class TeamsTest extends TestCase $this ->actingAs($member) - ->postJson("/api/teams/invitations/{$invitation->id}") - ->assertCreated(); + ->putJson("/api/teams/invitations/{$invitation->id}") + ->assertNoContent(); $this + ->assertDatabaseHas('team_folders_invitations', [ + 'folder_id' => $folder->id, + 'status' => 'accepted', + ]) ->assertDatabaseHas('team_folder_members', [ 'folder_id' => $folder->id, 'member_id' => $member->id, 'permission' => 'can-edit', - ]) - ->assertDatabaseHas('team_folders_invitations', [ - 'folder_id' => $folder->id, - 'status' => 'accepted', ]); } /** - * + * @test */ public function it_reject_team_folder_invite() { + $member = User::factory(User::class) + ->create([ + 'email' => 'john@internal.com', + ]); + + $folder = Folder::factory() + ->create(); + + $invitation = TeamFoldersInvitation::factory() + ->create([ + 'folder_id' => $folder->id, + 'email' => $member->email, + 'status' => 'pending', + 'permission' => 'can-edit', + ]); + + $this + ->actingAs($member) + ->deleteJson("/api/teams/invitations/{$invitation->id}") + ->assertNoContent(); + + $this + ->assertDatabaseHas('team_folders_invitations', [ + 'folder_id' => $folder->id, + 'status' => 'rejected', + ]) + ->assertDatabaseMissing('team_folder_members', [ + 'folder_id' => $folder->id, + 'member_id' => $member->id, + ]); } /**