Files
call-center/tests/test_webchat_adapter_service.py
T

44 lines
1.7 KiB
Python

from fastapi.testclient import TestClient
from services.interaction_service.app import app as interaction_app
from services.webchat_adapter_service.app import app as webchat_app
def test_webchat_message_creates_interaction_and_can_be_listed():
webchat_client = TestClient(webchat_app)
interaction_client = TestClient(interaction_app)
created = webchat_client.post(
"/integrations/webchat/messages",
json={
"session_id": "web_session_1",
"text": "Need help with the checkout page",
"visitor_name": "Visitor One",
"customer_external_id": "cust_ext_1",
"queue_id": "line2",
"priority": 2,
"payload": {"source": "test", "subject": "Checkout issue"},
},
)
assert created.status_code == 200
payload = created.json()
assert payload["message_id"].startswith("wcm_")
assert payload["interaction_id"].startswith("int_")
interaction = interaction_client.get(f"/interactions/{payload['interaction_id']}")
assert interaction.status_code == 200
assert interaction.json()["channel"] == "webchat"
assert interaction.json()["queue_id"] == "line2"
assert interaction.json()["customer_id"] == "cust_ext_1"
timeline = interaction_client.get(f"/interactions/{payload['interaction_id']}/timeline")
assert timeline.status_code == 200
actions = [event["action"] for event in timeline.json()["events"]]
assert "interaction.created" in actions
assert "webchat.message_received" in actions
listed = webchat_client.get("/integrations/webchat/messages?session_id=web_session_1")
assert listed.status_code == 200
assert len(listed.json()) >= 1
assert listed.json()[-1]["session_id"] == "web_session_1"