difftreelog
WaitNewBlocks instead timeout function
in: master
11 files changed
tests/src/collision-tests/admVsOwnerChanges.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/admVsOwnerData.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/admVsOwnerTake.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/adminDestroyCollection.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/adminLimitsOff.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/adminRightsOff.test.tsdiffbeforeafterboth1import { IKeyringPair } from '@polkadot/types/types';2import BN from 'bn.js';3import chai from 'chai';4import chaiAsPromised from 'chai-as-promised';5import privateKey from '../substrate/privateKey';6import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';7import {8 createCollectionExpectSuccess,9 normalizeAccountId,10} from '../util/helpers';1112chai.use(chaiAsPromised);13const expect = chai.expect;14let Alice: IKeyringPair;15let Bob: IKeyringPair;1617before(async () => {18 await usingApi(async () => {19 Alice = privateKey('//Alice');20 Bob = privateKey('//Bob');21 });22});2324describe('Deprivation of admin rights: ', () => {25 // tslint:disable-next-line: max-line-length26 it('In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ', async () => {27 await usingApi(async (api) => {28 const collectionId = await createCollectionExpectSuccess();29 const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));30 await submitTransactionAsync(Alice, changeAdminTx);31 const timeoutPromise = (timeout: number) => new Promise((resolve) => setTimeout(resolve, timeout));32 await timeoutPromise(10000);33 const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];34 const addItemAdm = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);35 const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));36 await Promise.all([37 addItemAdm.signAndSend(Bob),38 removeAdm.signAndSend(Alice),39 ]);40 await timeoutPromise(20000);41 const itemsListIndex = await api.query.nft.itemListIndex(collectionId) as unknown as BN;42 expect(itemsListIndex.toNumber()).to.be.equal(0);43 const adminList: any = (await api.query.nft.adminList(collectionId));44 expect(adminList).not.to.be.contains(normalizeAccountId(Bob.address));45 await timeoutPromise(20000);46 });47 });48});1import { IKeyringPair } from '@polkadot/types/types';2import BN from 'bn.js';3import chai from 'chai';4import chaiAsPromised from 'chai-as-promised';5import privateKey from '../substrate/privateKey';6import usingApi, { submitTransactionAsync } from '../substrate/substrate-api';7import {8 createCollectionExpectSuccess,9 normalizeAccountId,10 waitNewBlocks,11} from '../util/helpers';1213chai.use(chaiAsPromised);14const expect = chai.expect;15let Alice: IKeyringPair;16let Bob: IKeyringPair;1718before(async () => {19 await usingApi(async () => {20 Alice = privateKey('//Alice');21 Bob = privateKey('//Bob');22 });23});2425describe('Deprivation of admin rights: ', () => {26 // tslint:disable-next-line: max-line-length27 it('In the block, the collection admin adds a token or changes data, and the collection owner deprives the admin of rights ', async () => {28 await usingApi(async (api) => {29 const collectionId = await createCollectionExpectSuccess();30 const changeAdminTx = api.tx.nft.addCollectionAdmin(collectionId, normalizeAccountId(Bob.address));31 await submitTransactionAsync(Alice, changeAdminTx);32 await waitNewBlocks(1);33 const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];34 const addItemAdm = api.tx.nft.createMultipleItems(collectionId, normalizeAccountId(Bob.address), args);35 const removeAdm = api.tx.nft.removeCollectionAdmin(collectionId, normalizeAccountId(Bob.address));36 await Promise.all([37 addItemAdm.signAndSend(Bob),38 removeAdm.signAndSend(Alice),39 ]);40 await waitNewBlocks(2);41 const itemsListIndex = await api.query.nft.itemListIndex(collectionId) as unknown as BN;42 expect(itemsListIndex.toNumber()).to.be.equal(0);43 const adminList: any = (await api.query.nft.adminList(collectionId));44 expect(adminList).not.to.be.contains(normalizeAccountId(Bob.address));45 await waitNewBlocks(2);46 });47 });48});tests/src/collision-tests/setSponsorNewOwner.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/sponsorPayments.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/tokenLimitsOff.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/collision-tests/turnsOffMinting.test.tsdiffbeforeafterboth--- 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);
});
});
});
tests/src/util/helpers.tsdiffbeforeafterboth--- 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<CrossAccountId> {
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<void> {
+ await usingApi(async (api) => {
+ const promise = new Promise<void>(async (resolve) => {
+
+ const unsubscribe = await api.rpc.chain.subscribeNewHeads(() => {
+ if (blocksCount > 0) {
+ blocksCount--;
+ } else {
+ unsubscribe();
+ resolve();
+ }
+ });
+ });
+ return promise;
+ });
+}