eba27c16ae
Now we can implement CacheWriter from the same base.
47 lines
1.5 KiB
Python
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"
|