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"") # Verify content element content_elem = element.find("content") self.assertIsNotNone(content_elem) self.assertEqual(content_elem.text, f"") 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"") self.assertEqual(element.find("error").text, f"") 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, "") self.assertEqual(element.find("error").text, "")