1234567891011121314151617import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, deployFlipper, ethBalanceViaSub, GAS_ARGS, itWeb3, recordEthFee} from './util/helpers';18import {expect} from 'chai';19import {createCollectionExpectSuccess, createItemExpectSuccess, UNIQUE} from '../util/helpers';20import nonFungibleAbi from './nonFungibleAbi.json';21import privateKey from '../substrate/privateKey';2223describe('Contract calls', () => {24 itWeb3('Call of simple contract fee is less than 0.2 UNQ', async ({web3, api}) => {25 const deployer = await createEthAccountWithBalance(api, web3);26 const flipper = await deployFlipper(web3, deployer);2728 const cost = await recordEthFee(api, deployer, () => flipper.methods.flip().send({from: deployer}));29 expect(cost < BigInt(0.2 * Number(UNIQUE))).to.be.true;30 });3132 itWeb3('Balance transfer fee is less than 0.2 UNQ', async ({web3, api}) => {33 const userA = await createEthAccountWithBalance(api, web3);34 const userB = createEthAccount(web3);3536 const cost = await recordEthFee(api, userA, () => web3.eth.sendTransaction({from: userA, to: userB, value: '1000000', ...GAS_ARGS}));37 expect(cost - await ethBalanceViaSub(api, userB) < BigInt(0.2 * Number(UNIQUE))).to.be.true;38 });3940 itWeb3('NFT transfer is close to 0.15 UNQ', async ({web3, api}) => {41 const caller = await createEthAccountWithBalance(api, web3);42 const receiver = createEthAccount(web3);4344 const alice = privateKey('//Alice');45 const collection = await createCollectionExpectSuccess({46 mode: {type: 'NFT'},47 });48 const itemId = await createItemExpectSuccess(alice, collection, 'NFT', {Ethereum: caller});4950 const address = collectionIdToAddress(collection);51 const contract = new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS});5253 const cost = await recordEthFee(api, caller, () => contract.methods.transfer(receiver, itemId).send(caller));5455 const fee = Number(cost) / Number(UNIQUE);56 const expectedFee = 0.15;57 const tolerance = 0.00002;5859 expect(Math.abs(fee - expectedFee)).to.be.lessThan(tolerance);60 });61});