diff --git a/tests/test_report_engine_sanitization.py b/tests/test_report_engine_sanitization.py new file mode 100644 index 0000000..566f4d3 --- /dev/null +++ b/tests/test_report_engine_sanitization.py @@ -0,0 +1,57 @@ +import unittest + +from ReportEngine.ir import IRValidator +from ReportEngine.nodes.chapter_generation_node import ChapterGenerationNode + + +class ChapterSanitizationTestCase(unittest.TestCase): + """Lightweight regression tests for the chapter sanitization helpers.""" + + def setUp(self): + self.node = ChapterGenerationNode(llm_client=None, validator=IRValidator(), storage=None) + + def test_table_cell_empty_blocks_repaired(self): + chapter = { + "blocks": [ + { + "type": "table", + "rows": [ + { + "cells": [ + {"blocks": []}, + {"text": "同比变化", "blocks": None}, + ] + } + ], + } + ] + } + self.node._sanitize_chapter_blocks(chapter) + table_block = chapter["blocks"][0] + cells = table_block["rows"][0]["cells"] + self.assertEqual(len(cells), 2) + for cell in cells: + blocks = cell.get("blocks") + self.assertIsInstance(blocks, list) + self.assertGreater(len(blocks), 0) + for block in blocks: + self.assertEqual(block.get("type"), "paragraph") + + def test_table_rows_scalar_values_expanded(self): + chapter = {"blocks": [{"type": "table", "rows": ["全国趋势"]}]} + self.node._sanitize_chapter_blocks(chapter) + table_block = chapter["blocks"][0] + self.assertEqual(len(table_block["rows"]), 1) + row = table_block["rows"][0] + self.assertIn("cells", row) + self.assertEqual(len(row["cells"]), 1) + cell = row["cells"][0] + self.assertIsInstance(cell.get("blocks"), list) + self.assertEqual( + cell["blocks"][0]["inlines"][0]["text"], + "全国趋势", + ) + + +if __name__ == "__main__": + unittest.main()