XML export adjusted
This commit is contained in:
@@ -1675,6 +1675,54 @@ class ExportXMLCommandTest(TestCase):
|
||||
# Should still contain active document
|
||||
self.assertIn('TEST-001', output)
|
||||
self.assertIn('Test Standard', output)
|
||||
|
||||
def test_export_xml_command_table_structure(self):
|
||||
"""Test export_xml command converts markdown tables to proper XML structure"""
|
||||
# Create document with table
|
||||
table_doc = Dokument.objects.create(
|
||||
nummer="TABLE-001",
|
||||
dokumententyp=self.dokumententyp,
|
||||
name="Table Test Document",
|
||||
aktiv=True
|
||||
)
|
||||
table_doc.autoren.add(self.autor1)
|
||||
|
||||
table_vorgabe = Vorgabe.objects.create(
|
||||
order=1,
|
||||
nummer=1,
|
||||
dokument=table_doc,
|
||||
thema=self.thema,
|
||||
titel="Table Test Vorgabe",
|
||||
gueltigkeit_von=date(2023, 1, 1),
|
||||
gueltigkeit_bis=date(2025, 12, 31)
|
||||
)
|
||||
|
||||
table_content = "| Spalte1 | Spalte2 |\n|---------|---------|\n| Wert1 | Wert2 |\n| Wert3 | Wert4 |"
|
||||
|
||||
self.langtext_table = VorgabeLangtext.objects.create(
|
||||
abschnitt=table_vorgabe,
|
||||
abschnitttyp=self.abschnitttyp_table,
|
||||
inhalt=table_content,
|
||||
order=1
|
||||
)
|
||||
|
||||
out = StringIO()
|
||||
call_command('export_xml', stdout=out)
|
||||
|
||||
output = out.getvalue()
|
||||
|
||||
# Check that table structure is properly exported
|
||||
self.assertIn('<table>', output)
|
||||
self.assertIn('<header>', output)
|
||||
self.assertIn('<column>Spalte1</column>', output)
|
||||
self.assertIn('<column>Spalte2</column>', output)
|
||||
self.assertIn('<row>', output)
|
||||
self.assertIn('<column>Wert1</column>', output)
|
||||
self.assertIn('<column>Wert2</column>', output)
|
||||
self.assertIn('<column>Wert3</column>', output)
|
||||
self.assertIn('<column>Wert4</column>', output)
|
||||
# Should not contain the markdown table content as plain text
|
||||
self.assertNotIn('| Spalte1 | Spalte2 |', output)
|
||||
|
||||
|
||||
class StandardJSONViewTest(TestCase):
|
||||
@@ -1915,6 +1963,7 @@ class StandardXMLViewTest(TestCase):
|
||||
|
||||
# Create text sections
|
||||
self.abschnitttyp_text = AbschnittTyp.objects.create(abschnitttyp="text")
|
||||
self.abschnitttyp_table = AbschnittTyp.objects.create(abschnitttyp="table")
|
||||
|
||||
self.geltungsbereich = Geltungsbereich.objects.create(
|
||||
geltungsbereich=self.dokument,
|
||||
@@ -2049,6 +2098,71 @@ class StandardXMLViewTest(TestCase):
|
||||
self.assertIn('<?xml version', response.content.decode())
|
||||
self.assertIn('\n', response.content.decode())
|
||||
self.assertIn(' ', response.content.decode()) # Check for indentation
|
||||
|
||||
def test_standard_xml_view_table_structure(self):
|
||||
"""Test standard_xml view converts markdown tables to proper XML structure"""
|
||||
# Create document with table
|
||||
table_doc = Dokument.objects.create(
|
||||
nummer="TABLE-XML-001",
|
||||
dokumententyp=self.dokumententyp,
|
||||
name="Table XML Test Document",
|
||||
aktiv=True
|
||||
)
|
||||
table_doc.autoren.add(self.autor)
|
||||
|
||||
table_vorgabe = Vorgabe.objects.create(
|
||||
order=1,
|
||||
nummer=1,
|
||||
dokument=table_doc,
|
||||
thema=self.thema,
|
||||
titel="Table XML Test Vorgabe",
|
||||
gueltigkeit_von=date(2023, 1, 1),
|
||||
gueltigkeit_bis=date(2025, 12, 31)
|
||||
)
|
||||
|
||||
table_content = "| Col1 | Col2 |\n|------|------|\n| A | B |\n| C | D |"
|
||||
|
||||
langtext_table = VorgabeLangtext.objects.create(
|
||||
abschnitt=table_vorgabe,
|
||||
abschnitttyp=self.abschnitttyp_table,
|
||||
inhalt=table_content,
|
||||
order=1
|
||||
)
|
||||
|
||||
url = reverse('standard_xml', kwargs={'nummer': 'TABLE-XML-001'})
|
||||
response = self.client.get(url)
|
||||
|
||||
# Parse XML response
|
||||
import xml.etree.ElementTree as ET
|
||||
root = ET.fromstring(response.content)
|
||||
|
||||
# Find table element
|
||||
table = root.find('.//table')
|
||||
self.assertIsNotNone(table, 'Table element should exist')
|
||||
|
||||
# Check header structure
|
||||
header = table.find('header')
|
||||
self.assertIsNotNone(header, 'Header should exist')
|
||||
header_cols = header.findall('column')
|
||||
self.assertEqual(len(header_cols), 2, 'Header should have 2 columns')
|
||||
self.assertEqual(header_cols[0].text, 'Col1')
|
||||
self.assertEqual(header_cols[1].text, 'Col2')
|
||||
|
||||
# Check row structure
|
||||
rows = table.findall('row')
|
||||
self.assertEqual(len(rows), 2, 'Should have 2 data rows')
|
||||
|
||||
# Check first row
|
||||
row1_cols = rows[0].findall('column')
|
||||
self.assertEqual(len(row1_cols), 2)
|
||||
self.assertEqual(row1_cols[0].text, 'A')
|
||||
self.assertEqual(row1_cols[1].text, 'B')
|
||||
|
||||
# Check second row
|
||||
row2_cols = rows[1].findall('column')
|
||||
self.assertEqual(len(row2_cols), 2)
|
||||
self.assertEqual(row2_cols[0].text, 'C')
|
||||
self.assertEqual(row2_cols[1].text, 'D')
|
||||
|
||||
|
||||
class VorgabeCommentModelTest(TestCase):
|
||||
|
||||
Reference in New Issue
Block a user