UNPKG

@helium/http

Version:

HTTP library for interacting with the Helium blockchain API

152 lines 5.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const nock_1 = __importDefault(require("nock")); const Client_1 = __importDefault(require("../../Client")); describe('list', () => { it('lists the most recent blocks', async () => { (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks') .reply(200, { data: [ { transaction_count: 51, time: 1586715428, prev_hash: 'zBDZ1PV8CV8MLcEw-zc-zfjTum381JjVx7iHJxQkQhg', height: 289081, hash: 'WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is', }, ], }); const client = new Client_1.default(); const blocks = await client.blocks.list(); expect(blocks.data.length).toBe(1); expect(blocks.data[0].hash).toBe('WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is'); }); }); describe('get by height', () => { beforeEach(() => { (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks/289081') .reply(200, { data: { transaction_count: 51, time: 1586715428, prev_hash: 'zBDZ1PV8CV8MLcEw-zc-zfjTum381JjVx7iHJxQkQhg', height: 289081, hash: 'WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is', }, }); }); it('gets a block by height', async () => { const client = new Client_1.default(); const block = await client.blocks.get(289081); expect(block.hash).toBe('WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is'); }); it('gets a block by height even if it is a string', async () => { const client = new Client_1.default(); const block = await client.blocks.get('289081'); expect(block.hash).toBe('WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is'); }); }); describe('get by hash', () => { (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks/hash/12WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is') .reply(200, { data: { transaction_count: 51, time: 1586715428, prev_hash: 'zBDZ1PV8CV8MLcEw-zc-zfjTum381JjVx7iHJxQkQhg', height: 289081, hash: '12WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is', }, }); it('gets a block by hash', async () => { const client = new Client_1.default(); const block = await client.blocks.get('12WSvuFjPCvmyzlkW24OSbNAvk0i44q-OBqlMgjsfF3Is'); expect(block.height).toBe(289081); }); }); describe('getByHashOrHeight', () => { it('initializes a Block by height', () => { const client = new Client_1.default(); const block = client.block(123); expect(block.height).toBe(123); }); it('initializes a Block by height even if passed a string', () => { const client = new Client_1.default(); const block = client.block('123'); expect(block.height).toBe(123); }); it('initializes a Block by hash', () => { const client = new Client_1.default(); const block = client.block('some-hash'); expect(block.hash).toBe('some-hash'); }); it('initializes by hash even if there are some numbers', () => { const client = new Client_1.default(); const block = client.block('123some-hash'); expect(block.hash).toBe('123some-hash'); }); }); describe('get height', () => { (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks/height') .reply(200, { data: { height: 369627, }, }); (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks/height?max_time=mock_max_time') .reply(200, { data: { height: 500000, }, }); it('gets current block height', async () => { const client = new Client_1.default(); const height = await client.blocks.getHeight(); expect(height).toBe(369627); }); it('gets block height with max time', async () => { const client = new Client_1.default(); const height = await client.blocks.getHeight({ maxTime: 'mock_max_time' }); expect(height).toBe(500000); }); }); describe('get stats', () => { (0, nock_1.default)('https://api.helium.io') .get('/v1/blocks/stats') .reply(200, { data: { last_week: { stddev: 27.32198822711437, avg: 60.27801036682616, }, last_month: { stddev: 45.59651282883883, avg: 60.88299879520811, }, last_hour: { stddev: 5.753793366763954, avg: 51.47826086956522, }, last_day: { stddev: 19.444424180975258, avg: 55.99481193255512, }, }, }); it('gets current block stats', async () => { const client = new Client_1.default(); const stats = await client.blocks.stats(); expect(stats.lastWeek.avg).toBe(60.27801036682616); expect(stats.lastMonth.avg).toBe(60.88299879520811); expect(stats.lastHour.stddev).toBe(5.753793366763954); expect(stats.lastDay.stddev).toBe(19.444424180975258); }); }); //# sourceMappingURL=Blocks.spec.js.map