diff --git a/tests/test_LoaderChain.py b/tests/test_LoaderChain.py index 13279341e65e01eb6e04e68e11dcfc0b1e28377c..5f3fa218afa032b32fbde8be94722f3fd320a478 100644 --- a/tests/test_LoaderChain.py +++ b/tests/test_LoaderChain.py @@ -11,8 +11,9 @@ SUCCESS_S = '"success"\n' ERROR = oxrlib.errors.LoaderNoDataError("test") class FakeLoader: - def __init__(self, result): + def __init__(self, result, *, is_cache=False): self.result = result + self._is_cache = is_cache def _respond(self, *args, **kwargs): return io.StringIO(self.result) @@ -20,13 +21,13 @@ class FakeLoader: def __getattr__(self, name): return self._respond + def is_cache(self): + return self._is_cache -class FakeErrorLoader(FakeLoader): - def __init__(self, error): - self.error = error +class FakeErrorLoader(FakeLoader): def _respond(self, *args, **kwargs): - raise self.error + raise self.result @pytest.fixture @@ -70,3 +71,21 @@ def test_no_success(lchain, any_date, error_loader, count): assert error is ERROR else: assert False, "{} not raised".format(type(ERROR).__name__) + +def test_should_cache(lchain, any_date, good_loader): + cache_loader = FakeErrorLoader(ERROR, is_cache=True) + lchain.add_loader(cache_loader) + lchain.add_loader(good_loader) + lchain.historical(any_date, 'USD') + assert lchain.should_cache() + +def test_should_cache_unable(lchain, any_date, good_loader): + lchain.add_loader(good_loader) + lchain.historical(any_date, 'USD') + assert not lchain.should_cache(), "suggested using unavailable cache" + +def test_should_cache_unneeded(lchain, any_date): + loader = FakeLoader(SUCCESS_S, is_cache=True) + lchain.add_loader(loader) + lchain.historical(any_date, 'USD') + assert not lchain.should_cache(), "suggested rewriting cache"