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()