count(3)->create(); $response = $this->get(route('yoga.index')); $response->assertOk(); $response->assertViewHas('poses', function ($poses) { return $poses->total() === 3; }); } public function test_index_can_filter_by_category(): void { $core = YogaCategory::factory()->create(['name' => 'Core Yoga']); $balance = YogaCategory::factory()->create(['name' => 'Balance Yoga']); $corePose = YogaPose::factory()->create(['category_id' => $core->id]); YogaPose::factory()->create(['category_id' => $balance->id]); $response = $this->get(route('yoga.index', ['category' => $core->id])); $response->assertOk(); $response->assertViewHas('poses', function ($poses) use ($corePose) { return $poses->total() === 1 && $poses->first()->id === $corePose->id; }); } public function test_show_displays_pose(): void { $pose = YogaPose::factory()->create(['english_name' => 'Downward Dog']); $response = $this->get(route('yoga.show', $pose->slug)); $response->assertOk(); $response->assertSee('Downward Dog'); } public function test_show_returns_404_for_unknown_slug(): void { $response = $this->get('/yoga/does-not-exist'); $response->assertNotFound(); } }