mirror of
https://github.com/dograh-hq/dograh.git
synced 2026-07-25 12:01:04 +02:00
80 lines
2.6 KiB
Python
80 lines
2.6 KiB
Python
import pytest
|
|
|
|
from api.schemas.tool import TransferCallConfig
|
|
|
|
|
|
def test_transfer_call_destination_accepts_initial_context_template():
|
|
config = TransferCallConfig(
|
|
destination="{{initial_context.transfer_destination}}",
|
|
)
|
|
|
|
assert config.destination == "{{initial_context.transfer_destination}}"
|
|
|
|
|
|
def test_transfer_call_destination_accepts_provider_specific_literal():
|
|
config = TransferCallConfig(destination="provider-specific-destination")
|
|
|
|
assert config.destination == "provider-specific-destination"
|
|
|
|
|
|
def test_transfer_call_static_allows_empty_draft_destination():
|
|
config = TransferCallConfig(destination_source="static", destination="")
|
|
|
|
assert config.destination_source == "static"
|
|
assert config.destination == ""
|
|
|
|
|
|
def test_transfer_call_dynamic_requires_resolver():
|
|
with pytest.raises(ValueError, match="resolver is required"):
|
|
TransferCallConfig(destination_source="dynamic", destination="")
|
|
|
|
|
|
def test_transfer_call_dynamic_accepts_resolver_without_destination():
|
|
config = TransferCallConfig(
|
|
destination_source="dynamic",
|
|
destination="",
|
|
resolver={
|
|
"type": "http",
|
|
"url": "https://crm.example.com/resolve-transfer",
|
|
},
|
|
)
|
|
|
|
assert config.destination_source == "dynamic"
|
|
assert config.destination == ""
|
|
assert config.resolver is not None
|
|
|
|
|
|
def test_transfer_call_context_mapping_requires_mapping():
|
|
with pytest.raises(ValueError, match="context_mapping is required"):
|
|
TransferCallConfig(destination_source="context_mapping")
|
|
|
|
|
|
def test_transfer_call_context_mapping_accepts_unique_routes():
|
|
config = TransferCallConfig(
|
|
destination_source="context_mapping",
|
|
context_mapping={
|
|
"context_path": "qualified",
|
|
"routes": [
|
|
{"context_value": "yes", "destination": "sales"},
|
|
{"context_value": "no", "destination": "support"},
|
|
],
|
|
"fallback_destination": "source",
|
|
},
|
|
)
|
|
|
|
assert config.context_mapping is not None
|
|
assert config.context_mapping.routes[0].destination == "sales"
|
|
|
|
|
|
def test_transfer_call_context_mapping_rejects_duplicate_values_case_insensitively():
|
|
with pytest.raises(ValueError, match="must be unique"):
|
|
TransferCallConfig(
|
|
destination_source="context_mapping",
|
|
context_mapping={
|
|
"context_path": "qualified",
|
|
"routes": [
|
|
{"context_value": "Yes", "destination": "sales"},
|
|
{"context_value": "yes", "destination": "support"},
|
|
],
|
|
},
|
|
)
|