routeBase = "{$route_prefix}{$this->resourceName()}"; } /** * Create instances of the model being tested. */ protected function createInstances(int $count = 1): Collection { return $this->factory()->count($count)->create(); } /** * Provide a template for getting related data. */ protected function getRelatedData(Model $record, string $related, string $expectedType = NULL): void { $related_route = route( "{$this->routeBase}.relationships.{$related}", ['record' => $record] ); $response = $this->get($related_route); $response->assertOk(); $response->assertJsonFragment(['type' => $expectedType ?? $related]); } /** * Provide a template for included related data. */ protected function includeRelatedData(Model $record, string $related, string $expectedType = NULL): void { $related_route = route( "{$this->routeBase}.read", ['record' => $record, 'include' => $related] ); $response = $this->get($related_route); $response->assertOk(); $response->assertJsonPath('included.0.type', $expectedType ?? $related); } public function testCanGetIndex(): void { $this->createInstances(10); $index_url = route("$this->routeBase.index"); $response = $this->get($index_url); $response->assertOk(); $response->assertJson(['data' => true]); $response->assertJsonCount(10, 'data'); } }