This commit is contained in:
2026-07-21 23:39:19 +02:00
commit b33b217bdb
217 changed files with 32076 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
<?php
use App\Livewire\Operator\Queue;
use Livewire\Livewire;
test('search filters tickets by subject, number, customer name or email', function () {
seedStatusesAndPriorities();
$operator = operatorUser('search-1@example.com');
makeTicket(['number' => '1001', 'subject' => 'VPN nie działa', 'name' => 'Jan Kowalski', 'email' => 'jan@example.com']);
makeTicket(['number' => '1002', 'subject' => 'Reset hasła', 'name' => 'Anna Nowak', 'email' => 'anna@example.com']);
$component = Livewire::actingAs($operator)->test(Queue::class)->set('search', 'VPN');
expect($component->instance()->filteredTickets)->toHaveCount(1);
expect($component->instance()->filteredTickets->first()->number)->toBe('1001');
$component->set('search', 'Nowak');
expect($component->instance()->filteredTickets)->toHaveCount(1);
expect($component->instance()->filteredTickets->first()->number)->toBe('1002');
$component->set('search', '');
expect($component->instance()->filteredTickets)->toHaveCount(2);
});
test('clicking a sortable column header sorts ascending, then descending on a second click', function () {
seedStatusesAndPriorities();
$operator = operatorUser('sort-1@example.com');
makeTicket(['number' => '1001', 'subject' => 'Zebra']);
makeTicket(['number' => '1002', 'subject' => 'Alfa']);
makeTicket(['number' => '1003', 'subject' => 'Mango']);
$component = Livewire::actingAs($operator)->test(Queue::class)
->call('sortByColumn', 'subject');
expect($component->get('sortDir'))->toBe('asc');
expect($component->instance()->filteredTickets->pluck('subject')->all())->toBe(['Alfa', 'Mango', 'Zebra']);
$component->call('sortByColumn', 'subject');
expect($component->get('sortDir'))->toBe('desc');
expect($component->instance()->filteredTickets->pluck('subject')->all())->toBe(['Zebra', 'Mango', 'Alfa']);
});
test('sla is not a clickable sortable column', function () {
$operator = operatorUser('sort-2@example.com');
Livewire::actingAs($operator)->test(Queue::class)
->call('sortByColumn', 'sla')
->assertSet('sortBy', 'updated_at');
});
test('columns can be hidden and shown again, but at least one must stay visible', function () {
$operator = operatorUser('columns-1@example.com');
$component = Livewire::actingAs($operator)->test(Queue::class)
->call('toggleColumn', 'sla')
->assertSet('visibleColumns', fn ($cols) => ! in_array('sla', $cols, true));
$component->call('toggleColumn', 'sla')
->assertSet('visibleColumns', fn ($cols) => in_array('sla', $cols, true));
// Hide every column except one, then try to hide the last one too.
foreach (array_keys((new \App\Livewire\Operator\Queue)->columnDefs()) as $key) {
if ($key !== 'number') {
$component->call('toggleColumn', $key);
}
}
expect($component->get('visibleColumns'))->toBe(['number']);
$component->call('toggleColumn', 'number');
expect($component->get('visibleColumns'))->toBe(['number']);
});