upload
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from types import SimpleNamespace
|
||||
from uuid import uuid4
|
||||
|
||||
from app.services.capability_service import CapabilityService
|
||||
|
||||
|
||||
def test_build_capability_payload_stores_rich_action_context():
|
||||
action = SimpleNamespace(
|
||||
id=uuid4(),
|
||||
operation_id="sendCampaignEmail",
|
||||
method=SimpleNamespace(value="POST"),
|
||||
path="/v1/campaigns/{campaign_id}/emails/send",
|
||||
base_url="https://api.example.com",
|
||||
summary="Send campaign email",
|
||||
description="Send email for selected users",
|
||||
tags=["campaign", "email"],
|
||||
source_filename="crm.yaml",
|
||||
parameters_schema={
|
||||
"type": "object",
|
||||
"required": ["campaign_id"],
|
||||
"properties": {
|
||||
"campaign_id": {"type": "string", "x-parameter-location": "path"},
|
||||
"segment_id": {"type": "string", "x-parameter-location": "query"},
|
||||
},
|
||||
},
|
||||
request_body_schema={
|
||||
"type": "object",
|
||||
"required": ["subject", "template_id"],
|
||||
"properties": {
|
||||
"subject": {"type": "string"},
|
||||
"template_id": {"type": "string"},
|
||||
},
|
||||
"x-content-type": "application/json",
|
||||
},
|
||||
response_schema={
|
||||
"type": "object",
|
||||
"properties": {"delivery_id": {"type": "string"}},
|
||||
"x-content-type": "application/json",
|
||||
},
|
||||
raw_spec={
|
||||
"deprecated": False,
|
||||
"security": [{"BearerAuth": []}],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {"type": "object"},
|
||||
}
|
||||
}
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {"type": "object"},
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
)
|
||||
|
||||
payload = CapabilityService._build_capability_payload(action)
|
||||
llm_payload = payload["llm_payload"]
|
||||
action_context = llm_payload["action_context"]
|
||||
hints = llm_payload["openapi_hints"]
|
||||
|
||||
assert payload["name"] == "sendCampaignEmail"
|
||||
assert payload["description"] == "Send campaign email"
|
||||
assert action_context["method"] == "POST"
|
||||
assert action_context["path"] == "/v1/campaigns/{campaign_id}/emails/send"
|
||||
assert action_context["raw_spec"]["responses"]["200"] is not None
|
||||
assert action_context["input_signals"]["required_inputs"] == ["campaign_id", "subject", "template_id"]
|
||||
assert hints["request_content_types"] == ["application/json"]
|
||||
assert "200" in hints["response_status_codes"]
|
||||
|
||||
Reference in New Issue
Block a user