diff --git a/tests/test_data_metadata.py b/tests/test_data_metadata.py index 6fd0af9ac67ff31b84628530265727de69451820..effba9dc3109c4f2a7a1ed8a82a9f6e672afb9bc 100644 --- a/tests/test_data_metadata.py +++ b/tests/test_data_metadata.py @@ -57,3 +57,35 @@ def test_get_links_bad_type(value): meta = data.Metadata({'key': value}) with pytest.raises(TypeError): meta.get_links('key') + +def test_first_link_from_txn(simple_txn): + meta = data.PostingMeta(simple_txn, 0) + assert meta.first_link('note') == 'txn' + +def test_first_link_from_post_override(simple_txn): + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('note') == 'donation' + +def test_first_link_is_only_link(simple_txn): + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('extra') == 'Extra' + +def test_first_link_nonexistent_metadata(simple_txn): + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('Nonexistent') is None + +def test_first_link_nonexistent_default(simple_txn): + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('Nonexistent', 'missing') == 'missing' + +@pytest.mark.parametrize('meta_value', testutil.NON_STRING_METADATA_VALUES) +def test_first_link_bad_type_metadata(simple_txn, meta_value): + simple_txn.meta['badmeta'] = meta_value + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('badmeta') is None + +@pytest.mark.parametrize('meta_value', testutil.NON_STRING_METADATA_VALUES) +def test_first_link_bad_type_default(simple_txn, meta_value): + simple_txn.meta['badmeta'] = meta_value + meta = data.PostingMeta(simple_txn, 1) + assert meta.first_link('badmeta', '_') == '_'