Files
@ a135e71a4a31
Branch filter:
Location: NPO-Accounting/import2ledger/tests/test_importers.py - annotation
a135e71a4a31
1.5 KiB
text/x-python
nbpy2017: Handle complimentary tickets.
The conference is offering these to people who proposed talks this year.
The conference is offering these to people who proposed talks this year.
5c73c40bccfe e5a0089eb900 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe a924d9fb1f89 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 1b98ab2015f9 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 1b98ab2015f9 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe 5c73c40bccfe | import datetime
import decimal
import importlib
import itertools
import pathlib
import re
import pytest
import yaml
from import2ledger import importers, strparse
from . import DATA_DIR
class TestImporters:
with pathlib.Path(DATA_DIR, 'imports.yml').open() as yaml_file:
test_data = yaml.load(yaml_file)
for test in test_data:
test['source'] = DATA_DIR / test['source']
module_name, class_name = test['importer'].rsplit('.', 1)
module = importlib.import_module('.' + module_name, 'import2ledger.importers')
test['importer'] = getattr(module, class_name)
@pytest.mark.parametrize('source_path,importer', [
(t['source'], t['importer']) for t in test_data
])
def test_can_import(self, source_path, importer):
with source_path.open() as source_file:
assert importer.can_import(source_file)
@pytest.mark.parametrize('source_path,import_class,expect_results', [
(t['source'], t['importer'], t['expect']) for t in test_data
])
def test_import(self, source_path, import_class, expect_results):
with source_path.open() as source_file:
importer = import_class(source_file)
for actual, expected in itertools.zip_longest(importer, expect_results):
actual['amount'] = strparse.currency_decimal(actual['amount'])
assert actual == expected
def test_loader(self):
all_importers = list(importers.load_all())
for test in self.test_data:
assert test['importer'] in all_importers
|