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(self.test_id, self.test_timestamp, content, error) self.assertEqual(entry.id, self.test_id) self.assertEqual(entry.timestamp, self.test_timestamp) self.assertEqual(entry.content, content) self.assertEqual(entry.error, error) def test_update_does_nothing(self): """Test that update operation has no effect""" content = "invalid content" error = "parsing failed" entry = ParseErrorEntry(self.test_id, self.test_timestamp, content, error) # Store initial state initial_content = entry.content initial_error = entry.error # Perform update entry.update() # Verify state hasn't changed self.assertEqual(entry.content, initial_content) self.assertEqual(entry.error, initial_error) def test_generate_context(self): """Test XML context generation""" content = "invalid content" error = "parsing failed" entry = ParseErrorEntry(self.test_id, self.test_timestamp, content, error) 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, error) # Verify content element content_elem = element.find("content") self.assertIsNotNone(content_elem) self.assertEqual(content_elem.text, 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(self.test_id, self.test_timestamp, content, error) element = entry.generate_context() self.assertEqual(element.find("content").text, content) self.assertEqual(element.find("error").text, 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, "") self.assertEqual(element.find("error").text, "")