Co nowego: - Wsparcie Active Directory dla LDAP (obok LLDAP/OpenLDAP), przełącznik typu katalogu w Admin > Integracje. - Wyszukiwarka klientów dla operatora (Operator > Klienci). - Stronicowanie kolejki operatora (50/stronę) i dashboardu klienta (20/stronę). - Globalna wyszukiwarka zgłoszeń (Ctrl+K/Cmd+K) z operatorami w stylu Gmaila (od:, temat:, treść:, numer:), plus przycisk "Szukaj" w panelu bocznym. - Ostatnio przeglądane zgłoszenia w panelu bocznym operatora. - Przeprojektowany pasek nawigacji: suwak Klient/Operator/Administrator zamiast rozwijanego menu, bogatsze menu profilu (nazwa/e-mail/role), dynamiczne tytuły kart przeglądarki na każdej podstronie. - Narzędzie do jednorazowego importu historii zgłoszeń z Heska 3.x (scripts/hesk-import/). - Poprawka: paginacja pokazywała surowe klucze tłumaczeń zamiast tekstu (brakujący lang/pl/pagination.php). Zaktualizowana dokumentacja: README, CLAUDE.md, install.md, ARCHITECTURE.md, CHANGELOG.md, wiki/*. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
47 lines
2.2 KiB
PHP
47 lines
2.2 KiB
PHP
<?php
|
|
|
|
use App\Models\User;
|
|
use Illuminate\Testing\TestResponse;
|
|
|
|
function assertTitle(TestResponse $response, string $expectedContext): void
|
|
{
|
|
$response->assertOk();
|
|
preg_match('#<title>(.*?)</title>#s', $response->getContent(), $m);
|
|
expect($m[1] ?? null)->toBe($expectedContext.' — Servicedesk');
|
|
}
|
|
|
|
test('login and landing pages get a page-specific title', function () {
|
|
assertTitle($this->get('/login'), 'Logowanie');
|
|
assertTitle($this->get('/'), 'Zgłoś problem');
|
|
});
|
|
|
|
test('client pages carry a distinct, ticket-specific title', function () {
|
|
seedStatusesAndPriorities();
|
|
$client = User::query()->create(['name' => 'Client', 'email' => 'title-client@example.com', 'roles' => ['client']]);
|
|
$ticket = makeTicket(['number' => '6001', 'subject' => 'Drukarka nie działa', 'customer_id' => $client->id, 'email' => $client->email]);
|
|
|
|
assertTitle($this->actingAs($client)->get('/client'), 'Moje zgłoszenia');
|
|
assertTitle($this->actingAs($client)->get('/client/new'), 'Nowe zgłoszenie');
|
|
assertTitle($this->actingAs($client)->get(route('client.ticket', $ticket)), '#6001 — Drukarka nie działa');
|
|
});
|
|
|
|
test('operator queue title reflects the currently selected queue', function () {
|
|
seedStatusesAndPriorities();
|
|
$operator = operatorUser('title-operator@example.com');
|
|
$ticket = makeTicket(['number' => '6101', 'subject' => 'Awaria monitora']);
|
|
|
|
assertTitle($this->actingAs($operator)->get('/operator'), 'Otwarte');
|
|
assertTitle($this->actingAs($operator)->get('/operator?queue=mine'), 'Moje zgłoszenia');
|
|
assertTitle($this->actingAs($operator)->get('/operator/new'), 'Nowe zgłoszenie');
|
|
assertTitle($this->actingAs($operator)->get('/operator/stats'), 'Statystyki');
|
|
assertTitle($this->actingAs($operator)->get('/operator/clients'), 'Klienci');
|
|
assertTitle($this->actingAs($operator)->get(route('operator.ticket', $ticket)), '#6101 — Awaria monitora');
|
|
});
|
|
|
|
test('admin panel title reflects the currently selected tab', function () {
|
|
$admin = adminUser();
|
|
|
|
assertTitle($this->actingAs($admin)->get('/admin'), 'Kategorie');
|
|
assertTitle($this->actingAs($admin)->get('/admin?tab=users'), 'Użytkownicy');
|
|
});
|