Tworzenie terminu zajęć (ActivityItemCreatePage)
Ścieżka: /panel/activity-item/create Dostęp: Zalogowany — role: Admin, Supervisor, Employee
| # | Akcja | Oczekiwany rezultat |
| 1 | Wejdź na stronę z parametrem ?activity_id=<id> w URL | Pole „Aktywność" wypełnione automatycznie podaną aktywnością |
| 2 | Wejdź na stronę bez parametru activity_id | Pole „Aktywność" puste — wymagany ręczny wybór |
TC-AIC-002 — Wymagane pola
| # | Akcja | Oczekiwany rezultat |
| 1 | Wyślij pusty formularz | Błędy walidacji przy: aktywności, dacie, godzinie start, godzinie koniec, poziomie, terminie rezerwacji, liczbie powtórzeń |
| 2 | Nie wybierz aktywności | Błąd walidacji przy polu aktywności |
| 3 | Zostaw datę pustą | Błąd walidacji przy polu daty |
| 4 | Zostaw godzinę startu pustą | Błąd walidacji przy polu godziny startu |
| 5 | Zostaw godzinę końca pustą | Błąd walidacji przy polu godziny końca |
| 6 | Ustaw godzinę końca wcześniejszą niż startu | Zweryfikuj czy backend zwraca błąd walidacji |
TC-AIC-003 — Wybór aktywności (server-side search)
| # | Akcja | Oczekiwany rezultat |
| 1 | Wpisz min. 4 znaki w pole wyszukiwania aktywności | Lista aktywności filtrowana po nazwie (max 50 wyników, tylko aktywne) |
| 2 | Wybierz aktywność z listy | Wartość zapisana w formularzu |
| 3 | Wpisz frazę bez wyników | Brak opcji na liście, komunikat o braku wyników |
TC-AIC-004 — Poziom zajęć
| # | Akcja | Oczekiwany rezultat |
| 1 | Wybierz poziom „Początkujący" | Wartość beginner przekazana do API |
| 2 | Wybierz poziom „Średniozaawansowany" | Wartość intermediate przekazana do API |
| 3 | Wybierz poziom „Zaawansowany" | Wartość advanced przekazana do API |
| 4 | Wybierz „Nie dotyczy" | Wartość not_applicable przekazana do API (domyślna) |
TC-AIC-005 — Logika powtarzania terminów
| # | Akcja | Oczekiwany rezultat |
| 1 | Ustaw how_many_repeat_times = 1 i wybierz datę poniedziałkową | Utworzony jeden termin dla podanej daty |
| 2 | Ustaw how_many_repeat_times = 4 i wybierz datę poniedziałkową | Backend tworzy 4 terminy co tydzień (kolejne poniedziałki) |
| 3 | Ustaw how_many_repeat_times = 100 | Maksymalna dozwolona wartość — sprawdź czy backend akceptuje |
| 4 | Ustaw how_many_repeat_times = 0 lub ujemne | Błąd walidacji — wymagana wartość ≥ 1 |
| 5 | Sprawdź czy powtórzenia uwzględniają święta | Powtórzenia tworzone mechanicznie co tydzień bez pomijania świąt — weryfikacja wymagana ręcznie |
TC-AIC-006 — Termin rezerwacji (reservation_deadline_hours)
| # | Akcja | Oczekiwany rezultat |
| 1 | Ustaw wartość 24 (domyślna) | Rezerwacja możliwa do 24h przed rozpoczęciem zajęć |
| 2 | Ustaw wartość 0 | Rezerwacja możliwa do ostatniej chwili — zweryfikuj akceptację przez backend |
| 3 | Zostaw pole puste | Błąd walidacji — pole wymagane |
TC-AIC-007 — Przypisanie prowadzącego
| # | Akcja | Oczekiwany rezultat |
| 1 | Wyszukaj prowadzącego (min. 4 znaki) | Lista prowadzących filtrowana (max 50, tylko aktywni) |
| 2 | Przypisz prowadzącego bez konfliktu | Termin zapisany z prowadzącym |
| 3 | Przypisz prowadzącego z konfliktem czasowym (bez force_add_trainer) | Backend zwraca błąd — prowadzący ma inny termin w tym czasie |
| 4 | Zaznacz „Wymuś przypisanie prowadzącego" i przypisz kolidującego prowadzącego | Widoczne ostrzeżenie o konflikcie, formularz możliwy do wysłania |
| 5 | Wyślij z force_add_trainer = true i konfliktem | Backend akceptuje — prowadzący przypisany mimo konfliktu |
| 6 | Nie wybieraj prowadzącego | Termin zapisany bez prowadzącego — pole opcjonalne |
TC-AIC-008 — Zapis i nawigacja
| # | Akcja | Oczekiwany rezultat |
| 1 | Zapisz termin z activity_id w formularzu | Po sukcesie przekierowanie na stronę szczegółów tej aktywności (activity-detail-page) |
| 2 | Zapisz termin bez activity_id | Po sukcesie powrót do poprzedniej strony (router.go(-1)) |
| 3 | Kliknij „Anuluj" | Powrót do poprzedniej strony bez zapisu |
| 4 | Błąd backendu przy zapisie | Błędy walidacji przy odpowiednich polach, brak przekierowania |