Skip to content

Commit 7727c72

Browse files
bhatt-deepcffls
authored andcommitted
Add tests for TransactionBuilder redeemer handling
1 parent 348c5a6 commit 7727c72

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

test/pycardano/test_txbuilder.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1866,3 +1866,68 @@ def test_add_script_input_post_chang(chain_context):
18661866
)
18671867

18681868
assert expected_redeemer_map == witness.redeemer
1869+
1870+
1871+
def test_transaction_witness_set_redeemers_list(chain_context):
1872+
"""Test that TransactionBuilder correctly stores Redeemer list"""
1873+
tx_builder = TransactionBuilder(chain_context)
1874+
redeemer_data = [
1875+
[0, 0, 42, [1000000, 2000000]],
1876+
[1, 1, "Hello", [3000000, 4000000]],
1877+
]
1878+
tx_builder._redeemers = [Redeemer.from_primitive(r) for r in redeemer_data]
1879+
1880+
assert tx_builder._redeemers is not None
1881+
assert len(tx_builder._redeemers) == 2
1882+
assert tx_builder._redeemers[0].tag == RedeemerTag.SPEND
1883+
assert tx_builder._redeemers[0].index == 0
1884+
assert tx_builder._redeemers[0].data == 42
1885+
assert tx_builder._redeemers[0].ex_units == ExecutionUnits(1000000, 2000000)
1886+
assert tx_builder._redeemers[1].tag == RedeemerTag.MINT
1887+
assert tx_builder._redeemers[1].index == 1
1888+
assert tx_builder._redeemers[1].data == "Hello"
1889+
assert tx_builder._redeemers[1].ex_units == ExecutionUnits(3000000, 4000000)
1890+
1891+
1892+
def test_transaction_witness_set_redeemers_dict(chain_context):
1893+
"""Test that TransactionBuilder correctly stores RedeemerMap"""
1894+
tx_builder = TransactionBuilder(chain_context)
1895+
redeemer_data = {
1896+
(0, 0): [42, [1000000, 2000000]],
1897+
(1, 1): ["Hello", [3000000, 4000000]],
1898+
}
1899+
tx_builder._redeemers = RedeemerMap(
1900+
{
1901+
RedeemerKey(RedeemerTag(tag), index): RedeemerValue(
1902+
data, ExecutionUnits(*ex_units)
1903+
)
1904+
for (tag, index), (data, ex_units) in redeemer_data.items()
1905+
}
1906+
)
1907+
1908+
assert tx_builder._redeemers is not None
1909+
assert isinstance(tx_builder._redeemers, RedeemerMap)
1910+
assert len(tx_builder._redeemers) == 2
1911+
1912+
key1 = RedeemerKey(RedeemerTag.SPEND, 0)
1913+
assert tx_builder._redeemers[key1].data == 42
1914+
assert tx_builder._redeemers[key1].ex_units == ExecutionUnits(1000000, 2000000)
1915+
1916+
key2 = RedeemerKey(RedeemerTag.MINT, 1)
1917+
assert tx_builder._redeemers[key2].data == "Hello"
1918+
assert tx_builder._redeemers[key2].ex_units == ExecutionUnits(3000000, 4000000)
1919+
1920+
1921+
def test_transaction_witness_set_redeemers_invalid_format(chain_context):
1922+
"""Test that TransactionBuilder can store invalid redeemer data"""
1923+
tx_builder = TransactionBuilder(chain_context)
1924+
invalid_redeemer_data = "invalid_data"
1925+
tx_builder._redeemers = invalid_redeemer_data
1926+
assert tx_builder._redeemers == "invalid_data"
1927+
1928+
1929+
def test_transaction_witness_set_no_redeemers(chain_context):
1930+
"""Test that build_witness_set() returns a WitnessSet with no Redeemer"""
1931+
tx_builder = TransactionBuilder(chain_context)
1932+
witness_set = tx_builder.build_witness_set()
1933+
assert witness_set.redeemer is None

0 commit comments

Comments
 (0)