diff --git a/tests/test_reports_related_postings.py b/tests/test_reports_related_postings.py index e1b953cc4728112d9c65a993e3383e58098fdc77..6c0fe20762404f15e89d34a089a7573c1d37546c 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 f9049344533c4d8082904ebeb22d7b70dc0b2b9f..a18ef2065e8d1420e28e832a264bc8238259a242 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,