def test_set_fail_safe_tracker_store_domain(default_domain: Domain): tracker_store = InMemoryTrackerStore(domain) fallback_tracker_store = InMemoryTrackerStore(None) failsafe_store = FailSafeTrackerStore(tracker_store, None, fallback_tracker_store) failsafe_store.domain = default_domain assert failsafe_store.domain is default_domain assert tracker_store.domain is failsafe_store.domain assert fallback_tracker_store.domain is failsafe_store.domain
def create_tracker_store(store: Optional[TrackerStore], domain: Domain) -> TrackerStore: if store is not None: store.domain = domain tracker_store = store else: tracker_store = InMemoryTrackerStore(domain) return FailSafeTrackerStore(tracker_store)
def test_fail_safe_tracker_store_with_keys_error(): mocked_tracker_store = Mock() mocked_tracker_store.keys = Mock(side_effect=Exception()) on_error_callback = Mock() tracker_store = FailSafeTrackerStore(mocked_tracker_store, on_error_callback) assert tracker_store.keys() == [] on_error_callback.assert_called_once()
def test_fail_safe_tracker_store_with_retrieve_error(): mocked_tracker_store = Mock() mocked_tracker_store.retrieve = Mock(side_effect=Exception()) fallback_tracker_store = Mock() on_error_callback = Mock() tracker_store = FailSafeTrackerStore( mocked_tracker_store, on_error_callback, fallback_tracker_store ) assert tracker_store.retrieve("sender_id") is None on_error_callback.assert_called_once()
def test_fail_safe_tracker_store_with_save_error(): mocked_tracker_store = Mock() mocked_tracker_store.save = Mock(side_effect=Exception()) fallback_tracker_store = Mock() fallback_tracker_store.save = Mock() on_error_callback = Mock() tracker_store = FailSafeTrackerStore( mocked_tracker_store, on_error_callback, fallback_tracker_store ) tracker_store.save(None) fallback_tracker_store.save.assert_called_once() on_error_callback.assert_called_once()
def test_fail_safe_tracker_store_if_no_errors(): mocked_tracker_store = Mock() tracker_store = FailSafeTrackerStore(mocked_tracker_store, None) # test save mocked_tracker_store.save = Mock() tracker_store.save(None) mocked_tracker_store.save.assert_called_once() # test retrieve expected = [1] mocked_tracker_store.retrieve = Mock(return_value=expected) sender_id = "10" assert tracker_store.retrieve(sender_id) == expected mocked_tracker_store.retrieve.assert_called_once_with(sender_id) # test keys expected = ["sender 1", "sender 2"] mocked_tracker_store.keys = Mock(return_value=expected) assert tracker_store.keys() == expected mocked_tracker_store.keys.assert_called_once()