You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
orquestrador/tests/test_conversation_state_sto...

56 lines
2.0 KiB
Python

import unittest
from app.core.time_utils import utc_now
from app.services.orchestration.conversation_state_store import ConversationStateStore
class ConversationStateStoreTests(unittest.TestCase):
def test_save_user_context_preserves_existing_expiration_when_missing(self):
store = ConversationStateStore()
store.upsert_user_context(1, ttl_minutes=30)
original_expires_at = store.get_user_context(1)["expires_at"]
store.save_user_context(
1,
{
"active_domain": "sales",
"active_task": "order_create",
"generic_memory": {},
"shared_memory": {},
"collected_slots": {},
"flow_snapshots": {},
"last_tool_result": None,
"order_queue": [],
"pending_order_selection": None,
"pending_switch": None,
"last_stock_results": [],
"selected_vehicle": None,
"last_rental_results": [],
"selected_rental_vehicle": None,
},
)
stored_context = store.get_user_context(1)
self.assertEqual(stored_context["active_domain"], "sales")
self.assertEqual(stored_context["active_task"], "order_create")
self.assertEqual(stored_context["expires_at"], original_expires_at)
def test_pending_email_capture_bucket_supports_set_get_and_pop(self):
store = ConversationStateStore()
payload = {
"request_id": "req-1",
"event_type": "order.created",
"payload": {"numero_pedido": "PED-1", "user_id": 7},
"expires_at": utc_now(),
}
store.set_entry("pending_email_capture_requests", 7, payload)
self.assertEqual(store.get_entry("pending_email_capture_requests", 7), payload)
self.assertEqual(store.pop_entry("pending_email_capture_requests", 7), payload)
self.assertIsNone(store.get_entry("pending_email_capture_requests", 7))
if __name__ == "__main__":
unittest.main()