@@ -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
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):
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)
assert not lchain.should_cache(), "suggested rewriting cache"