UNPKG

@substrate/api-sidecar

Version:

REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.

84 lines 4.49 kB
"use strict"; // Copyright 2017-2025 Parity Technologies (UK) Ltd. // This file is part of Substrate API Sidecar. // // Substrate API Sidecar is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const apiRegistry_1 = require("../../apiRegistry"); const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers"); const polkadotV9110Metadata_1 = require("../../test-helpers/metadata/polkadotV9110Metadata"); const registries_1 = require("../../test-helpers/registries"); const typeFactory_1 = require("../../test-helpers/typeFactory"); const mock_1 = require("../test-helpers/mock"); const vestingInfo789629_json_1 = __importDefault(require("../test-helpers/responses/accounts/vestingInfo789629.json")); const AccountsVestingInfoService_1 = require("./AccountsVestingInfoService"); const typeFactorApiV9110 = (0, typeFactory_1.createApiWithAugmentations)(polkadotV9110Metadata_1.polkadotMetadataRpcV9110); const factory = new typeFactory_1.TypeFactory(typeFactorApiV9110); const vestingRes = { locked: '1749990000000000', perBlock: '166475460', startingBlock: '4961000', }; const vestingAt = (_address) => Promise.resolve().then(() => { const vestingInfo = typeFactorApiV9110.createType('PalletVestingVestingInfo', vestingRes); const vecVestingInfo = factory.vecOf([vestingInfo]); return factory.optionOf(vecVestingInfo); }); const historicVestingAt = (_address) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<VestingInfo>', vestingRes)); const mockHistoricApi = { query: { vesting: { vesting: vestingAt, }, }, }; const mockApi = { ...mock_1.defaultMockApi, at: (_hash) => mockHistoricApi, }; const accountsVestingInfoService = new AccountsVestingInfoService_1.AccountsVestingInfoService('mock'); describe('AccountVestingInfoService', () => { beforeAll(() => { jest.spyOn(apiRegistry_1.ApiPromiseRegistry, 'getApi').mockImplementation(() => { return mockApi; }); }); describe('fetchAccountVestingInfo', () => { it('works when ApiPromise works (block 789629) with V14 metadata', async () => { expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(vestingInfo789629_json_1.default); }); it('Vesting should return an empty array for None responses', async () => { const tempVest = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<VestingInfo>', null)); mockHistoricApi.query.vesting.vesting = tempVest; const expectedResponse = { at: { hash: '0x7b713de604a99857f6c25eacc115a4f28d2611a23d9ddff99ab0e4f1c17a8578', height: '789629', }, vesting: [], }; expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(expectedResponse); mockHistoricApi.query.vesting.vesting = vestingAt; }); it('Should correctly adjust `Option<VestingInfo>` for pre V14 blocks to return an array', async () => { mockHistoricApi.query.vesting.vesting = historicVestingAt; expect((0, sanitizeNumbers_1.sanitizeNumbers)(await accountsVestingInfoService.fetchAccountVestingInfo(mock_1.blockHash789629, mock_1.testAddress))).toStrictEqual(vestingInfo789629_json_1.default); mockHistoricApi.query.vesting.vesting = vestingAt; }); }); }); //# sourceMappingURL=AccountsVestingInfoService.spec.js.map