diff --git a/ticketsystem/tests.py b/ticketsystem/tests.py index 7ce503c..199805e 100644 --- a/ticketsystem/tests.py +++ b/ticketsystem/tests.py @@ -1,3 +1,81 @@ from django.test import TestCase +from django.contrib.auth.models import User +from ticketsystem.models import Ticket, Course -# Create your tests here. + +class TicketModelTest(TestCase): + """Test für das Ticket Model""" + + def setUp(self): + """Setup-Methode wird vor jedem Test ausgeführt""" + # Testuser erstellen + self.user = User.objects.create_user( + username='testuser', + email='test@example.com', + password='testpass123' + ) + + # Tutor erstellen + self.tutor = User.objects.create_user( + username='tutor', + email='tutor@example.com', + password='tutorpass123' + ) + + # Testkurs erstellen + self.course = Course.objects.create( + name='Test Kurs', + code='TEST-101', + description='Ein Testkurs' + ) + + # Kurs mit Tutor erstellen + self.course_with_tutor = Course.objects.create( + name='Kurs mit Tutor', + code='TUTOR-101', + description='Ein Kurs mit zugewiesenem Tutor', + tutor=self.tutor + ) + + def test_ticket_creation(self): + """Test: Ticket kann erfolgreich erstellt werden""" + # Ticket erstellen + ticket = Ticket.objects.create( + title='Test Ticket', + description='Das ist eine Testbeschreibung', + course=self.course, + created_by=self.user, + status='new', + mistake='typo', + material='script' + ) + + # Assertions - überprüfen ob alles korrekt gespeichert wurde + self.assertEqual(ticket.title, 'Test Ticket') + self.assertEqual(ticket.description, 'Das ist eine Testbeschreibung') + self.assertEqual(ticket.course, self.course) + self.assertEqual(ticket.created_by, self.user) + self.assertEqual(ticket.status, 'new') + self.assertEqual(ticket.mistake, 'typo') + self.assertEqual(ticket.material, 'script') + + # Überprüfen ob das Ticket in der Datenbank gespeichert wurde + self.assertTrue(Ticket.objects.filter(title='Test Ticket').exists()) + + # Überprüfen der __str__ Methode + expected_str = '[Tippfehler] Test Ticket (Neu)' + self.assertEqual(str(ticket), expected_str) + + def test_course_model_with_tutor(self): + """Test: Course Model mit Tutor funktioniert korrekt""" + # Course __str__ Methode mit Tutor testen + expected_str = f"{self.course_with_tutor.code} - {self.course_with_tutor.name} (Tutor: {self.tutor.username})" + self.assertEqual(str(self.course_with_tutor), expected_str) + + # Course __str__ Methode ohne Tutor testen + expected_str_no_tutor = f"{self.course.code} - {self.course.name}" + self.assertEqual(str(self.course), expected_str_no_tutor) + + # Tutor-Zuweisung überprüfen + self.assertEqual(self.course_with_tutor.tutor, self.tutor) + self.assertIsNone(self.course.tutor) \ No newline at end of file