81 lines
2.9 KiB
Python
81 lines
2.9 KiB
Python
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) |