tests: Add _meta_type kwarg to testutil.Posting.
This commit is contained in:
parent
f76fa35fad
commit
1cbc9d3dc9
2 changed files with 20 additions and 37 deletions
|
@ -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():
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue