diff --git a/bigchaindb/common/transaction.py b/bigchaindb/common/transaction.py index 62269d0c..c4f646dc 100644 --- a/bigchaindb/common/transaction.py +++ b/bigchaindb/common/transaction.py @@ -189,6 +189,12 @@ class TransactionLink(object): 'cid': self.cid, } + def to_uri(self, path=''): + if self.txid is None and self.cid is None: + return None + return '{}/transactions/{}/conditions/{}'.format(path, self.txid, + self.cid) + class Condition(object): """A Condition is used to lock an asset. diff --git a/tests/common/test_transaction.py b/tests/common/test_transaction.py index 5e341fcc..ebd2b8e7 100644 --- a/tests/common/test_transaction.py +++ b/tests/common/test_transaction.py @@ -428,6 +428,24 @@ def test_transaction_link_deserialization_with_empty_payload(): assert tx_link == expected +def test_transaction_link_empty_to_uri(): + from bigchaindb.common.transaction import TransactionLink + + expected = None + tx_link = TransactionLink().to_uri() + + assert expected == tx_link + + +def test_transaction_link_to_uri(): + from bigchaindb.common.transaction import TransactionLink + + expected = 'path/transactions/abc/conditions/0' + tx_link = TransactionLink('abc', 0).to_uri('path') + + assert expected == tx_link + + def test_cast_transaction_link_to_boolean(): from bigchaindb.common.transaction import TransactionLink