74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
import unittest
|
|
from datetime import datetime
|
|
|
|
from sia.parse_error_entry import ParseErrorEntry
|
|
|
|
class ParseErrorEntryTest(unittest.TestCase):
|
|
def setUp(self):
|
|
"""Set up test cases with fixed id and timestamp"""
|
|
self.test_id = "test-id-1234"
|
|
self.test_timestamp = datetime(2024, 10, 31, 12, 0, 0)
|
|
|
|
def test_initialization(self):
|
|
"""Test entry initialization"""
|
|
content = "invalid content"
|
|
error = "parsing failed"
|
|
entry = ParseErrorEntry(content, error, self.test_id, self.test_timestamp)
|
|
|
|
self.assertEqual(entry.id, self.test_id)
|
|
self.assertEqual(entry.timestamp, self.test_timestamp)
|
|
|
|
def test_update_does_nothing(self):
|
|
"""Test that update operation has no effect"""
|
|
content = "invalid content"
|
|
error = "parsing failed"
|
|
entry = ParseErrorEntry(content, error, self.test_id, self.test_timestamp)
|
|
|
|
# Store initial state
|
|
initial_context = entry.content
|
|
|
|
# Perform update
|
|
entry.update()
|
|
|
|
# Verify state hasn't changed
|
|
self.assertEqual(entry.content, initial_context)
|
|
|
|
def test_generate_context(self):
|
|
"""Test XML context generation"""
|
|
content = "invalid content"
|
|
error = "parsing failed"
|
|
entry = ParseErrorEntry(content, error, self.test_id, self.test_timestamp)
|
|
|
|
element = entry.generate_context()
|
|
|
|
# Verify XML structure
|
|
self.assertEqual(element.tag, "parse_error")
|
|
self.assertEqual(element.get("id"), self.test_id)
|
|
|
|
# Verify error element
|
|
error_elem = element.find("error")
|
|
self.assertIsNotNone(error_elem)
|
|
self.assertEqual(error_elem.text, f"<![CDATA[{error}]]>")
|
|
|
|
# Verify content element
|
|
content_elem = element.find("content")
|
|
self.assertIsNotNone(content_elem)
|
|
self.assertEqual(content_elem.text, f"<![CDATA[{content}]]>")
|
|
|
|
def test_special_characters(self):
|
|
"""Test handling content and errors with special characters"""
|
|
content = "Special content: \n\t\r\'\"\\"
|
|
error = "Special error: \n\t\r\'\"\\"
|
|
entry = ParseErrorEntry(content, error, self.test_id, self.test_timestamp)
|
|
|
|
element = entry.generate_context()
|
|
self.assertEqual(element.find("content").text, f"<![CDATA[{content}]]>")
|
|
self.assertEqual(element.find("error").text, f"<![CDATA[{error}]]>")
|
|
|
|
def test_empty_content_and_error(self):
|
|
"""Test handling empty content and error messages"""
|
|
entry = ParseErrorEntry("", "", self.test_id, self.test_timestamp)
|
|
|
|
element = entry.generate_context()
|
|
self.assertEqual(element.find("content").text, "<![CDATA[]]>")
|
|
self.assertEqual(element.find("error").text, "<![CDATA[]]>") |