Przejdź do treści

Panel Trenera (AccessTrainerPanelPage)

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


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

# Akcja Oczekiwany rezultat
1 Wejdź na stronę z aktywnym tokenem trenera Strona ładuje się, dane trenera i harmonogram 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 tokenem klienta (nie trenera) Token odrzucony lub panel ładuje niepoprawne dane — zweryfikuj zachowanie
5 Wejdź z nieprawidłowym/sfałszowanym tokenem Backend odrzuca token → przekierowanie na stronę logowania

TC-ATP-002 — Dane trenera

# Akcja Oczekiwany rezultat
1 Zaloguj jako trener Widoczne imię, nazwisko i e-mail trenera z sesji
2 Sprawdź czas sesji TTL trenera = 1 godzina (krótszy niż klienta — 2h)

TC-ATP-003 — Lista activity items (harmonogram)

# Akcja Oczekiwany rezultat
1 Zaloguj jako trener z przypisanymi activity items Lista załadowana, widoczne: nazwa aktywności, data, godzina, poziom, dostępne miejsca
2 Zaloguj jako trener bez żadnych activity items Komunikat o braku danych, brak błędów
3 Sprawdź pozycję ze statusem is_canceled = true Pozycja oznaczona jako odwołana

TC-ATP-004 — Filtrowanie harmonogramu

# Akcja Oczekiwany rezultat
1 Filtruj po nazwie aktywności Lista zawiera tylko pozycje pasujące do nazwy
2 Filtruj po dacie Lista zawiera tylko pozycje z wybraną datą
3 Filtruj po poziomie (np. beginner) Lista zawiera tylko pozycje z wybranym poziomem
4 Filtruj po statusie odwołania (is_canceled) Lista zawiera tylko odwołane (lub aktywne) pozycje
5 Wyczyść filtry Lista powraca do stanu domyślnego (wszystkie pozycje, per_page: 10)

TC-ATP-005 — Paginacja

# Akcja Oczekiwany rezultat
1 Trener ma > 10 activity items Wyświetlone 10 na stronie 1, paginacja widoczna
2 Przejdź na stronę 2 Kolejne pozycje załadowane, filtry zachowane
3 Zastosuj filtr, przejdź na stronę 2, wyczyść filtr Powrót do strony 1 z pełną listą

TC-ATP-006 — 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 (1h) Modal nie pojawia się
3 Sesja wygaśnie samoistnie (timer co 30s) Po wygaśnięciu sesja wyczyszczona, przekierowanie na logowanie bez akcji użytkownika

TC-ATP-007 — 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 spada o 1 (np. ⅔), sessionStorage zaktualizowany, modal zamknięty
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-ATP-008 — Wylogowanie

# Akcja Oczekiwany rezultat
1 Kliknij „Zamknij panel trenera" Token unieważniony, sessionStorage wyczyszczony, przekierowanie na logowanie
2 Kliknij „Wyloguj" w modalu ostrzegawczym Jak wyżej
3 Błąd API podczas wylogowania sessionStorage wyczyszczony mimo błędu, użytkownik przekierowany na logowanie
4 Po wylogowaniu kliknij „Wstecz" w przeglądarce Panel niedostępny — przekierowanie na logowanie