Harden InvoiceGuard stateful tools
This commit is contained in:
@@ -54,6 +54,9 @@ def test_full_stack_product_contract():
|
||||
assert card.runtime.platform_resources.databases
|
||||
assert card.runtime.platform_resources.databases[0].migrations.path == "db/migrations"
|
||||
assert card.workspace_access.enabled is True
|
||||
assert [mode.value for mode in card.workspace_access.allowed_modes] == ["read_only"]
|
||||
assert skills["record_decision"].policy.idempotent is False
|
||||
assert skills["review_invoices"].input_schema["properties"]["case_id"]["maxLength"] == 120
|
||||
|
||||
|
||||
def test_review_success_fixture_is_deterministic():
|
||||
@@ -130,3 +133,17 @@ def test_acceptance_calls_with_mocked_persistence_reload_and_decision():
|
||||
updated = asyncio.run(agent.record_decision(ctx, "studio-invoice-v1", DecisionInput(decision_id="d1", decision="hold", note="Investigate duplicate", invoice_number="INV-100")))
|
||||
assert updated["ok"] is True
|
||||
assert updated["decisions"][0]["decision"] == "hold"
|
||||
|
||||
invalid_reload = asyncio.run(agent.get_invoice_case(ctx, "bad case id"))
|
||||
assert invalid_reload["ok"] is False
|
||||
assert invalid_reload["code"] == "invalid_case_id"
|
||||
|
||||
invalid_decision = asyncio.run(
|
||||
agent.record_decision(
|
||||
ctx,
|
||||
"bad case id",
|
||||
DecisionInput(decision_id="d2", decision="hold"),
|
||||
)
|
||||
)
|
||||
assert invalid_decision["ok"] is False
|
||||
assert invalid_decision["code"] == "invalid_case_id"
|
||||
|
||||
Reference in New Issue
Block a user