Jonas Havelka
1 year ago
2 changed files with 77 additions and 4 deletions
@ -0,0 +1,63 @@ |
|||
from django.test import TestCase, RequestFactory |
|||
|
|||
from django.contrib.auth.models import User, Group |
|||
from django.contrib.admin.sites import AdminSite |
|||
from personalni.admin import OsobaAdmin |
|||
# Tohle bude peklo, až jednou ty modely fakt rozstřelíme… Možná vyrobit various.all_models, které půjdou importovat jako m? :-) |
|||
import seminar.models as m |
|||
|
|||
import logging |
|||
logger = logging.getLogger(__name__) |
|||
|
|||
class DelaniOrguTest(TestCase): |
|||
def setUp(self): |
|||
# Admin musí mít instanci |
|||
# Ref: https://www.argpar.se/posts/programming/testing-django-admin/ |
|||
adm_site = AdminSite() |
|||
self.admin = OsobaAdmin(m.Osoba, adm_site) |
|||
|
|||
from django.contrib.messages.storage.cookie import CookieStorage |
|||
self.request = RequestFactory().get('/admin') |
|||
self.request._messages = CookieStorage(self.request) |
|||
|
|||
self.org_group = Group.objects.get(name='org') |
|||
|
|||
novy_user = User.objects.create(username='osoba') |
|||
self.nova_osoba = m.Osoba.objects.create( |
|||
jmeno='Milada', |
|||
prijmeni='Von Kolej', |
|||
user = novy_user, |
|||
# Snad nic dalšího nepotřebujeme, kdyžtak se doplní… |
|||
) |
|||
stary_user = User.objects.create(username='stary_user') |
|||
stara_osoba = m.Osoba.objects.create(user=stary_user) |
|||
self.stary_org = m.Organizator.objects.create(osoba=stara_osoba) |
|||
|
|||
def test_pridani_orga(self): |
|||
# Nejdřív to není org… |
|||
self.assertFalse(m.Organizator.objects.filter(osoba=self.nova_osoba).exists()) |
|||
self.assertNotIn(self.org_group, self.nova_osoba.user.groups.all()) |
|||
self.assertFalse(self.nova_osoba.user.has_perm('auth.org')) |
|||
self.assertFalse(self.nova_osoba.user.is_staff) |
|||
|
|||
# Pak orga uděláme… |
|||
qs = m.Osoba.objects.filter(id=self.nova_osoba.id) |
|||
self.admin.udelej_orgem(self.request, qs) |
|||
|
|||
# A pak už to org má být. |
|||
self.nova_osoba.refresh_from_db() |
|||
self.assertTrue(self.nova_osoba.user.is_staff) |
|||
# FIXME: V db nejsou práva. Nový org je sice ve skupině "org", ale ta nemá právo "auth.org" |
|||
# Očekávané řešení: dodat fixture, která to přidá. |
|||
#self.assertTrue(self.nova_osoba.user.has_perm('auth.org')) |
|||
self.assertIn(self.org_group, self.nova_osoba.user.groups.all()) |
|||
self.assertTrue(m.Organizator.objects.filter(osoba=self.nova_osoba).exists()) |
|||
novy_org = m.Organizator.objects.get(osoba=self.nova_osoba) |
|||
self.assertIsNotNone(novy_org.organizuje_od) |
|||
|
|||
def test_pridani_stareho_orga(self): |
|||
self.admin.udelej_orgem(self.request, m.Osoba.objects.filter(id=self.stary_org.osoba.id)) # Ugly |
|||
# Když to spadne, tak jsem se to dozvěděl, takže už nepotřebuju nic kontrolovat. |
|||
# Jestli to funguje správně má řešit jiný test. |
|||
|
|||
|
Loading…
Reference in new issue