create([ 'title' => 'M18B2 Artwork', 'slug' => 'm18b2-artwork', ]); $this->get(route('art.show', ['id' => $artwork->id, 'slug' => 'm18b2-artwork'])) ->assertOk(); $this->get(route('art.show', ['id' => $artwork->id, 'slug' => 'wrong-slug'])) ->assertRedirect(route('art.show', ['id' => $artwork->id, 'slug' => 'm18b2-artwork'])) ->assertHeader('Location', route('art.show', ['id' => $artwork->id, 'slug' => 'm18b2-artwork'])); $deleted = Artwork::factory()->create(); $deleted->delete(); $this->get(route('art.show', ['id' => $deleted->id, 'slug' => $deleted->slug])) ->assertStatus(410); $private = Artwork::factory()->private()->create(); $this->get(route('art.show', ['id' => $private->id, 'slug' => $private->slug])) ->assertForbidden(); $this->get(route('art.show', ['id' => 999999, 'slug' => 'missing'])) ->assertNotFound(); }); it('performs one primary artwork lookup on the public detail path', function (): void { $artwork = Artwork::factory()->create([ 'slug' => 'm18b2-query-regression', ]); $primaryLookups = 0; DB::listen(function ($query) use (&$primaryLookups): void { $sql = strtolower(preg_replace('/\s+/', ' ', $query->sql)); if (str_contains($sql, 'from "artworks"') && str_contains($sql, 'where "id" = ?') && str_contains($sql, 'limit 1')) { $primaryLookups++; } }); $this->get(route('art.show', ['id' => $artwork->id, 'slug' => $artwork->slug])) ->assertOk(); expect($primaryLookups)->toBe(1); }); it('keeps the authenticated artwork detail query count bounded', function (): void { $artwork = Artwork::factory()->create([ 'slug' => 'm18b2-auth-query-regression', ]); $viewer = User::factory()->create(); $queryCount = 0; DB::listen(function () use (&$queryCount): void { $queryCount++; }); $this->actingAs($viewer) ->get(route('art.show', ['id' => $artwork->id, 'slug' => $artwork->slug])) ->assertOk(); expect($queryCount)->toBeLessThanOrEqual(50); });