from django.test import TestCase from django.test import Client from django.contrib.auth.models import User from django.conf import settings from django.http import HttpResponse from .forms import ITForm, WorkingForm, OfficeForm, DummyForm class LoginTestCase(TestCase): def setUp(self): self.client = Client() self.user = User.objects.create_user('vladimir', 'vladimir@reiherzehe.com', 'reiherzehe') self.client.login(username='vladimir', password='reiherzehe') self.response = self.client.get('/') def testLogin(self): self.assertContains(self.response, 'Du bist eingeloggt als vladimir@reiherzehe.com', status_code=200) def testDebugWarning(self): with self.settings(DEBUG=True): self.response = self.client.get('/') # we need to do it again with DEBUG = True self.assertContains(self.response, "WARNUNG! Test-MODUS aktiviert. Es werden keine Mails verschickt!", status_code=200) with self.settings(DEBUG=False) and self.settings(MAILTEST=False): self.response = self.client.get('/') # we need to do it again with DEBUG = False self.assertNotContains(self.response, "WARNUNG! Test-MODUS aktiviert. Es werden keine Mails verschickt!", status_code=200) def _postform(self, data, expected_form): response = self.client.post('/', data, follow=True) # print(type(response)) self.assertEqual(200, self.response.status_code) if not type(response) == HttpResponse: if 'form' in response.context: self.assertFalse(response.context['form'].errors) else: raise "NO FORM FOUND" self.assertEqual( type(response.context['wizard']['form']), expected_form ) return response def testWizzard(self): ''' this test goes thru the whole process of the EvaFormView from start to end ''' self.assertEqual(200, self.response.status_code) response = self._postform({ 'eva_form_view-current_step': '0', '0-firstname': 'Ara', '0-lastname': 'Seva', '0-department': 'CENT', }, WorkingForm) response = self._postform({ 'eva_form_view-current_step': '1', '1-firstdate_employment': '2021-01-01', '1-firstdate_presence': '2021-01-01', '1-jobdescription_german': 'hau drauf', '1-jobdescription_english': 'und schluss', '1-works_in_gs': False }, ITForm) response = self._postform({ 'eva_form_view-current_step': '2', '2-vendor': 'STANDARD', '2-os': 'UBU', '2-keyboard': 'DE', '2-language': 'GER' }, OfficeForm) response = self._postform({ 'eva_form_view-current_step': '3', '3-transponder': 'NORM' }, DummyForm) repsone = self._postform({ 'eva_form_view-current_step': '5', }, DummyForm) class NoLoginTestCase(TestCase): def setUp(self): self.client = Client() def test_details(self): response = self.client.get('/') self.assertEqual(response.status_code, 302) response2 = self.client.get(response.url) self.assertContains( response2, 'Bitte via Wolke einloggen:', status_code=200) class ITFORMTestCase(TestCase): def test_mac(self): form = ITForm(data={"vendor": 'MAC', 'os': 'UBU'}) #print (form.errors) self.assertEqual(form.non_field_errors(), ['Ein MAC sollte Mac OS installiert haben']) def test_ubu(self): form = ITForm(data={"vendor": 'STANDARD', 'os': 'UBU'}) #print (form.errors) self.assertNotEqual(form.non_field_errors(), ['Ein MAC sollte Mac OS installiert haben'])