Files @ c3fd55ec15b7
Branch filter:

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

Brett Smith
historical: Beancount can handle commas in amounts.

And having it looks nicer, is more consistent with our historical
books, is less code for me, and is no more trouble for the user.
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)