git.delta.rocks / unique-network / refs/commits / 39054b7734c3

difftreelog

Add test: refungible ERC-20

Max Andreev2022-12-06parent: #b81a4df.patch.diff
in: master

1 file changed

modifiedtests/src/eth/reFungibleToken.test.tsdiffbeforeafterboth
227 }227 }
228 });228 });
229
230 [
231 'transfer',
232 // 'transferCross', // TODO
233 ].map(testCase =>
234 itEth(`Cannot ${testCase}() non-owned token`, async ({helper}) => {
235 const owner = await helper.eth.createAccountWithBalance(donor);
236 const receiver = await helper.eth.createAccountWithBalance(donor);
237 const collection = await helper.rft.mintCollection(alice);
238 const rftOwner = await collection.mintToken(alice, 10n, {Ethereum: owner});
239 const rftReceiver = await collection.mintToken(alice, 10n, {Ethereum: receiver});
240 const tokenIdNonExist = 9999999;
241
242 const tokenAddress1 = helper.ethAddress.fromTokenId(collection.collectionId, rftOwner.tokenId);
243 const tokenAddress2 = helper.ethAddress.fromTokenId(collection.collectionId, rftReceiver.tokenId);
244 const tokenAddressNonExist = helper.ethAddress.fromTokenId(collection.collectionId, tokenIdNonExist);
245 const tokenEvmOwner = helper.ethNativeContract.rftToken(tokenAddress1, owner);
246 const tokenEvmReceiver = helper.ethNativeContract.rftToken(tokenAddress2, owner);
247 const tokenEvmNonExist = helper.ethNativeContract.rftToken(tokenAddressNonExist, owner);
248
249 // 1. Can transfer zero amount (EIP-20):
250 await tokenEvmOwner.methods[testCase](receiver, 0).send({from: owner});
251 // 2. Cannot transfer non-owned token:
252 await expect(tokenEvmReceiver.methods[testCase](owner, 0).send({from: owner})).to.be.rejected;
253 await expect(tokenEvmReceiver.methods[testCase](owner, 5).send({from: owner})).to.be.rejected;
254 // 3. Cannot transfer non-existing token:
255 await expect(tokenEvmNonExist.methods[testCase](owner, 0).send({from: owner})).to.be.rejected;
256 await expect(tokenEvmNonExist.methods[testCase](owner, 5).send({from: owner})).to.be.rejected;
257
258 // 4. Storage is not corrupted:
259 expect(await rftOwner.getTop10Owners()).to.deep.eq([{Ethereum: owner.toLowerCase()}]);
260 expect(await rftReceiver.getTop10Owners()).to.deep.eq([{Ethereum: receiver.toLowerCase()}]);
261 expect(await helper.rft.getTokenTop10Owners(collection.collectionId, tokenIdNonExist)).to.deep.eq([]); // TODO
262
263 // 4.1 Tokens can be transferred:
264 await tokenEvmOwner.methods[testCase](receiver, 10).send({from: owner});
265 await tokenEvmReceiver.methods[testCase](owner, 10).send({from: receiver});
266 expect(await rftOwner.getTop10Owners()).to.deep.eq([{Ethereum: receiver.toLowerCase()}]);
267 expect(await rftReceiver.getTop10Owners()).to.deep.eq([{Ethereum: owner.toLowerCase()}]);
268 }));
229269
230 itEth('Can perform repartition()', async ({helper}) => {270 itEth('Can perform repartition()', async ({helper}) => {
231 const owner = await helper.eth.createAccountWithBalance(donor);271 const owner = await helper.eth.createAccountWithBalance(donor);