Files
@ 08840e6757a1
Branch filter:
Location: NPO-Accounting/oxrlib/tests/test_CacheWriter.py - annotation
08840e6757a1
1.4 KiB
text/x-python
setup.py: Start script.
2d482bb7b045 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a | import datetime
import json
import pathlib
import pytest
from . import any_date, relpath, StringIO
import oxrlib.cache
import oxrlib.errors
CACHE_PATH = relpath('writecache')
HISTORICAL_PATTERN = '{date}_{base}_cache.json'
class TestCacheFile(oxrlib.cache.WriteCacheFile):
def __init__(self, path, *args, **kwargs):
self.path = path
assert args[0].startswith('w')
def open(self):
last_file = StringIO()
last_file.name = self.path.as_posix()
type(self).last_file = last_file
return self.last_file
class FakeRate:
def __init__(self, date, base):
self.timestamp = datetime.datetime(date.year, date.month, date.day)
self.base = base
def serialize(self):
return "test data for {} in {}".format(self.base, self.timestamp.date())
@pytest.fixture
def dummycache():
cache = oxrlib.cache.CacheWriter(CACHE_PATH, file_class=TestCacheFile)
cache.setup(historical=HISTORICAL_PATTERN)
return cache
def test_cache_success(dummycache, any_date):
base = 'USD'
expect_name = CACHE_PATH / HISTORICAL_PATTERN.format(date=any_date.isoformat(), base=base)
with dummycache.historical(any_date, base) as cache_file:
assert pathlib.Path(cache_file.name) == expect_name
def test_save_rate(dummycache, any_date):
rate = FakeRate(any_date, 'USD')
dummycache.save_rate(rate)
assert TestCacheFile.last_file.last_value == json.dumps(rate.serialize())
|