Pavel "LEdoian" Turinsky
3 years ago
3 changed files with 75 additions and 1 deletions
@ -0,0 +1,64 @@ |
|||||
|
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") |
||||
|
|
Loading…
Reference in new issue