Files @ 71893ace4dc0
Branch filter:

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

Brett Smith
tests: Historical tests use more flexible rate matching.

This lets the tests be more flexible about how much precision is used in
rates when appropriate, and makes them ready to parametrize for
Beancount.
import datetime
import decimal
import io
import json

from . import relpath

import oxrlib.rate
import pytest

HIST1_AED_RATE = decimal.Decimal('3.67246')
HIST1_ALL_RATE = decimal.Decimal('144.529793')

@pytest.fixture
def historical1_rate():
    with open(relpath('historical1.json').as_posix()) as rate_file:
        return oxrlib.rate.Rate.from_json_file(rate_file)

def test_rate_from_json(historical1_rate):
    assert historical1_rate.base == 'USD'
    assert historical1_rate.timestamp == datetime.datetime(2001, 2, 16, 12, 0, 0)

def test_serialize(historical1_rate):
    with open(relpath('historical1.json').as_posix()) as rate_file:
        expected = json.load(rate_file)
    assert expected == historical1_rate.serialize()

def test_convert(historical1_rate):
    assert historical1_rate.convert(2, 'USD', 'ALL') == (2 * HIST1_ALL_RATE)
    assert historical1_rate.convert(10, 'AED', 'USD') == (10 / HIST1_AED_RATE)
    assert historical1_rate.convert(1, 'AED', 'ALL') == (HIST1_ALL_RATE / HIST1_AED_RATE)