async def test_has_session_expired( event_to_apply: Optional[Event], session_expiration_time_in_minutes: float, has_expired: bool, default_processor: MessageProcessor, ): sender_id = uuid.uuid4().hex default_processor.domain.session_config = SessionConfig( session_expiration_time_in_minutes, True) # create new tracker without events tracker = default_processor.tracker_store.get_or_create_tracker(sender_id) tracker.events.clear() # apply desired event if event_to_apply: tracker.update(event_to_apply) # noinspection PyProtectedMember assert default_processor._has_session_expired(tracker) == has_expired
async def test_fetch_tracker_with_initial_session_does_not_update_session( default_channel: CollectingOutputChannel, default_processor: MessageProcessor, monkeypatch: MonkeyPatch, ): conversation_id = uuid.uuid4().hex # the domain has a session expiration time of one second monkeypatch.setattr( default_processor.tracker_store.domain, "session_config", SessionConfig(carry_over_slots=True, session_expiration_time=1 / 60), ) now = time.time() # the tracker initially contains events initial_events = [ ActionExecuted(ACTION_SESSION_START_NAME, timestamp=now - 10), SessionStarted(timestamp=now - 9), ActionExecuted(ACTION_LISTEN_NAME, timestamp=now - 8), UserUttered( "/greet", {INTENT_NAME_KEY: "greet", "confidence": 1.0}, timestamp=now - 7 ), ] tracker = DialogueStateTracker.from_events(conversation_id, initial_events) default_processor.tracker_store.save(tracker) tracker = await default_processor.fetch_tracker_with_initial_session( conversation_id, default_channel ) # the conversation session has expired, but calling # `fetch_tracker_with_initial_session()` did not update it assert default_processor._has_session_expired(tracker) assert [event.as_dict() for event in tracker.events] == [ event.as_dict() for event in initial_events ]