count(3)->create(); }); it('returns 200 OK for default inco-sheets list request', function (): void { // GIVEN /** @var \Tests\TestCase $test */ $test = $this; // WHEN $response = $test->getJson('/api/v1/inco-sheets'); // THEN $response->assertStatus(200); $response->assertJsonStructure([ 'incoSheets', 'pagination' => [ 'page', 'pageSize', 'totalItems', 'totalPages', 'links', ], ]); }); it('returns 200 OK for page and pageSize pagination query', function (): void { // GIVEN /** @var \Tests\TestCase $test */ $test = $this; // WHEN $response = $test->getJson('/api/v1/inco-sheets?page=1&pageSize=2'); // THEN $response->assertStatus(200); $response->assertJsonPath('pagination.pageSize', 2); }); it('returns 200 OK for offset and limit pagination query', function (): void { // GIVEN /** @var \Tests\TestCase $test */ $test = $this; // WHEN $response = $test->getJson('/api/v1/inco-sheets?offset=0&limit=2'); // THEN $response->assertStatus(200); $response->assertJsonPath('pagination.pageSize', 2); }); it('returns 200 OK for sorting query parameters', function (string $sortBy, string $direction): void { // GIVEN /** @var \Tests\TestCase $test */ $test = $this; // WHEN $response = $test->getJson("/api/v1/inco-sheets?sortBy={$sortBy}&sortDirection={$direction}"); // THEN $response->assertStatus(200); })->with([ ['incoSheetId', 'Ascending'], ['createdAt', 'Descending'], ['updatedAt', 'Ascending'], ]); it('returns 200 OK for short projection query', function (): void { // GIVEN /** @var \Tests\TestCase $test */ $test = $this; // WHEN $response = $test->getJson('/api/v1/inco-sheets?short=true'); // THEN $response->assertStatus(200); $response->assertJsonStructure([ 'incoSheets' => [ '*' => [ 'id', 'name', 'label', ], ], ]); }); });