nimuli/tests/Feature/Livewire/ToasterTest.php

54 lines
1.6 KiB
PHP

<?php
use App\Livewire\Components\Toaster;
use Livewire\Livewire;
it('renders toaster with empty toast list', function () {
Livewire::test(Toaster::class)
->assertSet('toasts', [])
->assertOk();
});
it('adds a success toast via toast event', function () {
Livewire::test(Toaster::class)
->dispatch('toast', message: 'Link erstellt', type: 'success')
->assertCount('toasts', 1)
->assertSee('Link erstellt');
});
it('adds an error toast via toast event', function () {
Livewire::test(Toaster::class)
->dispatch('toast', message: 'Fehler beim Speichern', type: 'error')
->assertCount('toasts', 1)
->assertSee('Fehler beim Speichern');
});
it('adds multiple toasts', function () {
Livewire::test(Toaster::class)
->dispatch('toast', message: 'First', type: 'success')
->dispatch('toast', message: 'Second', type: 'error')
->assertCount('toasts', 2);
});
it('dismisses a toast by id', function () {
$toaster = Livewire::test(Toaster::class)
->dispatch('toast', message: 'Wird gelöscht', type: 'info');
$id = $toaster->get('toasts')[0]['id'];
$toaster->call('dismiss', $id)
->assertCount('toasts', 0);
});
it('toast has required fields', function () {
$toaster = Livewire::test(Toaster::class)
->dispatch('toast', message: 'Test', type: 'warning');
$toast = $toaster->get('toasts')[0];
expect($toast)->toHaveKeys(['id', 'message', 'type', 'duration'])
->and($toast['message'])->toBe('Test')
->and($toast['type'])->toBe('warning')
->and($toast['duration'])->toBeInt()->toBeGreaterThan(0);
});