Files @ c3fd55ec15b7
Branch filter:

Location: NPO-Accounting/oxrlib/tests/test_FileCache.py

Brett Smith
historical: Beancount can handle commas in amounts.

And having it looks nicer, is more consistent with our historical
books, is less code for me, and is no more trouble for the user.
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"