149 lines
5.2 KiB
Python
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) |