import unittest import xml.etree.ElementTree as ET from sia.entry.parse_error_entry import ParseErrorEntry class ParseErrorEntryTest(unittest.TestCase): def setUp(self): """Set up test cases with fixed id""" self.test_id = "test-id-1234" def test_initialization(self): """Test entry initialization""" content = "invalid content" error = "parsing failed" entry = ParseErrorEntry(self.test_id, content, error) self.assertEqual(entry.id, self.test_id) 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, 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, 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, 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, "", "") element = entry.generate_context() self.assertEqual(element.find("content").text, "") self.assertEqual(element.find("error").text, "") def test_serialize(self): """Test serialization of the entry""" content = "invalid content" error = "parsing failed" entry = ParseErrorEntry(self.test_id, content, error) serialized = entry.serialize() # Verify serialized form self.assertEqual(serialized["type"], "parse_error") self.assertEqual(serialized["id"], self.test_id) self.assertEqual(serialized["content"], content) self.assertEqual(serialized["error"], error)