feat(ai): add tenant-safe hierarchical expense learning
This commit is contained in:
@@ -159,6 +159,42 @@ def test_untrusted_application_path_does_not_write_learning_ledger() -> None:
|
||||
assert list(db.scalars(select(WorkflowOutcome)).all()) == []
|
||||
|
||||
|
||||
def test_non_default_tenant_direct_submit_creates_same_tenant_case_link() -> None:
|
||||
session_factory = build_session_factory()
|
||||
with session_factory() as db:
|
||||
request = build_request(
|
||||
run_id="application-direct-submit-tenant",
|
||||
tenant_id="tenant-direct-submit",
|
||||
)
|
||||
service = UserAgentService(db)
|
||||
submitted = service._create_expense_application_record(
|
||||
request,
|
||||
build_facts(),
|
||||
submit=True,
|
||||
learning_current_user=service._build_application_current_user(request),
|
||||
)
|
||||
|
||||
link = db.scalar(
|
||||
select(ExpenseCaseLink).where(
|
||||
ExpenseCaseLink.resource_type == "expense_claim",
|
||||
ExpenseCaseLink.resource_id == submitted.id,
|
||||
)
|
||||
)
|
||||
event = db.scalar(
|
||||
select(BusinessEvent).where(
|
||||
BusinessEvent.aggregate_type == "expense_claim",
|
||||
BusinessEvent.aggregate_id == submitted.id,
|
||||
BusinessEvent.event_type == "application_submitted",
|
||||
)
|
||||
)
|
||||
assert submitted.status == "submitted"
|
||||
assert link is not None
|
||||
assert link.tenant_id == "tenant-direct-submit"
|
||||
assert event is not None
|
||||
assert event.tenant_id == "tenant-direct-submit"
|
||||
assert event.expense_case_id == link.expense_case_id
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"preview_patch",
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user