-
Notifications
You must be signed in to change notification settings - Fork 0
TEST REPORT BACKEND quiz
| Issue | S5-01 |
| Datum | 3. 6. 2026 |
| Framework | JUnit 5 + Mockito |
| Avtor | Tilen Brunec |
| Razred | Vloga |
|---|---|
QuizService |
Poslovna logika za generiranje, upravljanje, reševanje kvizov ter statistike napredka |
QuizController |
REST endpointi za CRUD operacije nad kvizi, vprašanji ter dashboard statistike |
| Razred | Skupaj | ✅ Pravilen | ❌ Napačen | |
|---|---|---|---|---|
QuizServiceTest |
45 | 24 | 8 | 13 |
QuizControllerTest |
31 | 17 | 0 | 14 |
| Skupaj | 76 | 41 | 8 | 27 |
| Oznaka | Pomen |
|---|---|
| ✅ Pravilen primer | Normalen potek — vse deluje kot pričakovano |
| Mejni pogoji — prazni seznami, prazen kviz, brez transkripta | |
| ❌ Napačen primer | Neobstoječi ID, kršitev avtorizacije, napačni odgovori |
Testi pokrivajo vso poslovno logiko v
QuizService— generiranje vprašanj z AI, upravljanje banke vprašanj, ustvarjanje in objavo kvizov, shranjevanje rezultatov, lestvico najboljših učencev ter statistike napredka in tedenske aktivnosti.
Cilj: Preveriti da metoda uspešno generira vprašanja za obstoječ modul s transkriptom.
| Vhod | Veljaven predmetId, število vprašanj = 5, težavnost = "MEDIUM"
|
| Pričakovan rezultat | Seznam z 1 vprašanjem, besedilo = "Q1"
|
Cilj: Preveriti da sistem vrže napako, ko zahtevani modul ne obstaja.
| Vhod | Neobstoječi predmetId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da sistem vrže napako, ko modul nima transkripta (
null).
| Vhod |
predmetId z zdruzenTranscript = null
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da sistem vrže napako, ko je transkript prazen oz. samo presledki.
| Vhod |
predmetId z zdruzenTranscript = " "
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da se odobreno vprašanje pravilno shrani v banko brez dodelitve kviza.
| Vhod | Veljavni predmetId, eno vprašanje |
| Pričakovan rezultat | Seznam z 1 elementom, save() klican enkrat |
Cilj: Preveriti da sistem vrže napako pri shranjevanju v banko za neobstoječ modul.
| Vhod | Neobstoječi predmetId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da se več vprašanj hkrati pravilno shrani v banko.
| Vhod | Veljavni predmetId, dve vprašanji |
| Pričakovan rezultat | Seznam z 2 elementoma, save() klican dvakrat |
Cilj: Preveriti da metoda vrne vsa vprašanja iz banke za določen modul.
| Vhod | Veljavni predmetId z enim vprašanjem v banki |
| Pričakovan rezultat | Seznam z 1 elementom, besedilo = "What is 2+2?"
|
Cilj: Preveriti da metoda vrne prazen seznam, ko banka ne vsebuje vprašanj.
| Vhod |
predmetId brez vprašanj v banki |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da se nov kviz pravilno ustvari z izbranimi vprašanji iz banke.
| Vhod | Veljavni predmetId, naziv, čas izvajanja, seznam ID-jev vprašanj |
| Pričakovan rezultat | DTO z nazivom "Test Quiz", save() klican na kvizu |
Cilj: Preveriti da sistem vrže napako pri ustvarjanju kviza za neobstoječ modul.
| Vhod | Neobstoječi predmetId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da se kviz lahko ustvari tudi brez vprašanj (prazen seznam).
| Vhod | Veljavni predmetId, prazen seznam vprasanjaIds
|
| Pričakovan rezultat | DTO uspešno vrnjen, save() na vprašanjih nikoli klican |
Cilj: Preveriti da se vprašanje iz banke pravilno doda na kviz.
| Vhod | Veljavni kvizId in vprasanjeId
|
| Pričakovan rezultat |
save() klican enkrat na vprašanju |
Cilj: Preveriti da sistem vrže napako pri dodajanju vprašanja na neobstoječ kviz.
| Vhod | Neobstoječi kvizId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da sistem ne pade, ko vprašanje za dodajanje ne obstaja.
| Vhod | Veljavni kvizId, neobstoječi vprasanjeId
|
| Pričakovan rezultat | Brez napake, save() nikoli klican |
Cilj: Preveriti da se vprašanje uspešno odstrani iz kviza in vrne v banko.
| Vhod | Veljavni vprasanjeId z dodeljenim kvizom |
| Pričakovan rezultat |
save() klican, kviz nastavljen na null
|
Cilj: Preveriti da sistem ne pade pri odstranjevanju neobstoječega vprašanja.
| Vhod | Neobstoječi vprasanjeId
|
| Pričakovan rezultat | Brez napake, save() nikoli klican |
Cilj: Preveriti da se status kviza pravilno spremeni na
PUBLISHED.
| Vhod | Veljavni kvizId s statusom DRAFT
|
| Pričakovan rezultat |
save() klican, DTO uspešno vrnjen |
Cilj: Preveriti da sistem vrže napako pri objavi neobstoječega kviza.
| Vhod | Neobstoječi kvizId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da se ob objavi kviza pošljejo obvestila vsem vpisanim učencem.
| Vhod | Veljavni kvizId, en vpisani učenec |
| Pričakovan rezultat |
ustvari() klican enkrat z vlogo "QUIZ"
|
Cilj: Preveriti da metoda vrne vse kvize za določen modul.
| Vhod | Veljavni predmetId z enim kvizom |
| Pričakovan rezultat | Seznam z 1 elementom, naziv = "Test Quiz"
|
Cilj: Preveriti da metoda vrne prazen seznam, ko modul nima kvizov.
| Vhod |
predmetId brez kvizov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da se vprašanje uspešno izbriše iz repozitorija.
| Vhod | Veljavni vprasanjeId
|
| Pričakovan rezultat |
deleteById() klican enkrat |
Cilj: Preveriti da metoda vrne vsa vprašanja za določen kviz.
| Vhod | Veljavni kvizId z enim vprašanjem |
| Pričakovan rezultat | Seznam z 1 elementom, besedilo = "What is 2+2?"
|
Cilj: Preveriti da metoda vrne prazen seznam, ko kviz nima vprašanj.
| Vhod |
kvizId brez vprašanj |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da učenec dobi kvize iz vpisanih modulov.
| Vhod | Učenec vpisan v en modul z enim kvizom |
| Pričakovan rezultat | Seznam z 1 elementom |
Cilj: Preveriti da učenec brez vpisov dobi prazen seznam.
| Vhod |
ucenecId brez vpisov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da sistem pravilno izračuna točke in odstotek pri pravilnih odgovorih.
| Vhod | En pravilen odgovor (indeks 2), 1 vprašanje |
| Pričakovan rezultat |
tocke = 1, odstotek = 100
|
Cilj: Preveriti da sistem vrne 0 točk pri napačnih odgovorih.
| Vhod | Napačen odgovor (indeks 0), pravilen je indeks 2 |
| Pričakovan rezultat | tocke = 0 |
Cilj: Preveriti da sistem vrže napako pri shranjevanju rezultata za neobstoječ kviz.
| Vhod | Neobstoječi kvizId
|
| Pričakovan rezultat | RuntimeException |
Cilj: Preveriti da sistem pravilno obdela kviz brez vprašanj (0 točk, 0%).
| Vhod |
kvizId brez vprašanj, prazen seznam odgovorov |
| Pričakovan rezultat |
tocke = 0, odstotek = 0
|
Cilj: Preveriti da metoda vrne vse rezultate učenca z pravilno izračunanim odstotkom.
| Vhod | Učenec z enim rezultatom (tocke = 8, skupaj = 10) |
| Pričakovan rezultat | Seznam z 1 elementom, odstotek = 80
|
Cilj: Preveriti da metoda vrne prazen seznam, ko učenec nima rezultatov.
| Vhod |
ucenecId brez rezultatov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da metoda vrne vse kvize čez vse module učitelja.
| Vhod | Učitelj z enim modulom in enim kvizom |
| Pričakovan rezultat | Seznam z 1 elementom |
Cilj: Preveriti da metoda vrne prazen seznam, ko učitelj nima modulov.
| Vhod |
uciteljId brez modulov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da metoda vrne lestvico najboljših učencev z imenom in kompozitnim rezultatom.
| Vhod | En učenec z enim rezultatom |
| Pričakovan rezultat | Seznam z 1 elementom, ime = "Test Student"
|
Cilj: Preveriti da metoda vrne prazen seznam, ko učitelj nima modulov.
| Vhod |
uciteljId brez modulov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da metoda vrne prazen seznam, ko moduli nimajo kvizov.
| Vhod | Modul brez kvizov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da metoda vrne prazen seznam, ko kvizi nimajo rešenih poskusov.
| Vhod | Kviz brez rezultatov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da lestvica vrne največ 5 učencev, tudi če je rezultatov več.
| Vhod | 7 različnih učencev z rezultati |
| Pričakovan rezultat | Seznam z največ 5 elementi |
Cilj: Preveriti da metoda vrne pravilno strukturo napredka za učenca z rezultati.
| Vhod | Učenec z enim rezultatom danes, xpZasluzen = 100
|
| Pričakovan rezultat | 14 dni biweekly XP, 35 dni calendar, streak ≥ 0 |
Cilj: Preveriti da metoda vrne pravilno strukturo tudi brez rezultatov.
| Vhod | Učenec brez rezultatov |
| Pričakovan rezultat | 14 dni XP, 35 dni calendar, streak = 0, streakBest = 0 |
Cilj: Preveriti da se streak pravilno izračuna pri zaporednih dnevih aktivnosti.
| Vhod | Dva rezultata — danes in včeraj |
| Pričakovan rezultat | streak ≥ 2 |
Cilj: Preveriti da calendar pravilno označuje prihodnje dni.
| Vhod | Učenec brez rezultatov |
| Pričakovan rezultat | Število prihodnjih dni ≥ 0 |
Cilj: Preveriti da metoda vrne statistiko za točno 7 dni za učitelja.
| Vhod | Učitelj z modulom, kvizom in rezultatom danes |
| Pričakovan rezultat | Seznam z 7 elementi |
Cilj: Preveriti da metoda vrne prazen teden (vse 0), ko učitelj nima modulov.
| Vhod |
uciteljId brez modulov |
| Pričakovan rezultat | 7 dni, vsi xpSum = 0
|
Cilj: Preveriti da metoda vrne prazen teden, ko moduli nimajo kvizov.
| Vhod | Modul brez kvizov |
| Pričakovan rezultat | 7 dni, vsi xpSum = 0
|
Cilj: Preveriti da metoda pravilno filtrira po izbranem predmetu.
| Vhod | Specifični predmetId, rezultat danes |
| Pričakovan rezultat | 7 dni statistike za izbrani predmet |
Cilj: Preveriti da so imena dni pravilna in v pravem vrstnem redu (MON–SUN).
| Vhod | Učitelj z modulom brez rezultatov |
| Pričakovan rezultat | ["MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"] |
Cilj: Preveriti da metoda vrne aktivnosti profesorja (objavljeni kvizi + rezultati učencev).
| Vhod | Objavljeni kviz, en rezultat učenca |
| Pričakovan rezultat | Neprazen seznam aktivnosti |
Cilj: Preveriti da metoda vrne prazen seznam, ko učitelj nima modulov.
| Vhod |
uciteljId brez modulov |
| Pričakovan rezultat | Prazen seznam |
Cilj: Preveriti da metoda vrne največ 10 aktivnosti, tudi če je rezultatov več.
| Vhod | 15 rezultatov učencev |
| Pričakovan rezultat | Seznam z največ 10 elementi |
Cilj: Preveriti da so aktivnosti razvrščene od najnovejše do najstarejše.
| Vhod | 2 rezultata — pred 1h in pred 2h |
| Pričakovan rezultat | Novejši rezultat je prvi v seznamu |
Testi pokrivajo vse REST endpointe in preverjanje vlog (
ucitelj/ucenec). Vsak zaščiten endpoint je testiran z obema vlogama.
Cilj: Preveriti da učitelj uspešno sproži generiranje vprašanj z AI.
| Vhod | JWT z vlogo ucitelj, veljaven QuizGenerateRequestDTO
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more generirati vprašanj.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno shrani odobrena vprašanja v banko.
| Vhod | JWT z vlogo ucitelj, veljaven QuestionSaveRequestDTO
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more shranjevati vprašanj v banko.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno pridobi seznam vprašanj iz banke.
| Vhod | JWT z vlogo ucitelj, veljaven predmetId
|
| Pričakovan rezultat | HTTP 200, seznam z 1 elementom |
Cilj: Preveriti da učenec ne more dostopati do banke vprašanj.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno ustvari nov kviz iz izbranih vprašanj.
| Vhod | JWT z vlogo ucitelj, veljaven QuizCreateRequestDTO
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more ustvariti kviza.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno doda vprašanje iz banke na kviz.
| Vhod | JWT z vlogo ucitelj, veljavni kvizId in vprasanjeId
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more dodajati vprašanj na kviz.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno odstrani vprašanje iz kviza nazaj v banko.
| Vhod | JWT z vlogo ucitelj, veljaven vprasanjeId
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more odstranjevati vprašanj iz kviza.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno objavi kviz in ga s tem naredi dostopnega učencem.
| Vhod | JWT z vlogo ucitelj, veljaven kvizId
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more objavljati kvizov.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da endpoint vrne vse kvize za določen modul brez avtorizacije.
| Vhod | Veljaven predmetId
|
| Pričakovan rezultat | HTTP 200, seznam z 1 elementom |
Cilj: Preveriti da učitelj uspešno izbriše vprašanje.
| Vhod | JWT z vlogo ucitelj, veljaven vprasanjeId
|
| Pričakovan rezultat | HTTP 204 No Content |
Cilj: Preveriti da učenec ne more brisati vprašanj.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da endpoint vrne vsa vprašanja za določen kviz.
| Vhod | Veljaven kvizId
|
| Pričakovan rezultat | HTTP 200, seznam z 1 elementom |
Cilj: Preveriti da učenec dobi kvize iz svojih vpisanih modulov.
| Vhod | JWT učenca, kvizi iz vpisanih modulov |
| Pričakovan rezultat | HTTP 200, seznam z 1 elementom |
Cilj: Preveriti da učenec uspešno odda in shrani rezultat kviza.
| Vhod | JWT učenca, veljavni kvizId, QuizResultRequestDTO
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec uspešno pridobi zgodovino svojih rezultatov.
| Vhod | JWT učenca |
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učitelj uspešno dobi seznam vseh kvizov čez vse svoje module.
| Vhod | JWT z vlogo ucitelj
|
| Pričakovan rezultat | HTTP 200, seznam kvizov |
Cilj: Preveriti da učenec ne more dostopati do seznama kvizov učitelja.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno pridobi lestvico najboljših učencev.
| Vhod | JWT z vlogo ucitelj
|
| Pričakovan rezultat | HTTP 200 |
Cilj: Preveriti da učenec ne more dostopati do lestvice.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učenec uspešno pridobi statistiko svojega napredka.
| Vhod | JWT učenca |
| Pričakovan rezultat | HTTP 200, ProgressStatsDTO
|
Cilj: Preveriti da učitelj uspešno pridobi tedensko statistiko za vse module.
| Vhod | JWT z vlogo ucitelj, brez filtra |
| Pričakovan rezultat | HTTP 200, WeeklyStatsDTO
|
Cilj: Preveriti da učenec ne more dostopati do tedenske statistike.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |
Cilj: Preveriti da učitelj uspešno filtrira tedensko statistiko po izbranem modulu.
| Vhod | JWT z vlogo ucitelj, specifični predmetId
|
| Pričakovan rezultat | HTTP 200, getWeeklyStatsZaProfesoria klican z predmetId
|
Cilj: Preveriti da učitelj uspešno pridobi seznam svojih nedavnih aktivnosti.
| Vhod | JWT z vlogo ucitelj
|
| Pričakovan rezultat | HTTP 200, seznam ActivityItemDTO
|
Cilj: Preveriti da učenec ne more dostopati do aktivnosti profesorja.
| Vhod | JWT z vlogo ucenec
|
| Pričakovan rezultat | HTTP 403 |