loaders: Initial commit.

This commit is contained in:
Brett Smith 2017-05-09 10:32:23 -04:00
parent a181166311
commit d1ba2dbc6a
5 changed files with 47 additions and 2 deletions

9
oxrlib/loaders.py Normal file
View file

@ -0,0 +1,9 @@
class FileCache:
def __init__(self, dir_path, filename_pattern):
self.dir_path = dir_path
self.pattern = filename_pattern
def historical(self, date, base):
path = self.dir_path / self.pattern.format(date=date.isoformat(), base=base)
return path.open()

View file

@ -2,5 +2,5 @@ import pathlib
TEST_DIR = pathlib.Path(__file__).parent
def relpath(path):
return TEST_DIR / pathlib.Path(path)
def relpath(*parts):
return TEST_DIR / pathlib.Path(*parts)

36
tests/test_loaders.py Normal file
View file

@ -0,0 +1,36 @@
import datetime
import pathlib
import pytest
from . import relpath
import oxrlib.loaders
CACHE_PATH = relpath('filecache')
CACHE_PATTERN = '{date}_{base}_cache.json'
@pytest.fixture
def dummycache():
return oxrlib.loaders.FileCache(CACHE_PATH, CACHE_PATTERN)
@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 / CACHE_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', [
(datetime.date(1999, 2, 1), 'EUR'),
(datetime.date(1999, 3, 1), 'USD'),
])
def test_cache_not_found(dummycache, date, base):
try:
cache_file = dummycache.historical(date, base)
except FileNotFoundError:
pass
else:
cache_file.close()
assert False, "cache file found when unexpected"