From 1cbc9d3dc9330e20e38dbb9eef72d2b0ba8f7c25 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Thu, 11 Jun 2020 09:55:13 -0400 Subject: [PATCH] tests: Add _meta_type kwarg to testutil.Posting. --- tests/test_reports_related_postings.py | 51 ++++++++------------------ tests/testutil.py | 6 ++- 2 files changed, 20 insertions(+), 37 deletions(-) diff --git a/tests/test_reports_related_postings.py b/tests/test_reports_related_postings.py index e1b953c..6c0fe20 100644 --- a/tests/test_reports_related_postings.py +++ b/tests/test_reports_related_postings.py @@ -248,50 +248,31 @@ def test_meta_values_many_types(): @pytest.mark.parametrize('count', range(3)) def test_all_meta_links_zero(count): - postings = ( - testutil.Posting('Income:Donations', -n, testkey=str(n)) - for n in range(count) - ) - related = core.RelatedPostings( - post._replace(meta=data.Metadata(post.meta)) - for post in postings - ) + related = core.RelatedPostings(testutil.Posting( + 'Income:Donations', -n, testkey=str(n), _meta_type=data.Metadata, + ) for n in range(count)) assert next(related.all_meta_links('approval'), None) is None def test_all_meta_links_singletons(): - postings = ( - testutil.Posting('Income:Donations', -10, statement=value) - for value in itertools.chain( - testutil.NON_LINK_METADATA_STRINGS, - testutil.LINK_METADATA_STRINGS, - testutil.NON_STRING_METADATA_VALUES, - )) - related = core.RelatedPostings( - post._replace(meta=data.Metadata(post.meta)) - for post in postings - ) + related = core.RelatedPostings(testutil.Posting( + 'Income:Donations', -10, statement=value, _meta_type=data.Metadata, + ) for value in itertools.chain( + testutil.NON_LINK_METADATA_STRINGS, + testutil.LINK_METADATA_STRINGS, + testutil.NON_STRING_METADATA_VALUES, + )) assert set(related.all_meta_links('statement')) == testutil.LINK_METADATA_STRINGS def test_all_meta_links_multiples(): - postings = ( - testutil.Posting('Income:Donations', -10, approval=' '.join(value)) - for value in itertools.permutations(testutil.LINK_METADATA_STRINGS, 2) - ) - related = core.RelatedPostings( - post._replace(meta=data.Metadata(post.meta)) - for post in postings - ) + related = core.RelatedPostings(testutil.Posting( + 'Income:Donations', -10, approval=' '.join(value), _meta_type=data.Metadata, + ) for value in itertools.permutations(testutil.LINK_METADATA_STRINGS, 2)) assert set(related.all_meta_links('approval')) == testutil.LINK_METADATA_STRINGS def test_all_meta_links_preserves_order(): - postings = ( - testutil.Posting('Income:Donations', -10, approval=c) - for c in '121323' - ) - related = core.RelatedPostings( - post._replace(meta=data.Metadata(post.meta)) - for post in postings - ) + related = core.RelatedPostings(testutil.Posting( + 'Income:Donations', -10, approval=c, _meta_type=data.Metadata, + ) for c in '121323') assert list(related.all_meta_links('approval')) == list('123') def test_group_by_meta_zero(): diff --git a/tests/testutil.py b/tests/testutil.py index f904934..a18ef20 100644 --- a/tests/testutil.py +++ b/tests/testutil.py @@ -116,12 +116,14 @@ def Cost(number, currency='USD', date=FY_MID_DATE, label=None): def Posting(account, number, currency='USD', cost=None, price=None, flag=None, - type_=bc_data.Posting, **meta): + _post_type=bc_data.Posting, _meta_type=None, **meta): if cost is not None: cost = Cost(*cost) if not meta: meta = None - return type_( + elif _meta_type: + meta = _meta_type(meta) + return _post_type( account, Amount(number, currency), cost,