assertSet('needsOnboarding', true) ->assertSee('Starting Value'); } public function test_initialise_creates_the_counter(): void { Livewire::test(Counter::class) ->set('value', 47) ->call('initialise') ->assertSet('needsOnboarding', false) ->assertSet('count', 47); $tracker = Tracker::first(); $this->assertNotNull($tracker); $this->assertSame(47, $tracker->count); $this->assertSame('Counter', $tracker->label); } public function test_a_counter_can_start_at_zero(): void { Livewire::test(Counter::class) ->set('value', 0) ->call('initialise') ->assertSet('needsOnboarding', false) ->assertSet('count', 0); $this->assertSame(0, Tracker::first()->count); } public function test_a_zero_count_does_not_reopen_onboarding(): void { Tracker::factory()->create(['count' => 0]); Livewire::test(Counter::class) ->assertSet('needsOnboarding', false); } public function test_initialise_rejects_a_negative_starting_value(): void { Livewire::test(Counter::class) ->set('value', -5) ->call('initialise') ->assertHasErrors('value') ->assertSet('needsOnboarding', true); $this->assertSame(0, Tracker::count()); } public function test_an_existing_counter_skips_onboarding(): void { Tracker::factory()->create(['count' => 9]); Livewire::test(Counter::class) ->assertSet('needsOnboarding', false) ->assertSet('count', 9); } public function test_initialising_twice_does_not_create_a_second_counter(): void { $component = Livewire::test(Counter::class)->set('value', 5); Tracker::factory()->create(['count' => 12]); $component->call('initialise')->assertSet('count', 12); $this->assertSame(1, Tracker::count()); } }