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"