def test_fetch_events_within_time_range(): conversation_ids = ["some-id", "another-id"] # prepare events from different senders and different timestamps event_1 = random_user_uttered_event(3) event_2 = random_user_uttered_event(2) event_3 = random_user_uttered_event(1) events = { conversation_ids[0]: [event_1, event_2], conversation_ids[1]: [event_3] } def _get_tracker(conversation_id: Text) -> DialogueStateTracker: return DialogueStateTracker.from_events(conversation_id, events[conversation_id]) # create mock tracker store tracker_store = Mock() tracker_store.retrieve.side_effect = _get_tracker tracker_store.keys.return_value = conversation_ids exporter = MockExporter(tracker_store) exporter.requested_conversation_ids = conversation_ids # noinspection PyProtectedMember fetched_events = exporter._fetch_events_within_time_range() # events should come back for all requested conversation IDs assert all( any(_id in event["sender_id"] for event in fetched_events) for _id in conversation_ids) # events are sorted by timestamp despite the initially different order assert fetched_events == list( sorted(fetched_events, key=lambda e: e["timestamp"]))
def test_get_conversation_ids_to_process_error( requested_ids: Optional[List[Text]], available_ids: List[Text], exception: Exception): # create and mock tracker store containing `available_ids` as keys tracker_store = Mock() tracker_store.keys.return_value = available_ids exporter = MockExporter(tracker_store) exporter.requested_conversation_ids = requested_ids with pytest.raises(exception): # noinspection PyProtectedMember exporter._get_conversation_ids_to_process()
def test_get_conversation_ids_to_process( requested_ids: Optional[List[Text]], available_ids: Optional[List[Text]], expected: Optional[List[Text]], ): # create and mock tracker store containing `available_ids` as keys tracker_store = Mock() tracker_store.keys.return_value = available_ids exporter = MockExporter(tracker_store) exporter.requested_conversation_ids = requested_ids # noinspection PyProtectedMember assert exporter._get_conversation_ids_to_process() == set(expected)
def test_get_continuation_command( current_timestamp: float, maximum_timestamp: Optional[float], endpoints_path: Optional[Text], requested_ids: Optional[List[Text]], expected: Text, ): exporter = MockExporter() exporter.maximum_timestamp = maximum_timestamp exporter.endpoints_path = endpoints_path exporter.requested_conversation_ids = requested_ids # noinspection PyProtectedMember assert (export._get_continuation_command( exporter, current_timestamp) == f"rasa export {expected}")