49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?php
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
namespace Tests\Integration;
|
|
|
|
|
|
|
|
use Tests\Support\ApiTestCase;
|
|
|
|
use Tests\Support\DatabaseFixture;
|
|
|
|
|
|
|
|
final class ClientsTest extends ApiTestCase
|
|
|
|
{
|
|
|
|
public function testRequiresAuth(): void
|
|
|
|
{
|
|
|
|
$res = $this->api('GET', 'clients');
|
|
|
|
$this->assertLegacyAuthError($res, 401, 'Missing Bearer token');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testAdminSeesAllClients(): void
|
|
|
|
{
|
|
|
|
$this->loginAs(DatabaseFixture::ADMIN_USERNAME);
|
|
|
|
$res = $this->api('GET', 'clients');
|
|
|
|
$this->assertOk($res);
|
|
|
|
$codes = array_column($res['body']['data']['clients'], 'clientCode');
|
|
|
|
$this->assertContains(DatabaseFixture::CLIENT_COACH1, $codes);
|
|
|
|
$this->assertContains(DatabaseFixture::CLIENT_COACH2, $codes);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testSupervisorSeesOnlyTheirCoachesClients(): void
|
|
|
|
{
|
|
|
|
$this->loginAs(DatabaseFixture::SUPERVISOR1_USERNAME);
|
|
|
|
$res = $this->api('GET', 'clients');
|
|
|
|
$this->assertOk($res);
|
|
|
|
$codes = array_column($res['body']['data']['clients'], 'clientCode');
|
|
|
|
$this->assertContains(DatabaseFixture::CLIENT_COACH1, $codes);
|
|
|
|
$this->assertContains(DatabaseFixture::CLIENT_COACH1B, $codes);
|
|
|
|
$this->assertNotContains(DatabaseFixture::CLIENT_COACH2, $codes);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function testSupervisorCannotAssignClientToOtherSupervisorsCoach(): void
|
|
|
|
{
|
|
|
|
$this->loginAs(DatabaseFixture::SUPERVISOR1_USERNAME);
|
|
|
|
$res = $this->api('POST', 'clients', [
|
|
|
|
'clientCode' => 'CLIENT-NEW',
|
|
|
|
'coachID' => DatabaseFixture::COACH2_ID,
|
|
|
|
]);
|
|
|
|
$this->assertError($res, 'NOT_FOUND');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|