74 lines
2.5 KiB
PHP
74 lines
2.5 KiB
PHP
<?php
|
|
|
|
use App\Livewire\Public\Fuel\StationList;
|
|
use Livewire\Livewire;
|
|
|
|
it('renders empty state before any search', function () {
|
|
Livewire::test(StationList::class)
|
|
->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)
|
|
->set('search', 'ZZ99 9ZZ')
|
|
->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');
|
|
});
|