git.delta.rocks / unique-network / refs/commits / 25c961748e58

difftreelog

source

tests/src/block-production.test.ts1.7 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import usingApi from './substrate/substrate-api';18import {expect} from 'chai';19import {ApiPromise} from '@polkadot/api';2021const BLOCK_TIME_MS = 12000;22const TOLERANCE_MS = 3000;2324/* eslint no-async-promise-executor: "off" */25function getBlocks(api: ApiPromise): Promise<number[]> {26  return new Promise<number[]>(async (resolve, reject) => {27    const blockNumbers: number[] = [];28    setTimeout(() => reject('Block production test failed due to timeout.'), BLOCK_TIME_MS + TOLERANCE_MS);29    const unsubscribe = await api.rpc.chain.subscribeNewHeads((head: any) => {30      blockNumbers.push(head.number.toNumber());31      if(blockNumbers.length >= 2) {32        unsubscribe();33        resolve(blockNumbers);34      }35    });36  });37}3839describe('Block Production smoke test', () => {40  it('Node produces new blocks', async () => {41    await usingApi(async (api) => {42      const blocks: number[] | undefined = await getBlocks(api);43      expect(blocks[0]).to.be.lessThan(blocks[1]);44    });45  });46});