Files @ f0dafcaed9e9
Branch filter:

Location: NPO-Accounting/import2ledger/tests/test_hooks.py

Brett Smith
hooks.add_entity: ASCIIfy stroke characters.
import argparse
import datetime
import itertools

import pytest

from import2ledger import hooks
from import2ledger.hooks import add_entity, default_date

def test_load_all():
    all_hooks = list(hooks.load_all())
    assert add_entity.AddEntityHook in all_hooks

@pytest.mark.parametrize('payee,expected', [
    ('Alex Smith', 'Smith-Alex'),
    ('Dakota D.  Doe', 'Doe-Dakota-D'),
    ('Björk', 'Bjork'),
    ('Fran Doe-Smith', 'Doe-Smith-Fran'),
    ('Alex(Nickname) Smith', 'Smith-Alex'),
    ('稲荷', '稲荷'),
    ('Pøweł', 'Powel'),
])
def test_add_entity(payee, expected):
    data = {'payee': payee}
    hook = add_entity.AddEntityHook(argparse.Namespace())
    hook.run(data)
    assert data['entity'] == expected


class DefaultDateConfig:
    ONE_DAY = datetime.timedelta(days=1)

    def __init__(self, start_date=None):
        if start_date is None:
            start_date = datetime.date(2016, 3, 5)
        self.date = start_date - self.ONE_DAY

    def get_default_date(self, section_name=None):
        self.date += self.ONE_DAY
        return self.date


class TestDefaultDate:
    def test_simple_case(self):
        expect_date = datetime.date(2016, 2, 4)
        config = DefaultDateConfig(expect_date)
        data = {}
        hook = default_date.DefaultDateHook(config)
        hook.run(data)
        assert data['date'] == expect_date

    def test_no_caching(self):
        config = DefaultDateConfig()
        hook = default_date.DefaultDateHook(config)
        d1 = {}
        d2 = {}
        hook.run(d1)
        hook.run(d2)
        assert d1['date'] != d2['date']

    def test_no_override(self):
        expect_date = datetime.date(2016, 2, 6)
        config = DefaultDateConfig(expect_date + datetime.timedelta(days=300))
        hook = default_date.DefaultDateHook(config)
        data = {'date': expect_date}
        hook.run(data)
        assert data['date'] is expect_date