git.delta.rocks / unique-network / refs/commits / 313d9317ef02

difftreelog

test fix integration

Yaroslav Bolyukin2023-05-31parent: #8545aff.patch.diff
in: master

6 files changed

modifiedtests/src/eth/contractSponsoring.test.tsdiffbeforeafterboth
--- a/tests/src/eth/contractSponsoring.test.ts
+++ b/tests/src/eth/contractSponsoring.test.ts
@@ -516,7 +516,7 @@
     const owner = await helper.eth.createAccountWithBalance(donor);
     const sponsor = await helper.eth.createAccountWithBalance(donor);
     const user = await helper.eth.createAccountWithBalance(donor);
-    const helpers = await helper.ethNativeContract.contractHelpers(owner);
+    const helpers = helper.ethNativeContract.contractHelpers(owner);
 
     const testContract = await deployTestContract(helper, owner);
 
@@ -531,10 +531,10 @@
     await helpers.methods.setSponsoringFeeLimit(testContract.options.address, 2_000_000n * gasPrice).send();
 
     const originalUserBalance = await helper.balance.getEthereum(user);
-    await testContract.methods.test(100).send({from: user, gas: 2_000_000});
+    await testContract.methods.test(100).send({from: user, gas: 2_000_000, maxFeePerGas: gasPrice.toString()});
     expect(await helper.balance.getEthereum(user)).to.be.equal(originalUserBalance);
 
-    await testContract.methods.test(100).send({from: user, gas: 2_100_000});
+    await testContract.methods.test(100).send({from: user, gas: 2_100_000, maxFeePerGas: gasPrice.toString()});
     expect(await helper.balance.getEthereum(user)).to.not.be.equal(originalUserBalance);
   });
 
modifiedtests/src/eth/ethFeesAreCorrect.test.tsdiffbeforeafterboth
before · tests/src/eth/ethFeesAreCorrect.test.ts
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://witww.gnu.org/licenses/>.1617import {IKeyringPair} from '@polkadot/types/types';18import {itEth, usingEthPlaygrounds, expect} from './util';1920describe('Eth fees are correct', () => {21  let donor: IKeyringPair;22  let minter: IKeyringPair;23  let alice: IKeyringPair;2425  before(async () => {26    await usingEthPlaygrounds(async (helper, privateKey) => {27      donor = await privateKey({url: import.meta.url});28      [minter, alice] = await helper.arrange.createAccounts([100n, 200n], donor);29    });30  });313233  itEth('web3 fees are the same as evm.call fees', async ({helper}) => {34    const collection = await helper.nft.mintCollection(minter, {});3536    const owner = await helper.eth.createAccountWithBalance(donor);37    const receiver = await helper.eth.createAccountWithBalance(donor);38    const aliceEth = helper.address.substrateToEth(alice.address);3940    const {tokenId: tokenA} = await collection.mintToken(minter, {Ethereum: owner});41    const {tokenId: tokenB} = await collection.mintToken(minter, {Ethereum: aliceEth});4243    const collectionAddress = helper.ethAddress.fromCollectionId(collection.collectionId);44    const contract = await helper.ethNativeContract.collection(collectionAddress, 'nft', owner);4546    const balanceBeforeWeb3Transfer = await helper.balance.getEthereum(owner);47    await contract.methods.transfer(receiver, tokenA).send({from: owner});48    const balanceAfterWeb3Transfer = await helper.balance.getEthereum(owner);49    const web3Diff = balanceBeforeWeb3Transfer - balanceAfterWeb3Transfer;5051    const encodedCall = contract.methods.transfer(receiver, tokenB)52      .encodeABI();5354    const balanceBeforeEvmCall = await helper.balance.getSubstrate(alice.address);55    await helper.eth.sendEVM(56      alice,57      collectionAddress,58      encodedCall,59      '0',60    );61    const balanceAfterEvmCall = await helper.balance.getSubstrate(alice.address);62    const evmCallDiff = balanceBeforeEvmCall - balanceAfterEvmCall;6364    expect(web3Diff).to.be.equal(evmCallDiff);65  });66});
after · tests/src/eth/ethFeesAreCorrect.test.ts
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://witww.gnu.org/licenses/>.1617import {IKeyringPair} from '@polkadot/types/types';18import {itEth, usingEthPlaygrounds, expect} from './util';1920describe('Eth fees are correct', () => {21  let donor: IKeyringPair;22  let minter: IKeyringPair;23  let alice: IKeyringPair;2425  before(async () => {26    await usingEthPlaygrounds(async (helper, privateKey) => {27      donor = await privateKey({url: import.meta.url});28      [minter, alice] = await helper.arrange.createAccounts([100n, 200n], donor);29    });30  });313233  itEth('web3 fees are the same as evm.call fees', async ({helper}) => {34    const collection = await helper.nft.mintCollection(minter, {});3536    const owner = await helper.eth.createAccountWithBalance(donor);37    const receiver = await helper.eth.createAccountWithBalance(donor);38    const aliceEth = helper.address.substrateToEth(alice.address);3940    const {tokenId: tokenA} = await collection.mintToken(minter, {Ethereum: owner});41    const {tokenId: tokenB} = await collection.mintToken(minter, {Ethereum: aliceEth});4243    const collectionAddress = helper.ethAddress.fromCollectionId(collection.collectionId);44    const contract = helper.ethNativeContract.collection(collectionAddress, 'nft', owner);4546    const balanceBeforeWeb3Transfer = await helper.balance.getEthereum(owner);47    await contract.methods.transfer(receiver, tokenA).send({from: owner, maxFeePerGas: (await helper.eth.getGasPrice()).toString()});48    const balanceAfterWeb3Transfer = await helper.balance.getEthereum(owner);49    const web3Diff = balanceBeforeWeb3Transfer - balanceAfterWeb3Transfer;5051    const encodedCall = contract.methods.transfer(receiver, tokenB)52      .encodeABI();5354    const balanceBeforeEvmCall = await helper.balance.getSubstrate(alice.address);55    await helper.eth.sendEVM(56      alice,57      collectionAddress,58      encodedCall,59      '0',60    );61    const balanceAfterEvmCall = await helper.balance.getSubstrate(alice.address);62    const evmCallDiff = balanceBeforeEvmCall - balanceAfterEvmCall;6364    expect(web3Diff).to.be.equal(evmCallDiff);65  });66});
modifiedtests/src/eth/reFungible.test.tsdiffbeforeafterboth
--- a/tests/src/eth/reFungible.test.ts
+++ b/tests/src/eth/reFungible.test.ts
@@ -674,7 +674,7 @@
       requirePalletsOrSkip(this, helper, [Pallets.ReFungible]);
 
       donor = await privateKey({url: import.meta.url});
-      [alice] = await helper.arrange.createAccounts([20n], donor);
+      [alice] = await helper.arrange.createAccounts([1000n], donor);
     });
   });
 
@@ -699,7 +699,7 @@
       },
     );
 
-    const contract = await helper.ethNativeContract.collectionById(collection.collectionId, 'rft', caller);
+    const contract = helper.ethNativeContract.collectionById(collection.collectionId, 'rft', caller);
     const name = await contract.methods.name().call();
     expect(name).to.equal('Leviathan');
   });
modifiedtests/src/maintenance.seqtest.tsdiffbeforeafterboth
--- a/tests/src/maintenance.seqtest.ts
+++ b/tests/src/maintenance.seqtest.ts
@@ -342,19 +342,19 @@
     itSub('Does not allow preimage execution with non-root', async ({helper}) => {
       await expect(helper.executeExtrinsic(bob, 'api.tx.maintenance.executePreimage', [
         preimageHashes[0], {refTime: 10000000000, proofSize: 10000},
-      ])).to.be.rejectedWith(/BadOrigin/);
+      ])).to.be.rejectedWith(/^Misc: BadOrigin$/);
     });
 
     itSub('Does not allow execution of non-existent preimages', async ({helper}) => {
       await expect(helper.getSudo().executeExtrinsic(superuser, 'api.tx.maintenance.executePreimage', [
         '0x1010101010101010101010101010101010101010101010101010101010101010', {refTime: 10000000000, proofSize: 10000},
-      ])).to.be.rejectedWith(/Unavailable/);
+      ])).to.be.rejectedWith(/^Misc: Unavailable$/);
     });
 
     itSub('Does not allow preimage execution with less than minimum weights', async ({helper}) => {
       await expect(helper.getSudo().executeExtrinsic(superuser, 'api.tx.maintenance.executePreimage', [
         preimageHashes[0], {refTime: 1000, proofSize: 100},
-      ])).to.be.rejectedWith(/Exhausted/);
+      ])).to.be.rejectedWith(/^Misc: Exhausted$/);
     });
 
     after(async function() {
modifiedtests/src/pallet-presence.test.tsdiffbeforeafterboth
--- a/tests/src/pallet-presence.test.ts
+++ b/tests/src/pallet-presence.test.ts
@@ -24,6 +24,7 @@
   'timestamp',
   'transactionpayment',
   'treasury',
+  'statetriemigration',
   'structure',
   'system',
   'vesting',
modifiedtests/src/util/playgrounds/unique.tsdiffbeforeafterboth
--- a/tests/src/util/playgrounds/unique.ts
+++ b/tests/src/util/playgrounds/unique.ts
@@ -591,8 +591,11 @@
                   const errorMeta = dispatchError.registry.findMetaError(modErr);
 
                   moduleError = `${errorMeta.section}.${errorMeta.name}`;
+                } else if (dispatchError.isToken) {
+                  moduleError = `Token: ${dispatchError.asToken}`;
                 } else {
-                  moduleError = dispatchError.toHuman();
+                  // May be [object Object] in case of unhandled non-unit enum
+                  moduleError = `Misc: ${dispatchError.toHuman()}`;
                 }
               } else {
                 this.logger.log(result, this.logger.level.ERROR);
@@ -3480,6 +3483,8 @@
         } else if (data.asErr.isToken) {
           throw new Error(`Token: ${data.asErr.asToken}`);
         }
+        // May be [object Object] in case of unhandled non-unit enum
+        throw new Error(`Misc: ${data.asErr.toHuman()}`);
       }
       return result;
     }