#!/usr/bin/env python3 """范式规划期绑定读取回归:load_confirmed_pattern_bindings(桩连接,不连真库)。 实验仓承载:绑定 = 最新一条已确认 assembly 规划行的 patternReferences。 确认 assembly 即激活绑定;无已确认 assembly 或没选范式时诚实返空(不报错)。 """ import pathlib import sys import unittest PROJECT_ROOT = pathlib.Path(__file__).resolve().parents[3] SCRIPT_DIR = PROJECT_ROOT / "muse" / "lifecycle" / "context" / "skills" / "准备任务上下文" / "scripts" sys.path.insert(0, str(SCRIPT_DIR)) from retrieve_writer_sources import load_confirmed_pattern_bindings # noqa: E402 class FakeCursor: def __init__(self, row): self._row = row def fetchone(self): return self._row class FakeConn: def __init__(self, row): self._row = row self.sql = None self.params = None def execute(self, sql, params=None): self.sql = sql self.params = params return FakeCursor(self._row) def assembly_payload(refs): return {"schemaVersion": "assembly-v1", "workId": 12, "patternReferences": refs, "knowledgeBindings": []} class PatternBindingReaderTest(unittest.TestCase): def test_returns_confirmed_assembly_pattern_references(self): refs = [{"sourceId": "card:1", "sourceVersion": "v1", "name": "锁空坠杀"}, {"sourceId": "card:2", "sourceVersion": "v1", "name": "碎颅"}] conn = FakeConn((assembly_payload(refs),)) result = load_confirmed_pattern_bindings(conn, work_id=12) self.assertEqual(result, refs) self.assertIn("section_type='assembly'", conn.sql) self.assertIn("state='confirmed'", conn.sql) self.assertIn("ORDER BY version DESC LIMIT 1", conn.sql) self.assertEqual(conn.params, (12,)) def test_no_confirmed_assembly_returns_empty(self): conn = FakeConn(None) self.assertEqual(load_confirmed_pattern_bindings(conn, work_id=12), []) def test_jsonb_as_string_is_parsed(self): conn = FakeConn(('{"patternReferences": [{"sourceId": "card:9", "name": "x"}]}',)) result = load_confirmed_pattern_bindings(conn, work_id=12) self.assertEqual(result, [{"sourceId": "card:9", "name": "x"}]) def test_empty_selection_returns_empty(self): conn = FakeConn((assembly_payload([]),)) self.assertEqual(load_confirmed_pattern_bindings(conn, work_id=12), []) def test_non_dict_references_are_filtered(self): conn = FakeConn((assembly_payload([{"sourceId": "card:1"}, "bad", 42, None]),)) self.assertEqual(load_confirmed_pattern_bindings(conn, work_id=12), [{"sourceId": "card:1"}]) if __name__ == "__main__": unittest.main()