Files
solidtime/tests/Unit/Endpoint/Api/V1/UserMembershipEndpointTest.php
2024-08-05 16:49:24 +02:00

44 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace Tests\Unit\Endpoint\Api\V1;
use App\Models\Member;
use App\Models\Organization;
use Laravel\Passport\Passport;
class UserMembershipEndpointTest extends ApiEndpointTestAbstract
{
public function test_my_members_fails_when_not_authenticated(): void
{
// Act
$response = $this->getJson(route('api.v1.users.memberships.my-memberships'));
// Assert
$response->assertUnauthorized();
$response->assertJson(['message' => 'Unauthenticated.']);
}
public function test_my_members_returns_information_about_the_organization_membership_of_the_current_user(): void
{
// Arrange
$data = $this->createUserWithPermission();
$otherOrganization = Organization::factory()->create();
$otherMember = Member::factory()->forOrganization($otherOrganization)->forUser($data->user)->create();
Passport::actingAs($data->user);
// Act
$response = $this->getJson(route('api.v1.users.memberships.my-memberships'));
// Assert
$response->assertSuccessful();
$response->assertJsonCount(2, 'data');
$otherMemberResponse = collect($response->json('data'))->where('id', '=', $otherMember->getKey())->first();
$this->assertNotNull($otherMemberResponse);
$this->assertSame($otherMember->organization->getKey(), $otherMemberResponse['organization']['id']);
$memberResponse = collect($response->json('data'))->where('id', '=', $data->member->getKey())->first();
$this->assertNotNull($memberResponse);
}
}