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
use Domain\Teams\Controllers\AcceptTeamFolderInvitationController;
use Domain\Teams\Controllers\InvitationsController;
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
namespace Domain\Teams\Controllers;
use App\Http\Controllers\Controller;
use App\Users\Models\User;
use Domain\Teams\Models\TeamFoldersInvitation;
use Illuminate\Http\Response;
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)
->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);
}
}

View File

@@ -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,
]);
}
/**