Added fix for "safeBatchTransferFrom" issue

pull/35/head
Neeraj Kashyap 2022-02-01 07:28:02 -08:00
rodzic dfa1cc5bcb
commit f8df47b5ce
2 zmienionych plików z 57 dodań i 0 usunięć

Wyświetl plik

@ -275,6 +275,11 @@ contract ERC1155WithTerminusStorage is
uint256 id = ids[i];
uint256 amount = amounts[i];
require(
!ts.poolNotTransferable[id],
"ERC1155WithTerminusStorage: _safeBatchTransferFrom -- pool is not transferable"
);
uint256 fromBalance = ts.poolBalances[id][from];
require(
fromBalance >= amount,

Wyświetl plik

@ -742,6 +742,58 @@ class TestCreatePoolV1(TestPoolOperations):
self.assertEqual(final_pool_supply, initial_pool_supply)
self.assertEqual(final_owner_balance, initial_owner_balance)
def test_nontransferable_pool_safe_transfer_from(self):
self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]})
pool_id = self.diamond_terminus.total_pools()
self.diamond_terminus.mint(accounts[2], pool_id, 1, b"", {"from": accounts[1]})
initial_pool_supply = self.diamond_terminus.terminus_pool_supply(pool_id)
initial_owner_balance = self.diamond_terminus.balance_of(
accounts[2].address, pool_id
)
with self.assertRaises(Exception):
self.diamond_terminus.safe_transfer_from(
accounts[2].address,
accounts[3].address,
pool_id,
1,
b"",
{"from": accounts[2]},
)
final_pool_supply = self.diamond_terminus.terminus_pool_supply(pool_id)
final_owner_balance = self.diamond_terminus.balance_of(
accounts[2].address, pool_id
)
self.assertEqual(final_pool_supply, initial_pool_supply)
self.assertEqual(final_owner_balance, initial_owner_balance)
def test_nontransferable_pool_safe_batch_transfer_from(self):
self.diamond_terminus.create_pool_v1(10, False, False, {"from": accounts[1]})
pool_id = self.diamond_terminus.total_pools()
self.diamond_terminus.mint(accounts[2], pool_id, 1, b"", {"from": accounts[1]})
initial_pool_supply = self.diamond_terminus.terminus_pool_supply(pool_id)
initial_owner_balance = self.diamond_terminus.balance_of(
accounts[2].address, pool_id
)
with self.assertRaises(Exception):
self.diamond_terminus.safe_batch_transfer_from(
accounts[2].address,
accounts[3].address,
[pool_id],
[1],
b"",
{"from": accounts[2]},
)
final_pool_supply = self.diamond_terminus.terminus_pool_supply(pool_id)
final_owner_balance = self.diamond_terminus.balance_of(
accounts[2].address, pool_id
)
self.assertEqual(final_pool_supply, initial_pool_supply)
self.assertEqual(final_owner_balance, initial_owner_balance)
if __name__ == "__main__":
unittest.main()