'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 visible-by-default column except one, then try to hide the last one too. foreach ((new Queue)->visibleColumns 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']); });