"""命令幂等与审阅版本:同命令重放同回执、章后任务不重复、异参数拒绝。""" import pytest from muse.共享.错误 import Muse错误 from muse.正文写作.接口 import 文本节点, 正文草稿, 段落 pytestmark = pytest.mark.数据库 @pytest.mark.case_id( "NC-w16-w16b01", environment="真实隔离 PG", given="隔离数据库中的作品与已采纳正文", when="相同保存命令重放返回既有回执且不重复登记派生", then=["回执一致", "任务唯一"], contract="docs/系统架构/新版设计/功能规格/P05-章后处理与事实复核.md", ) def test_同命令重放同回执且章后任务不重复__16b011(章后环境, 章后工具): 环境 = 章后环境 环境["剧本"].append(章后工具.抽取输出("幂等摘要。", [])) 任务1, 回执1 = 章后工具.保存一章("ch-1", "林深在码头。雨停了。", 命令="idem-save-1") 章后工具.跑任务(任务1) # 完全相同的命令重放:返回既有回执,不再创建第二个章后任务。 回执2 = ( 环境["装配"] .要求正文() .保存人工( 环境["作者"], "idem-save-1", "ch-1", 0, 正文草稿((段落("ch-1-p1", (文本节点("林深在码头。雨停了。"),)),)), ) ) assert 回执2["receipt_id"] == 回执1["receipt_id"] 任务集 = { s.任务ID for s in 环境["装配"].任务运行.列出任务(环境["作者"].作者) if s.流程.流程ID == "章后处理" } assert len(任务集) == 1 @pytest.mark.case_id( "NC-w16-w16b02", environment="真实隔离 PG", given="隔离数据库中的作品与已采纳正文", when="相同命令身份携带不同请求被拒绝", then=["COMMAND_PAYLOAD_MISMATCH"], contract="docs/系统架构/新版设计/功能规格/P05-章后处理与事实复核.md", ) def test_同命令异参数拒绝__16b022(章后环境, 章后工具): 环境 = 章后环境 from muse.正文写作.接口 import 文本节点, 正文草稿, 段落 环境["剧本"].append(章后工具.抽取输出("首次摘要。", [])) 章后工具.保存一章("ch-1", "第一版内容。", 命令="idem-save-x") with pytest.raises(Muse错误) as 异常: 环境["装配"].要求正文().保存人工( 环境["作者"], "idem-save-x", "ch-1", 0, 正文草稿((段落("ch-1-p1", (文本节点("不同的内容。"),)),)), ) assert 异常.value.错误码 == "COMMAND_PAYLOAD_MISMATCH"