git.delta.rocks / unique-network / refs/commits / 2b0cd0f6b4f0

difftreelog

source

tests/src/blocks-production.test.ts1.4 KiBsourcehistory
1import usingApi from "./substrate/substrate-api";2import promisifySubstrate from "./substrate/promisify-substrate";3import { expect } from "chai";45describe('Blocks Production', () => {6  it('Node produces new blocks', async () => {7    await usingApi(async api => {8      const blocksPromise = promisifySubstrate(api, () => {9        return new Promise<number[]>((resolve, reject) => {10          const blockNumbers: number[] = [];11          const unsubscribe = api.rpc.chain.subscribeNewHeads(async head => {12            blockNumbers.push(head.number.toNumber());13            if(blockNumbers.length >= 2) {14              (await unsubscribe)();15              resolve(blockNumbers);16            }17          });18        })19      })();2021      let blocks: number[] | undefined = undefined;2223      const timeoutPromise = new Promise<void>((resolve, reject) => {24        let secondsPassed = 0;25        let incrementSeconds = () => {26          secondsPassed++;27          if(secondsPassed > 5 * 60) {28            reject('Block production test failed due to timeout.');29            return;30          }3132          if(blocks) {33            resolve();34            return;35          }3637          setTimeout(incrementSeconds, 1000);38        }3940        incrementSeconds();41      });4243      blocks = await Promise.race([blocksPromise, timeoutPromise]) as number[];4445      expect(blocks[0]).to.be.lessThan(blocks[1]);46    });47  });48});