Complete rewrite by OpenCode
This commit is contained in:
1
tests/__init__.py
Normal file
1
tests/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# Test package for VorgabenUI
|
||||
149
tests/test_integration.py
Normal file
149
tests/test_integration.py
Normal file
@@ -0,0 +1,149 @@
|
||||
"""
|
||||
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)
|
||||
Reference in New Issue
Block a user