Przejdź do treści

Panel Klienta (AccessClientPanelPage)

Ścieżka: /panel-informacji-klienta/:id Dostęp: Publiczny — wymaga aktywnego tokenu sesji (Access Token)


TC-ACP-001 — Walidacja sesji przy wejściu

# Akcja Oczekiwany rezultat
1 Wejdź na stronę z aktywnym tokenem Strona ładuje się, dane klienta i rezerwacje są widoczne
2 Wejdź bez tokenu (czyste sessionStorage) Przekierowanie na stronę logowania
3 Wejdź z wygasłym tokenem (access_expires_at w przeszłości) Przekierowanie na stronę logowania
4 Wejdź z nieprawidłowym/sfałszowanym tokenem Backend odrzuca token → przekierowanie na stronę logowania

TC-ACP-002 — Dane klienta

# Akcja Oczekiwany rezultat
1 Zaloguj jako klient indywidualny Widoczne imię i nazwisko
2 Zaloguj jako klient firmowy (is_company = true) Widoczna nazwa firmy

TC-ACP-003 — Statystyki rezerwacji

# Akcja Oczekiwany rezultat
1 Zaloguj jako klient z rezerwacjami w różnych statusach Liczniki aktywnych i zakończonych rezerwacji są zgodne z danymi
2 Zaloguj jako klient bez rezerwacji Wszystkie liczniki = 0, kwota = 0
3 Sprawdź sumę wydatków Kwota „Łącznie wydano" = suma total_price wszystkich rezerwacji

TC-ACP-004 — Lista rezerwacji i paginacja

# Akcja Oczekiwany rezultat
1 Zaloguj jako klient z rezerwacjami Lista rezerwacji widoczna z poprawnymi danymi (nazwa, data, status, cena)
2 Zaloguj jako klient z > 10 rezerwacjami Wyświetlone 10 na stronie 1, paginacja działa poprawnie
3 Kliknij kartę rezerwacji Przekierowanie do widoku szczegółów tej rezerwacji
4 Zaloguj jako klient bez rezerwacji Komunikat o braku rezerwacji, brak błędów

TC-ACP-005 — Ostrzeżenie o wygasaniu sesji

# Akcja Oczekiwany rezultat
1 Ustaw access_expires_at = teraz + 9 minut, odśwież stronę Modal ostrzegawczy pojawia się automatycznie z czasem do wygaśnięcia i liczbą pozostałych przedłużeń
2 Sesja ma pełny TTL (2h) Modal nie pojawia się

TC-ACP-006 — Przedłużanie sesji

# Akcja Oczekiwany rezultat
1 Kliknij „Przedłuż sesję" gdy dostępne przedłużenia Sesja wydłużona o 1h, licznik przedłużeń spada o 1 (np. ⅔), sessionStorage zaktualizowany
2 Kliknij „Przedłuż sesję" gdy extensionsRemaining = 0 Przycisk nieaktywny — przedłużenie niemożliwe
3 Błąd API podczas przedłużania Sesja nie zostaje przedłużona, modal pozostaje otwarty

TC-ACP-007 — Wylogowanie

# Akcja Oczekiwany rezultat
1 Kliknij „Wyloguj" w modalu lub na stronie Token unieważniony na backendzie, sessionStorage wyczyszczony, przekierowanie na logowanie
2 Błąd API podczas wylogowania sessionStorage zostaje wyczyszczony mimo błędu, użytkownik przekierowany na logowanie
3 Po wylogowaniu kliknij „Wstecz" w przeglądarce Panel niedostępny — przekierowanie na logowanie

TC-ACP-008 — Spójność sesji przy wielu kartach

# Akcja Oczekiwany rezultat
1 Otwórz panel w dwóch kartach, wyloguj się w pierwszej, odśwież drugą Druga karta przekierowuje na logowanie