oxrlib/tests/test_FileCache.py
Brett Smith eba27c16ae cache: Refactor out CacheBase from FileCache.
Now we can implement CacheWriter from the same base.
2017-05-12 11:58:35 -04:00

47 lines
1.5 KiB
Python

import datetime
import pathlib
import pytest
from . import any_date, relpath
import oxrlib.errors
import oxrlib.loaders
CACHE_PATH = relpath('filecache')
HISTORICAL_PATTERN = '{date}_{base}_cache.json'
@pytest.fixture
def dummycache():
cache = oxrlib.loaders.FileCache(CACHE_PATH)
cache.setup(historical=HISTORICAL_PATTERN)
return cache
@pytest.mark.parametrize('date,base', [
(datetime.date(1999, 2, 1), 'USD'),
(datetime.date(1999, 3, 1), 'EUR'),
])
def test_cache_success(dummycache, date, base):
expect_name = CACHE_PATH / HISTORICAL_PATTERN.format(date=date.isoformat(), base=base)
with dummycache.historical(date, base) as cache_file:
assert pathlib.Path(cache_file.name) == expect_name
@pytest.mark.parametrize('date,base,exc_type', [
(datetime.date(1999, 2, 1), 'EUR', oxrlib.errors.LoaderNoDataError),
(datetime.date(1999, 3, 1), 'USD', oxrlib.errors.LoaderNoDataError),
(datetime.date(1200, 12, 31), 'USD', oxrlib.errors.LoaderSourceError),
])
def test_cache_read_error(dummycache, date, base, exc_type):
try:
with dummycache.historical(date, base):
assert False, "{e.__name__} not raised".format(e=exc_type)
except exc_type:
pass
def test_cache_unconfigured(any_date):
cache = oxrlib.loaders.FileCache(CACHE_PATH)
try:
cache.historical(any_date, 'USD')
except oxrlib.errors.CacheLoaderConfigurationError:
pass
else:
assert False, "CacheLoaderConfigurationError not raised"