Changeset - 2b23eba549ad
[Not reviewed]
0 2 0
Brett Smith - 4 years ago 2020-10-26 18:52:41
brettcsmith@brettcsmith.org
data: PostingMeta.detached() can be chain-called.
2 files changed with 21 insertions and 1 deletions:
0 comments (0 inline, 0 general)
conservancy_beancount/data.py
Show inline comments
...
 
@@ -567,7 +567,7 @@ class PostingMeta(Metadata):
 
        that may want to "split" and manipulate the metadata multiple times.
 
        """
 
        retval = type(self)(self.txn, self.index, self.post)
 
        retval.meta = retval.meta.new_child()
 
        retval.meta = self.meta.new_child()
 
        return retval
 

	
 

	
tests/test_data_posting_meta.py
Show inline comments
...
 
@@ -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):
0 comments (0 inline, 0 general)