diff options
author | nolash <dev@holbrook.no> | 2021-05-08 07:51:13 +0200 |
---|---|---|
committer | nolash <dev@holbrook.no> | 2021-05-08 07:51:13 +0200 |
commit | 0a98d041f5423a82bd9363a19eabe0425bd3e35f (patch) | |
tree | f46fb883db666131027ef0b4ba8879f448a1efd4 | |
parent | 921d493b987145f8802f52a0cc21c3a41ae07b02 (diff) |
Add minted at
-rw-r--r-- | python/eth_devbadge/token.py | 20 | ||||
-rw-r--r-- | python/tests/test_app.py | 8 |
2 files changed, 28 insertions, 0 deletions
diff --git a/python/eth_devbadge/token.py b/python/eth_devbadge/token.py index adde78d..d93da12 100644 --- a/python/eth_devbadge/token.py +++ b/python/eth_devbadge/token.py @@ -168,6 +168,21 @@ class BadgeToken(ERC20): return o + def minted_at(self, contract_address, token_id, sender_address=ZERO_ADDRESS): + o = jsonrpc_template() + o['method'] = 'eth_call' + enc = ABIContractEncoder() + enc.method('mintedAt') + enc.typ(ABIContractType.UINT256) + enc.uint256(token_id) + data = add_0x(enc.get()) + tx = self.template(sender_address, contract_address) + tx = self.set_code(tx, data) + o['params'].append(self.normalize(tx)) + o['params'].append('latest') + return o + + def token_of_owner_by_index(self, contract_address, holder_address, idx, sender_address=ZERO_ADDRESS): o = jsonrpc_template() o['method'] = 'eth_call' @@ -220,3 +235,8 @@ class BadgeToken(ERC20): return abi_decode_single(ABIContractType.ADDRESS, v) + @classmethod + def parse_minted_at(self, v): + return abi_decode_single(ABIContractType.UINT256, v) + + diff --git a/python/tests/test_app.py b/python/tests/test_app.py index b3263ad..4d35999 100644 --- a/python/tests/test_app.py +++ b/python/tests/test_app.py @@ -65,6 +65,8 @@ class Test(EthTesterCase): def test_mint(self): + self.backend.mine_blocks(42) + token_bytes = b'\xee' * 32 token_id = int.from_bytes(token_bytes, byteorder='big') c = self._mint(self.accounts[1], token_id) @@ -79,6 +81,12 @@ class Test(EthTesterCase): self.assertEqual(supply, 1) + o = c.minted_at(self.address, token_id, sender_address=self.accounts[0]) + r = self.rpc.do(o) + height = c.parse_minted_at(r) + + self.assertEqual(height, 44) + def test_owner(self): token_bytes = b'\xee' * 32 |