from django.test import TestCase from django.contrib.auth.models import User from ticketsystem.models import Ticket, Course 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)