65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
|
from django.test import TestCase
|
||
|
from django.urls import reverse
|
||
|
import seminar.models as m
|
||
|
import seminar.views as v
|
||
|
from seminar.utils import sync_skoly
|
||
|
|
||
|
class OrgSkolyAutocompleteTestCase(TestCase):
|
||
|
@classmethod
|
||
|
def setUpClass(cls):
|
||
|
super().setUpClass()
|
||
|
sync_skoly('https://mam.mff.cuni.cz/')
|
||
|
# Správné školy podle toho, co orgové poslali: (prefix, ID školy)
|
||
|
# NOTE: Pozor, jedná se o databázové indexy. Pokud se to někdy rozbije, bude potřeba je přepsat nebo předělat na IZO
|
||
|
cls.spravna_data = [
|
||
|
('gymnázium kolín', 53),
|
||
|
('kolín', 53),
|
||
|
('gasoš', 96),
|
||
|
('Rokycany', 96),
|
||
|
('gasoš Rokycany', 96),
|
||
|
('SPŠE Pardubice', 815),
|
||
|
('Jaroše', 164),
|
||
|
("Gymnázium, Brno, tř. Kpt. Jaroše", 164),
|
||
|
("Jírovcova", 157),
|
||
|
('České Budějovice', 157),
|
||
|
("Gymnázium, České Budějovice, Jírovcova 8", 157),
|
||
|
("první soukromé", 2),
|
||
|
("Gymnázium Elgartova", 147),
|
||
|
("Jihlava", 45),
|
||
|
('Milevsko', 223),
|
||
|
("Gymnázium Milevsko", 223),
|
||
|
("Gymnázium Žamberk", 257),
|
||
|
("Žamberk", 257),
|
||
|
("Mendelovo", 201),
|
||
|
("Omská", 1038),
|
||
|
("Omsk", 1038),
|
||
|
("machar", 15),
|
||
|
("J. S. Machar", 15),
|
||
|
("Brandýs", 15),
|
||
|
]
|
||
|
|
||
|
def test_view_funguje(self):
|
||
|
"""Jen se pokusí udělat na ten view dotaz a kouká na odpověď"""
|
||
|
resp = self.client.get(reverse('autocomplete_skola'))
|
||
|
self.assertEqual(resp.status_code, 200)
|
||
|
|
||
|
def test_skoly_vraceny(self):
|
||
|
"""Testuje, že pro každého orga je jeho škola ve výsledném QuerySetu"""
|
||
|
for pfx, id in self.spravna_data:
|
||
|
with self.subTest(prefix=pfx, spravne_id=id):
|
||
|
spravna_skola = m.Skola.objects.get(id=id)
|
||
|
# Zeptáme se view, co si myslí
|
||
|
resp = self.client.get(reverse('autocomplete_skola')+'?q='+pfx).json()
|
||
|
ids = [int(x['id']) for x in resp['results']]
|
||
|
self.assertIn(spravna_skola.id, ids, f"Škola nenalezena v odpovědi")
|
||
|
|
||
|
def test_skoly_pocet(self):
|
||
|
"""Testuje, že se pro dané prefixy nevrací moc škol"""
|
||
|
limit = 20
|
||
|
for pfx, id in self.spravna_data:
|
||
|
# Kopírování …
|
||
|
with self.subTest(prefix=pfx, spravne_id=id):
|
||
|
resp = self.client.get(reverse('autocomplete_skola')+'?q='+pfx).json()
|
||
|
self.assertLessEqual(len(resp['results']), limit, f"Dotaz vrací moc škol")
|
||
|
|