--- a/tests/src/addCollectionAdmin.test.ts +++ b/tests/src/addCollectionAdmin.test.ts @@ -110,7 +110,7 @@ const [alice, ...accounts] = await helper.arrange.createAccounts([10n, 0n, 0n, 0n, 0n, 0n, 0n, 0n], donor); const collection = await helper.nft.mintCollection(alice, {name: 'Collection Name', description: 'Collection Description', tokenPrefix: 'COL'}); - const chainAdminLimit = (helper.api!.consts.common.collectionAdminsLimit as any).toNumber(); + const chainAdminLimit = (helper.getApi().consts.common.collectionAdminsLimit as any).toNumber(); expect(chainAdminLimit).to.be.equal(5); for (let i = 0; i < chainAdminLimit; i++) { --- a/tests/src/approve.test.ts +++ b/tests/src/approve.test.ts @@ -60,7 +60,7 @@ const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address}); await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}); expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.true; - await helper.signTransaction(alice, helper.api?.tx.unique.approve({Substrate: bob.address}, collectionId, tokenId, 0)); + await helper.signTransaction(alice, helper.constructApiCall('api.tx.unique.approve', [{Substrate: bob.address}, collectionId, tokenId, 0])); expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.false; }); @@ -275,7 +275,7 @@ const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: alice.address}); await helper.nft.approveToken(alice, collectionId, tokenId, {Substrate: bob.address}); expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.true; - await helper.signTransaction(alice, helper.api?.tx.unique.approve({Substrate: bob.address}, collectionId, tokenId, 0)); + await helper.signTransaction(alice, helper.constructApiCall('api.tx.unique.approve', [{Substrate: bob.address}, collectionId, tokenId, 0])); expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: bob.address})).to.be.false; const transferTokenFromTx = async () => helper.nft.transferTokenFrom(bob, collectionId, tokenId, {Substrate: bob.address}, {Substrate: bob.address}); await expect(transferTokenFromTx()).to.be.rejected; @@ -328,7 +328,7 @@ itSub('1 for NFT', async ({helper}) => { const {collectionId} = await helper.nft.mintCollection(alice, {name: 'col', description: 'descr', tokenPrefix: 'COL'}); const {tokenId} = await helper.nft.mintToken(alice, {collectionId: collectionId, owner: bob.address}); - const approveTx = async () => helper.signTransaction(bob, helper.api?.tx.unique.approve({Substrate: charlie.address}, collectionId, tokenId, 2)); + const approveTx = async () => helper.signTransaction(bob, helper.constructApiCall('api.tx.unique.approve', [{Substrate: charlie.address}, collectionId, tokenId, 2])); await expect(approveTx()).to.be.rejected; expect(await helper.nft.isTokenApproved(collectionId, tokenId, {Substrate: charlie.address})).to.be.false; }); --- a/tests/src/block-production.test.ts +++ b/tests/src/block-production.test.ts @@ -37,7 +37,7 @@ describe('Block Production smoke test', () => { itSub('Node produces new blocks', async ({helper}) => { - const blocks: number[] | undefined = await getBlocks(helper.api!); + const blocks: number[] | undefined = await getBlocks(helper.getApi()); expect(blocks[0]).to.be.lessThan(blocks[1]); }); }); --- a/tests/src/createMultipleItemsEx.test.ts +++ b/tests/src/createMultipleItemsEx.test.ts @@ -178,13 +178,12 @@ tokenPrefix: 'COL', }, 0); - const api = helper.api; - await helper.signTransaction(alice, api?.tx.unique.createMultipleItemsEx(collection.collectionId, { + await helper.executeExtrinsic(alice, 'api.tx.unique.createMultipleItemsEx',[collection.collectionId, { Fungible: new Map([ [JSON.stringify({Substrate: alice.address}), 50], [JSON.stringify({Substrate: bob.address}), 100], ]), - })); + }], true); expect(await collection.getBalance({Substrate: alice.address})).to.be.equal(50n); expect(await collection.getBalance({Substrate: bob.address})).to.be.equal(100n); @@ -200,8 +199,7 @@ ], }); - const api = helper.api; - await helper.signTransaction(alice, api?.tx.unique.createMultipleItemsEx(collection.collectionId, { + await helper.executeExtrinsic(alice, 'api.tx.unique.createMultipleItemsEx', [collection.collectionId, { RefungibleMultipleOwners: { users: new Map([ [JSON.stringify({Substrate: alice.address}), 1], @@ -211,7 +209,7 @@ {key: 'k', value: 'v'}, ], }, - })); + }], true); const tokenId = await collection.getLastTokenId(); expect(tokenId).to.be.equal(1); expect(await collection.getTokenBalance(1, {Substrate: alice.address})).to.be.equal(1n); @@ -228,9 +226,7 @@ ], }); - const api = helper.api; - - await helper.signTransaction(alice, api?.tx.unique.createMultipleItemsEx(collection.collectionId, { + await helper.executeExtrinsic(alice, 'api.tx.unique.createMultipleItemsEx', [collection.collectionId, { RefungibleMultipleItems: [ { user: {Substrate: alice.address}, pieces: 1, @@ -245,7 +241,7 @@ ], }, ], - })); + }], true); expect(await collection.getLastTokenId()).to.be.equal(2); expect(await collection.getTokenBalance(1, {Substrate: alice.address})).to.be.equal(1n); --- a/tests/src/creditFeesToTreasury.test.ts +++ b/tests/src/creditFeesToTreasury.test.ts @@ -70,7 +70,7 @@ }); itSub('Sender balance decreased by fee+sent amount, Treasury balance increased by fee', async ({helper}) => { - await skipInflationBlock(helper.api!); + await skipInflationBlock(helper.getApi()); await helper.wait.newBlocks(1); const treasuryBalanceBefore = await helper.balance.getSubstrate(TREASURY); @@ -89,7 +89,7 @@ }); itSub('Treasury balance increased by failed tx fee', async ({helper}) => { - const api = helper.api!; + const api = helper.getApi(); await helper.wait.newBlocks(1); const treasuryBalanceBefore = await helper.balance.getSubstrate(TREASURY); @@ -107,7 +107,7 @@ }); itSub('NFT Transactions also send fees to Treasury', async ({helper}) => { - await skipInflationBlock(helper.api!); + await skipInflationBlock(helper.getApi()); await helper.wait.newBlocks(1); const treasuryBalanceBefore = await helper.balance.getSubstrate(TREASURY); @@ -125,7 +125,7 @@ itSub('Fees are sane', async ({helper}) => { const unique = helper.balance.getOneTokenNominal(); - await skipInflationBlock(helper.api!); + await skipInflationBlock(helper.getApi()); await helper.wait.newBlocks(1); const aliceBalanceBefore = await helper.balance.getSubstrate(alice.address); @@ -140,7 +140,7 @@ }); itSub('NFT Transfer fee is close to 0.1 Unique', async ({helper}) => { - await skipInflationBlock(helper.api!); + await skipInflationBlock(helper.getApi()); await helper.wait.newBlocks(1); const collection = await helper.nft.mintCollection(alice, { --- a/tests/src/eth/createNFTCollection.test.ts +++ b/tests/src/eth/createNFTCollection.test.ts @@ -152,7 +152,7 @@ before(async function() { await usingEthPlaygrounds(async (helper, privateKey) => { donor = privateKey('//Alice'); - nominal = helper.balance.getOneTokenNominal() + nominal = helper.balance.getOneTokenNominal(); }); }); --- a/tests/src/eth/proxy/nonFungibleProxy.test.ts +++ b/tests/src/eth/proxy/nonFungibleProxy.test.ts @@ -138,23 +138,16 @@ }); //TODO: CORE-302 add eth methods - itEth.skip('Can perform mintBulk()', async ({helper, privateKey}) => { - const api = helper.getApi(); - const web3 = helper.getWeb3(); - const privateKeyWrapper = privateKey; - /* - const collection = await createCollectionExpectSuccess({ - mode: {type: 'NFT'}, - }); - const alice = privateKeyWrapper('//Alice'); + itEth.skip('Can perform mintBulk()', async ({helper}) => { + const collection = await helper.nft.mintCollection(donor, {name: 'New', description: 'New collection', tokenPrefix: 'NEW'}); - const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); - const receiver = createEthAccount(web3); + const caller = await helper.eth.createAccountWithBalance(donor, 30n); + const receiver = helper.eth.createAccount(); - const address = collectionIdToAddress(collection); - const contract = await proxyWrap(api, web3, new web3.eth.Contract(nonFungibleAbi as any, address, {from: caller, ...GAS_ARGS}), privateKeyWrapper); - const changeAdminTx = api.tx.unique.addCollectionAdmin(collection, {Ethereum: contract.options.address}); - await submitTransactionAsync(alice, changeAdminTx); + const address = helper.ethAddress.fromCollectionId(collection.collectionId); + const evmCollection = helper.ethNativeContract.collection(address, 'nft', caller); + const contract = await proxyWrap(helper, evmCollection, donor); + await collection.addAdmin(donor, {Ethereum: contract.options.address}); { const nextTokenId = await contract.methods.nextTokenId().call(); @@ -167,7 +160,7 @@ [+nextTokenId + 2, 'Test URI 2'], ], ).send({from: caller}); - const events = normalizeEvents(result.events); + const events = helper.eth.normalizeEvents(result.events); expect(events).to.be.deep.equal([ { @@ -203,7 +196,6 @@ expect(await contract.methods.tokenURI(+nextTokenId + 1).call()).to.be.equal('Test URI 1'); expect(await contract.methods.tokenURI(+nextTokenId + 2).call()).to.be.equal('Test URI 2'); } - */ }); itEth('Can perform burn()', async ({helper}) => { --- a/tests/src/eth/util/playgrounds/unique.dev.ts +++ b/tests/src/eth/util/playgrounds/unique.dev.ts @@ -285,8 +285,8 @@ await code(); // In dev mode, the transaction might not finish processing in time await this.helper.wait.newBlocks(1); - } - return await this.helper.arrange.calculcateFee(address, code); + }; + return await this.helper.arrange.calculcateFee(address, wrappedCode); } } --- a/tests/src/inflation.test.ts +++ b/tests/src/inflation.test.ts @@ -40,9 +40,9 @@ const tx = helper.constructApiCall('api.tx.inflation.startInflation', [1]); await expect(helper.executeExtrinsic(superuser, 'api.tx.sudo.sudo', [tx])).to.not.be.rejected; - const blockInterval = (helper.api!.consts.inflation.inflationBlockInterval as any).toBigInt(); - const totalIssuanceStart = ((await helper.api!.query.inflation.startingYearTotalIssuance()) as any).toBigInt(); - const blockInflation = (await helper.api!.query.inflation.blockInflation() as any).toBigInt(); + const blockInterval = (helper.getApi().consts.inflation.inflationBlockInterval as any).toBigInt(); + const totalIssuanceStart = ((await helper.callRpc('api.query.inflation.startingYearTotalIssuance', [])) as any).toBigInt(); + const blockInflation = (await helper.callRpc('api.query.inflation.blockInflation', []) as any).toBigInt(); const YEAR = 5259600n; // 6-second block. Blocks in one year // const YEAR = 2629800n; // 12-second block. Blocks in one year --- a/tests/src/nesting/properties.test.ts +++ b/tests/src/nesting/properties.test.ts @@ -276,7 +276,7 @@ itSub('Reads access rights to properties of a collection', async ({helper}) => { const collection = await helper.nft.mintCollection(alice); - const propertyRights = (await helper.api!.query.common.collectionPropertyPermissions(collection.collectionId)).toJSON(); + const propertyRights = (await helper.callRpc('api.query.common.collectionPropertyPermissions', [collection.collectionId])).toJSON(); expect(propertyRights).to.be.empty; }); @@ -817,7 +817,7 @@ ).to.be.fulfilled; } - const originalSpace = await getConsumedSpace(token.collection.helper.api, token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); + const originalSpace = await getConsumedSpace(token.collection.helper.getApi(), token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); return originalSpace; } @@ -840,7 +840,7 @@ ).to.be.rejectedWith(/common\.NoPermission/); } - const consumedSpace = await getConsumedSpace(token.collection.helper.api, token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); + const consumedSpace = await getConsumedSpace(token.collection.helper.getApi(), token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); expect(consumedSpace).to.be.equal(originalSpace); } @@ -875,7 +875,7 @@ ).to.be.rejectedWith(/common\.NoPermission/); } - const consumedSpace = await getConsumedSpace(token.collection.helper.api, token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); + const consumedSpace = await getConsumedSpace(token.collection.helper.getApi(), token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); expect(consumedSpace).to.be.equal(originalSpace); } @@ -911,7 +911,7 @@ expect(await token.getProperties(['non-existent', 'now-existent'])).to.be.empty; - const consumedSpace = await getConsumedSpace(token.collection.helper.api, token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); + const consumedSpace = await getConsumedSpace(token.collection.helper.getApi(), token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); expect(consumedSpace).to.be.equal(originalSpace); } @@ -951,7 +951,7 @@ ])).to.be.rejectedWith(/common\.NoSpaceForProperty/); expect(await token.getProperties(['a_holy_book', 'young_years'])).to.be.empty; - const consumedSpace = await getConsumedSpace(token.collection.helper.api, token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); + const consumedSpace = await getConsumedSpace(token.collection.helper.getApi(), token.collectionId, token.tokenId, pieces == 1n ? 'NFT' : 'RFT'); expect(consumedSpace).to.be.equal(originalSpace); } --- a/tests/src/pallet-presence.test.ts +++ b/tests/src/pallet-presence.test.ts @@ -59,7 +59,7 @@ describe('Pallet presence', () => { before(async () => { await usingPlaygrounds(async helper => { - const chain = await helper.api!.rpc.system.chain(); + const chain = await helper.callRpc('api.rpc.system.chain', []); const refungible = 'refungible'; const scheduler = 'scheduler'; --- a/tests/src/tx-version-presence.test.ts +++ b/tests/src/tx-version-presence.test.ts @@ -22,7 +22,7 @@ describe('TxVersion is present', () => { before(async () => { await usingPlaygrounds(async helper => { - metadata = await helper.api!.rpc.state.getMetadata(); + metadata = await helper.callRpc('api.rpc.state.getMetadata', []); }); }); --- a/tests/src/util/playgrounds/unique.dev.ts +++ b/tests/src/util/playgrounds/unique.dev.ts @@ -215,8 +215,8 @@ }; isDevNode = async () => { - const block1 = await this.helper.api?.rpc.chain.getBlock(await this.helper.api?.rpc.chain.getBlockHash(1)); - const block2 = await this.helper.api?.rpc.chain.getBlock(await this.helper.api?.rpc.chain.getBlockHash(2)); + const block1 = await this.helper.callRpc('api.rpc.chain.getBlock', [await this.helper.callRpc('api.rpc.chain.getBlockHash', [1])]); + const block2 = await this.helper.callRpc('api.rpc.chain.getBlock', [await this.helper.callRpc('api.rpc.chain.getBlockHash', [2])]); const findCreationDate = async (block: any) => { const humanBlock = block.toHuman(); let date; @@ -259,7 +259,7 @@ async newBlocks(blocksCount = 1): Promise { // eslint-disable-next-line no-async-promise-executor const promise = new Promise(async (resolve) => { - const unsubscribe = await this.helper.api!.rpc.chain.subscribeNewHeads(() => { + const unsubscribe = await this.helper.getApi().rpc.chain.subscribeNewHeads(() => { if (blocksCount > 0) { blocksCount--; } else { @@ -274,7 +274,7 @@ async forParachainBlockNumber(blockNumber: bigint) { // eslint-disable-next-line no-async-promise-executor return new Promise(async (resolve) => { - const unsubscribe = await this.helper.api!.rpc.chain.subscribeNewHeads(async (data: any) => { + const unsubscribe = await this.helper.getApi().rpc.chain.subscribeNewHeads(async (data: any) => { if (data.number.toNumber() >= blockNumber) { unsubscribe(); resolve(); @@ -286,7 +286,7 @@ async forRelayBlockNumber(blockNumber: bigint) { // eslint-disable-next-line no-async-promise-executor return new Promise(async (resolve) => { - const unsubscribe = await this.helper.api!.query.parachainSystem.validationData(async (data: any) => { + const unsubscribe = await this.helper.getApi().query.parachainSystem.validationData(async (data: any) => { if (data.value.relayParentNumber.toNumber() >= blockNumber) { // @ts-ignore unsubscribe(); --- a/tests/src/util/playgrounds/unique.ts +++ b/tests/src/util/playgrounds/unique.ts @@ -1991,7 +1991,7 @@ * @returns ss58Format, token decimals, and token symbol */ getChainProperties(): IChainProperties { - const properties = (this.helper.api as any).registry.getChainProperties().toJSON(); + const properties = (this.helper.getApi() as any).registry.getChainProperties().toJSON(); return { ss58Format: properties.ss58Format.toJSON(), tokenDecimals: properties.tokenDecimals.toJSON(), @@ -2034,7 +2034,7 @@ * @returns number, account's nonce */ async getNonce(address: TSubstrateAccount): Promise { - return (await (this.helper.api as any).query.system.account(address)).nonce.toNumber(); + return (await this.helper.callRpc('api.query.system.account', [address])).nonce.toNumber(); } }