it_reject_team_folder_invite

This commit is contained in:
Peter Papp
2021-08-24 13:39:05 +02:00
parent d53a4964ae
commit 60f0f3c329
3 changed files with 58 additions and 17 deletions

View File

@@ -1,8 +1,10 @@
<?php <?php
use Domain\Teams\Controllers\AcceptTeamFolderInvitationController; use Domain\Teams\Controllers\InvitationsController;
use Domain\Teams\Controllers\TeamFoldersController; use Domain\Teams\Controllers\TeamFoldersController;
Route::apiResource('/team-folders', TeamFoldersController::class);
Route::post('/invitations/{invitation}', AcceptTeamFolderInvitationController::class); Route::apiResource('/invitations', InvitationsController::class)
->only('destroy', 'update');
Route::apiResource('/team-folders', TeamFoldersController::class);

View File

@@ -1,20 +1,18 @@
<?php <?php
namespace Domain\Teams\Controllers; namespace Domain\Teams\Controllers;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Users\Models\User; use App\Users\Models\User;
use Domain\Teams\Models\TeamFoldersInvitation; use Domain\Teams\Models\TeamFoldersInvitation;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
class AcceptTeamFolderInvitationController extends Controller class InvitationsController extends Controller
{ {
public function __invoke(TeamFoldersInvitation $invitation): Response public function update(
{ TeamFoldersInvitation $invitation
): Response {
$user = User::where('email', $invitation->email) $user = User::where('email', $invitation->email)
->firstOrFail(); ->firstOrFail();
@@ -29,6 +27,17 @@ class AcceptTeamFolderInvitationController extends Controller
'permission' => 'can-edit', '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);
} }
} }

View File

@@ -96,26 +96,56 @@ class TeamsTest extends TestCase
$this $this
->actingAs($member) ->actingAs($member)
->postJson("/api/teams/invitations/{$invitation->id}") ->putJson("/api/teams/invitations/{$invitation->id}")
->assertCreated(); ->assertNoContent();
$this $this
->assertDatabaseHas('team_folders_invitations', [
'folder_id' => $folder->id,
'status' => 'accepted',
])
->assertDatabaseHas('team_folder_members', [ ->assertDatabaseHas('team_folder_members', [
'folder_id' => $folder->id, 'folder_id' => $folder->id,
'member_id' => $member->id, 'member_id' => $member->id,
'permission' => 'can-edit', 'permission' => 'can-edit',
])
->assertDatabaseHas('team_folders_invitations', [
'folder_id' => $folder->id,
'status' => 'accepted',
]); ]);
} }
/** /**
* * @test
*/ */
public function it_reject_team_folder_invite() 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,
]);
} }
/** /**