From 41c4d38c3511f1dc5b9cfee604d6c8b03840ca95 Mon Sep 17 00:00:00 2001 From: usetech-llc Date: Fri, 25 Sep 2020 11:02:55 +0000 Subject: [PATCH] Merge pull request #7 from usetech-llc/feature/NFTPAR-88 --- --- /dev/null +++ b/tests/src/blocks-production.test.ts @@ -0,0 +1,48 @@ +import usingApi from "./substrate/substrate-api"; +import promisifySubstrate from "./substrate/promisify-substrate"; +import { expect } from "chai"; + +describe('Blocks Production', () => { + it('Node produces new blocks', async () => { + await usingApi(async api => { + const blocksPromise = promisifySubstrate(api, () => { + return new Promise((resolve, reject) => { + const blockNumbers: number[] = []; + const unsubscribe = api.rpc.chain.subscribeNewHeads(async head => { + blockNumbers.push(head.number.toNumber()); + if(blockNumbers.length >= 2) { + (await unsubscribe)(); + resolve(blockNumbers); + } + }); + }) + })(); + + let blocks: number[] | undefined = undefined; + + const timeoutPromise = new Promise((resolve, reject) => { + let secondsPassed = 0; + let incrementSeconds = () => { + secondsPassed++; + if(secondsPassed > 5 * 60) { + reject('Block production test failed due to timeout.'); + return; + } + + if(blocks) { + resolve(); + return; + } + + setTimeout(incrementSeconds, 1000); + } + + incrementSeconds(); + }); + + blocks = await Promise.race([blocksPromise, timeoutPromise]) as number[]; + + expect(blocks[0]).to.be.lessThan(blocks[1]); + }); + }); +}); -- gitstuff