Files
@ 9be9b07a8d54
Branch filter:
Location: oxrlib-fork/tests/test_Configuration.py - annotation
9be9b07a8d54
2.6 KiB
text/x-python
historical: Add Ledger output formatting.
08073f752bc8 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 18f7ea7038d3 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 18f7ea7038d3 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 0120e4ce5a5a 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 08073f752bc8 | import decimal
import os
import pytest
from . import any_date, relpath
import oxrlib.cache
import oxrlib.config
import oxrlib.loaders
INI_DIR_PATH = relpath('config_ini')
def config_from(ini_filename, arglist=None):
if arglist is None:
arglist = ['historical', any_date().isoformat()]
ini_path = INI_DIR_PATH / ini_filename
return oxrlib.config.Configuration(['--config-file', ini_path.as_posix()] + arglist)
def test_full_config():
config = config_from('full.ini')
loaders = config.get_loaders().loaders
assert type(loaders[0]) is oxrlib.loaders.FileCache
assert type(loaders[1]) is oxrlib.loaders.OXRAPIRequest
assert len(loaders) == 2
assert type(config.cache) is oxrlib.cache.CacheWriter
def test_incomplete_config():
config = config_from('incomplete.ini')
assert not config.get_loaders().loaders
def test_empty_config():
config = config_from(os.devnull)
assert not config.get_loaders().loaders
@pytest.mark.parametrize('ini_filename,expected_currency,use_switch', [
(os.devnull, 'USD', False),
('full.ini', 'INI', False),
('full.ini', 'EUR', True),
])
def test_historical_default_base(ini_filename, expected_currency, use_switch, any_date):
arglist = ['historical']
if use_switch:
arglist.extend(['--base', expected_currency])
arglist.append(any_date.isoformat())
config = config_from(ini_filename, arglist)
assert config.args.base == expected_currency
@pytest.mark.parametrize('amount,from_curr,preposition,to_curr', [
(None, 'JPY', None, None),
(decimal.Decimal('1000'), 'chf', None, None),
(decimal.Decimal('999'), 'Eur', None, 'Chf'),
(decimal.Decimal('12.34'), 'gbp', 'IN', 'eur'),
])
def test_historical_argparsing_success(amount, from_curr, preposition, to_curr, any_date):
arglist = ['historical', any_date.isoformat()]
arglist.extend(str(s) for s in [amount, from_curr, preposition, to_curr]
if s is not None)
config = config_from(os.devnull, arglist)
assert config.args.amount == amount
assert config.args.from_currency == from_curr.upper()
if to_curr is not None:
assert config.args.to_currency == to_curr.upper()
@pytest.mark.parametrize('arglist', [
['100'],
['120', 'dollars'],
['to', '42', 'usd'],
['99', 'usd', 'minus', 'jpy'],
['usdjpy'],
['44', 'eur', 'in', 'chf', 'pronto'],
])
def test_historical_argparsing_failure(arglist, any_date):
arglist = ['historical', any_date.isoformat()] + arglist
try:
config = config_from(os.devnull, arglist)
except SystemExit:
pass
else:
assert not vars(config.args), "bad arglist succeeded"
|