Files
vgui-cicd/tests/test_integration.py

149 lines
5.2 KiB
Python

"""
Integration tests for VorgabenUI application.
"""
from django.test import TestCase, Client
from django.urls import reverse
from django.contrib.auth.models import User
from datetime import date, timedelta
from dokumente.models import Dokument, Dokumententyp, Vorgabe, Thema
class DokumentIntegrationTestCase(TestCase):
"""Test document functionality end-to-end."""
def setUp(self):
self.client = Client()
self.dokumententyp = Dokumententyp.objects.create(
name="Test Typ",
verantwortliche_ve="Test VE"
)
self.dokument = Dokument.objects.create(
nummer="TEST-001",
name="Test Dokument",
dokumententyp=self.dokumententyp,
gueltigkeit_von=date.today(),
aktiv=True
)
self.thema = Thema.objects.create(
name="Test Thema",
erklaerung="Test Erklärung"
)
self.vorgabe = Vorgabe.objects.create(
order=1,
nummer=1,
dokument=self.dokument,
thema=self.thema,
titel="Test Vorgabe",
gueltigkeit_von=date.today()
)
def test_standard_list_view(self):
"""Test that standard list view loads and displays documents."""
response = self.client.get(reverse('standard_list'))
self.assertEqual(response.status_code, 200)
self.assertContains(response, "TEST-001")
self.assertContains(response, "Test Dokument")
def test_standard_detail_view(self):
"""Test that standard detail view loads and displays document details."""
response = self.client.get(
reverse('standard_detail', kwargs={'nummer': 'TEST-001'})
)
self.assertEqual(response.status_code, 200)
self.assertContains(response, "Test Dokument")
self.assertContains(response, "Test Vorgabe")
def test_standard_json_view(self):
"""Test that JSON endpoint returns valid data."""
response = self.client.get(
reverse('standard_json', kwargs={'nummer': 'TEST-001'})
)
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'], 'application/json')
def test_vorgabe_status_calculation(self):
"""Test vorgabe status calculation for different dates."""
# Test active vorgabe
self.assertEqual(self.vorgabe.get_status(), 'active')
# Test future vorgabe
future_date = date.today() + timedelta(days=30)
future_vorgabe = Vorgabe.objects.create(
order=2,
nummer=2,
dokument=self.dokument,
thema=self.thema,
titel="Future Vorgabe",
gueltigkeit_von=future_date
)
self.assertEqual(future_vorgabe.get_status(), 'future')
# Test expired vorgabe
past_date = date.today() - timedelta(days=30)
expired_vorgabe = Vorgabe.objects.create(
order=3,
nummer=3,
dokument=self.dokument,
thema=self.thema,
titel="Expired Vorgabe",
gueltigkeit_von=past_date,
gueltigkeit_bis=date.today() - timedelta(days=1)
)
self.assertEqual(expired_vorgabe.get_status(), 'expired')
class SearchIntegrationTestCase(TestCase):
"""Test search functionality."""
def setUp(self):
self.client = Client()
# Create test data for search testing
self.dokumententyp = Dokumententyp.objects.create(
name="Test Typ",
verantwortliche_ve="Test VE"
)
self.dokument = Dokument.objects.create(
nummer="SEARCH-001",
name="Searchable Document",
dokumententyp=self.dokumententyp,
gueltigkeit_von=date.today(),
aktiv=True
)
def test_search_view_loads(self):
"""Test that search view loads."""
response = self.client.get(reverse('search'))
self.assertEqual(response.status_code, 200)
def test_search_functionality(self):
"""Test search functionality with query parameters."""
response = self.client.get(reverse('search'), {'q': 'Searchable'})
self.assertEqual(response.status_code, 200)
class AdminIntegrationTestCase(TestCase):
"""Test admin interface functionality."""
def setUp(self):
self.user = User.objects.create_superuser(
username='admin',
email='admin@example.com',
password='testpass123'
)
self.client = Client()
self.client.login(username='admin', password='testpass123')
def test_admin_accessible(self):
"""Test that admin interface is accessible."""
response = self.client.get('/autorenumgebung/')
self.assertEqual(response.status_code, 200)
def test_dokument_admin_list(self):
"""Test document admin list view."""
response = self.client.get('/autorenumgebung/dokumente/dokument/')
self.assertEqual(response.status_code, 200)
def test_vorgabe_admin_list(self):
"""Test vorgabe admin list view."""
response = self.client.get('/autorenumgebung/dokumente/vorgabentable/')
self.assertEqual(response.status_code, 200)