@@ -144,6 +144,26 @@ def test_mutable_copy():
assert all(post.meta is None for post in txn.postings)
assert meta.date == txn.date
def test_double_detached():
txn = testutil.Transaction(filename='f', lineno=140, postings=[
('Income:Donations', -19),
])
meta1 = data.PostingMeta(txn, 0).detached()
meta1['metakey'] = 'meta'
meta1['layerkey'] = 'one'
meta2 = meta1.detached()
meta2['layerkey'] = 'two'
expected = {
'filename': 'f',
'lineno': 140,
'metakey': 'meta',
'layerkey': 'two',
}
assert dict(meta2) == expected
expected['layerkey'] = 'one'
assert dict(meta1) == expected
assert not any(post.meta for post in txn.postings)
# The .get() tests are arguably testing the stdlib, but they're short and
# they confirm that we're using the stdlib as we intend.
def test_get_with_meta_value(simple_txn):