assertStatus(200) ->assertSet('hasSearched', false) ->assertDontSee('Stations Nearby'); }); it('shows station cards after stations-found event', function () { $station = [ 'station_id' => 'abc123', 'name' => 'BP Garage', 'brand' => 'BP', 'is_supermarket' => false, 'address' => '1 High Street', 'postcode' => 'SW1A 1AA', 'lat' => 51.5074, 'lng' => -0.1278, 'distance_km' => 1.5, 'fuel_type' => 'e10', 'price_pence' => 14390, 'price' => 143.9, 'price_updated_at' => '2026-04-05T08:00:00.000Z', 'price_classification' => 'current', 'price_classification_label' => 'Current', ]; $meta = ['count' => 1, 'lowest_pence' => 14390, 'avg_pence' => 14390.0]; Livewire::test(StationList::class) ->dispatch('stations-found', results: [$station], meta: $meta, prediction: null, radius: 5) ->assertSet('hasSearched', true) ->assertSee('Stations Nearby') ->assertSee('BP Garage') ->assertSee('1 Result'); }); it('shows empty state message when stations-found has no results', function () { Livewire::test(StationList::class) ->dispatch('stations-found', results: [], meta: ['count' => 0], prediction: null, radius: 5) ->assertSet('hasSearched', true) ->assertSee('No stations found'); }); it('updates results when stations-found fires again', function () { $station = [ 'station_id' => 'abc123', 'name' => 'BP Garage', 'brand' => 'BP', 'is_supermarket' => false, 'address' => '1 High Street', 'postcode' => 'SW1A 1AA', 'lat' => 51.5074, 'lng' => -0.1278, 'distance_km' => 1.5, 'fuel_type' => 'e10', 'price_pence' => 14390, 'price' => 143.9, 'price_updated_at' => '2026-04-05T08:00:00.000Z', 'price_classification' => 'current', 'price_classification_label' => 'Current', ]; Livewire::test(StationList::class) ->dispatch('stations-found', results: [$station], meta: ['count' => 1], prediction: null, radius: 5) ->assertSee('BP Garage') ->dispatch('stations-found', results: [], meta: ['count' => 0], prediction: null, radius: 5) ->assertDontSee('BP Garage'); });