Files
@ 5a73d3d8f8d4
Branch filter:
Location: NPO-Accounting/oxrlib/tests/test_CacheWriter.py - annotation
5a73d3d8f8d4
1.4 KiB
text/x-python
historical: Move normalize_rate and _pretty_rate to base Formatter.
This reduces the number of method overrides to help readability,
and gets rid of the annoying format_rate/pretty_rate distinction.
This reduces the number of method overrides to help readability,
and gets rid of the annoying format_rate/pretty_rate distinction.
2d482bb7b045 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 84bc0c7e84a7 2d482bb7b045 2d482bb7b045 2d482bb7b045 8e5cb0642fe1 8e5cb0642fe1 8e5cb0642fe1 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 84bc0c7e84a7 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 2d482bb7b045 6a416b162d8a 6a416b162d8a 6a416b162d8a 6a416b162d8a 84bc0c7e84a7 | 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 FakeCacheFile(oxrlib.cache.WriteCacheFile):
def __init__(self, path, *args, **kwargs):
self.path = path
assert args[0].startswith('w')
self.open_file = StringIO()
self.open_file.name = self.path.as_posix()
type(self).last_file = self.open_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=FakeCacheFile)
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 FakeCacheFile.last_file.last_value == json.dumps(rate.serialize())
|