From c9f0eb5f85a1dcf1189b6c81bcd5aefc4d082f3d Mon Sep 17 00:00:00 2001 From: str-mv Date: Thu, 09 Sep 2021 11:36:08 +0000 Subject: [PATCH] WaitNewBlocks instead timeout function --- --- a/tests/src/collision-tests/admVsOwnerChanges.test.ts +++ b/tests/src/collision-tests/admVsOwnerChanges.test.ts @@ -4,13 +4,10 @@ import privateKey from '../substrate/privateKey'; import usingApi, { submitTransactionAsync } from '../substrate/substrate-api'; import { - addCollectionAdminExpectSuccess, - approveExpectSuccess, createCollectionExpectSuccess, createItemExpectSuccess, - transferFromExpectSuccess, - transferExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -35,7 +32,6 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTxBob); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); const changeAdminTxFerdie = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address)); await submitTransactionAsync(Bob, changeAdminTxFerdie); const itemId = await createItemExpectSuccess(Ferdie, collectionId, 'NFT'); @@ -50,7 +46,7 @@ ]); const itemBefore: any = await api.query.nft.nftItemList(collectionId, itemId); expect(itemBefore.Owner).not.to.be.eq(Bob.address); - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/admVsOwnerData.test.ts +++ b/tests/src/collision-tests/admVsOwnerData.test.ts @@ -7,6 +7,7 @@ createCollectionExpectSuccess, createItemExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -29,7 +30,6 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTx); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT'); // // tslint:disable-next-line: max-line-length @@ -42,7 +42,7 @@ ]); const item: any = await api.query.nft.nftItemList(collectionId, itemId); expect(item.VariableData).not.to.be.eq(null); // Pseudo-random selection of one of two values - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/admVsOwnerTake.test.ts +++ b/tests/src/collision-tests/admVsOwnerTake.test.ts @@ -7,6 +7,7 @@ createCollectionExpectSuccess, createItemExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -30,7 +31,6 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTx); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT'); // const sendItem = api.tx.nft.transfer(normalizeAccountId(Ferdie.address), collectionId, itemId, 1); @@ -39,12 +39,12 @@ sendItem.signAndSend(Bob), burnItem.signAndSend(Alice), ]); - await timeoutPromise(20000); + await waitNewBlocks(2); let itemBurn = false; itemBurn = (await (api.query.nft.nftItemList(collectionId, itemId))).toJSON() as boolean; // tslint:disable-next-line: no-unused-expression expect(itemBurn).to.be.null; - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/adminDestroyCollection.test.ts +++ b/tests/src/collision-tests/adminDestroyCollection.test.ts @@ -6,6 +6,7 @@ import { createCollectionExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -29,8 +30,7 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTx); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); - await timeoutPromise(10000); + await waitNewBlocks(1); // const addWhitelistAdm = api.tx.nft.addToWhiteList(collectionId, normalizeAccountId(Ferdie.address)); const destroyCollection = api.tx.nft.destroyCollection(collectionId); @@ -38,12 +38,12 @@ addWhitelistAdm.signAndSend(Bob), destroyCollection.signAndSend(Alice), ]); - await timeoutPromise(10000); + await waitNewBlocks(1); let whiteList = false; whiteList = (await api.query.nft.whiteList(collectionId, Ferdie.address)).toJSON() as boolean; // tslint:disable-next-line: no-unused-expression expect(whiteList).to.be.false; - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/adminLimitsOff.test.ts +++ b/tests/src/collision-tests/adminLimitsOff.test.ts @@ -7,6 +7,7 @@ import { createCollectionExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -45,14 +46,13 @@ const changeAdminTx3 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTx3); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); const addAdmOne = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Ferdie.address)); const addAdmTwo = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Charlie.address)); await Promise.all([ addAdmOne.signAndSend(Bob), addAdmTwo.signAndSend(Alice), ]); - await timeoutPromise(20000); + await waitNewBlocks(2); const changeAdminTx4 = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Alice.address)); await expect(submitTransactionExpectFailAsync(Alice, changeAdminTx4)).to.be.rejected; @@ -60,7 +60,7 @@ expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(Eve.address)); expect(adminListAfterAddAdmin).to.be.contains(normalizeAccountId(Ferdie.address)); expect(adminListAfterAddAdmin).not.to.be.contains(normalizeAccountId(Alice.address)); - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/adminRightsOff.test.ts +++ b/tests/src/collision-tests/adminRightsOff.test.ts @@ -7,6 +7,7 @@ import { createCollectionExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -28,8 +29,7 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTx); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); - await timeoutPromise(10000); + await waitNewBlocks(1); const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }]; const addItemAdm = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args); const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); @@ -37,12 +37,12 @@ addItemAdm.signAndSend(Bob), removeAdm.signAndSend(Alice), ]); - await timeoutPromise(20000); + await waitNewBlocks(2); const itemsListIndex = await api.query.nft.itemListIndex(collectionId) as unknown as BN; expect(itemsListIndex.toNumber()).to.be.equal(0); const adminList: any = (await api.query.nft.adminList(collectionId)); expect(adminList).not.to.be.contains(normalizeAccountId(Bob.address)); - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/setSponsorNewOwner.test.ts +++ b/tests/src/collision-tests/setSponsorNewOwner.test.ts @@ -6,7 +6,7 @@ import { createCollectionExpectSuccess, setCollectionSponsorExpectSuccess, - normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -29,19 +29,18 @@ await usingApi(async (api) => { const collectionId = await createCollectionExpectSuccess(); await setCollectionSponsorExpectSuccess(collectionId, Bob.address); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); - await timeoutPromise(20000); + await waitNewBlocks(2); const confirmSponsorship = api.tx.nft.confirmSponsorship(collectionId); const changeCollectionOwner = api.tx.nft.changeCollectionOwner(collectionId, Ferdie.address); await Promise.all([ confirmSponsorship.signAndSend(Bob), changeCollectionOwner.signAndSend(Alice), ]); - await timeoutPromise(20000); + await waitNewBlocks(2); const collection: any = (await api.query.nft.collectionById(collectionId)).toJSON(); expect(collection.Sponsorship.confirmed).to.be.eq(Bob.address); expect(collection.Owner).to.be.eq(Ferdie.address); - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/sponsorPayments.test.ts +++ b/tests/src/collision-tests/sponsorPayments.test.ts @@ -11,6 +11,7 @@ createItemExpectSuccess, setCollectionSponsorExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -32,7 +33,6 @@ const collectionId = await createCollectionExpectSuccess(); const changeAdminTxBob = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address)); await submitTransactionAsync(Alice, changeAdminTxBob); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); const itemId = await createItemExpectSuccess(Bob, collectionId, 'NFT'); await setCollectionSponsorExpectSuccess(collectionId, Bob.address); await confirmSponsorshipExpectSuccess(collectionId, '//Bob'); @@ -49,7 +49,7 @@ expect(alicesBalanceAfter === alicesBalanceBefore).to.be.true; // tslint:disable-next-line:no-unused-expression expect(bobsBalanceAfter === bobsBalanceBefore).to.be.true; - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/tokenLimitsOff.test.ts +++ b/tests/src/collision-tests/tokenLimitsOff.test.ts @@ -10,6 +10,7 @@ getCreateItemResult, setMintPermissionExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -57,8 +58,7 @@ const subTxTesult = getCreateItemResult(subTx); // tslint:disable-next-line:no-unused-expression expect(subTxTesult.success).to.be.true; - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); - await timeoutPromise(20000); + await waitNewBlocks(2); const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }]; const mintItemOne = api.tx.nft @@ -69,11 +69,11 @@ mintItemOne.signAndSend(Ferdie), mintItemTwo.signAndSend(Bob), ]); - await timeoutPromise(20000); + await waitNewBlocks(2); const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN; expect(itemsListIndexAfter.toNumber()).to.be.equal(3); // TokenLimit = 4. The first transaction is successful. The second should fail. - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/collision-tests/turnsOffMinting.test.ts +++ b/tests/src/collision-tests/turnsOffMinting.test.ts @@ -8,6 +8,7 @@ createCollectionExpectSuccess, setMintPermissionExpectSuccess, normalizeAccountId, + waitNewBlocks, } from '../util/helpers'; chai.use(chaiAsPromised); @@ -27,7 +28,6 @@ it('The collection owner turns off minting mode and there are minting transactions in the same block ', async () => { await usingApi(async (api) => { const collectionId = await createCollectionExpectSuccess(); - const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout)); await setMintPermissionExpectSuccess(Alice, collectionId, true); await addToWhiteListExpectSuccess(Alice, collectionId, Ferdie.address); @@ -41,7 +41,7 @@ itemList = (await (api.query.nft.nftItemList(collectionId, mintItem))).toJSON() as boolean; // tslint:disable-next-line: no-unused-expression expect(itemList).to.be.null; - await timeoutPromise(20000); + await waitNewBlocks(2); }); }); }); --- a/tests/src/util/helpers.ts +++ b/tests/src/util/helpers.ts @@ -1171,4 +1171,21 @@ export async function queryNftOwner(api: ApiPromise, collectionId: number, tokenId: number): Promise { return normalizeAccountId((await api.query.nft.nftItemList(collectionId, tokenId) as any).toJSON().Owner); -} \ No newline at end of file +} + +export async function waitNewBlocks(blocksCount = 1): Promise { + await usingApi(async (api) => { + const promise = new Promise(async (resolve) => { + + const unsubscribe = await api.rpc.chain.subscribeNewHeads(() => { + if (blocksCount > 0) { + blocksCount--; + } else { + unsubscribe(); + resolve(); + } + }); + }); + return promise; + }); +} -- gitstuff