@substrate/api-sidecar 9.1.8 → 10.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -4
- package/build/package.json +17 -19
- package/build/src/chains-config/index.js +2 -0
- package/build/src/chains-config/index.js.map +1 -1
- package/build/src/chains-config/metadata-consts/index.js +3 -0
- package/build/src/chains-config/metadata-consts/index.js.map +1 -1
- package/build/src/chains-config/metadata-consts/kusamaConsts.js +4 -1
- package/build/src/chains-config/metadata-consts/kusamaConsts.js.map +1 -1
- package/build/src/chains-config/metadata-consts/polkadotConsts.js +4 -1
- package/build/src/chains-config/metadata-consts/polkadotConsts.js.map +1 -1
- package/build/src/chains-config/metadata-consts/shidenConsts.d.ts +2 -0
- package/build/src/chains-config/metadata-consts/shidenConsts.js +20 -0
- package/build/src/chains-config/metadata-consts/shidenConsts.js.map +1 -0
- package/build/src/chains-config/metadata-consts/westendConsts.js +4 -1
- package/build/src/chains-config/metadata-consts/westendConsts.js.map +1 -1
- package/build/src/chains-config/shidenControllers.d.ts +5 -0
- package/build/src/chains-config/shidenControllers.js +36 -0
- package/build/src/chains-config/shidenControllers.js.map +1 -0
- package/build/src/controllers/blocks/BlocksController.js +5 -2
- package/build/src/controllers/blocks/BlocksController.js.map +1 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js +2 -1
- package/build/src/controllers/blocks/BlocksExtrinsicsController.js.map +1 -1
- package/build/src/controllers/pallets/PalletsStorageController.js +12 -6
- package/build/src/controllers/pallets/PalletsStorageController.js.map +1 -1
- package/build/src/main.js +0 -0
- package/build/src/services/accounts/AccountsAssetsService.js +1 -1
- package/build/src/services/accounts/AccountsAssetsService.js.map +1 -1
- package/build/src/services/accounts/AccountsAssetsService.spec.js +107 -1
- package/build/src/services/accounts/AccountsAssetsService.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsBalanceInfoService.spec.js +80 -45
- package/build/src/services/accounts/AccountsBalanceInfoService.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsStakingInfoService.spec.d.ts +4 -1
- package/build/src/services/accounts/AccountsStakingInfoService.spec.js +23 -7
- package/build/src/services/accounts/AccountsStakingInfoService.spec.js.map +1 -1
- package/build/src/services/accounts/AccountsVestingInfoService.spec.js +11 -1
- package/build/src/services/accounts/AccountsVestingInfoService.spec.js.map +1 -1
- package/build/src/services/blocks/BlocksService.d.ts +2 -1
- package/build/src/services/blocks/BlocksService.js +31 -26
- package/build/src/services/blocks/BlocksService.js.map +1 -1
- package/build/src/services/blocks/BlocksService.spec.js +80 -41
- package/build/src/services/blocks/BlocksService.spec.js.map +1 -1
- package/build/src/services/blocks/BlocksTraceService.spec.js +1 -1
- package/build/src/services/blocks/BlocksTraceService.spec.js.map +1 -1
- package/build/src/services/node/NodeNetworkService.spec.js +1 -1
- package/build/src/services/node/NodeNetworkService.spec.js.map +1 -1
- package/build/src/services/node/NodeTransactionPoolService.spec.js +5 -5
- package/build/src/services/node/NodeTransactionPoolService.spec.js.map +1 -1
- package/build/src/services/node/NodeVersionService.spec.js +1 -1
- package/build/src/services/node/NodeVersionService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsAssetsService.spec.js +113 -1
- package/build/src/services/pallets/PalletsAssetsService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js +48 -7
- package/build/src/services/pallets/PalletsStakingProgressService.spec.js.map +1 -1
- package/build/src/services/pallets/PalletsStorageService.d.ts +14 -2
- package/build/src/services/pallets/PalletsStorageService.js +56 -11
- package/build/src/services/pallets/PalletsStorageService.js.map +1 -1
- package/build/src/services/pallets/PalletsStorageService.spec.js +29 -7
- package/build/src/services/pallets/PalletsStorageService.spec.js.map +1 -1
- package/build/src/services/paras/ParasService.spec.d.ts +10 -1
- package/build/src/services/paras/ParasService.spec.js +201 -8
- package/build/src/services/paras/ParasService.spec.js.map +1 -1
- package/build/src/services/runtime/RuntimeCodeService.spec.js +1 -1
- package/build/src/services/runtime/RuntimeCodeService.spec.js.map +1 -1
- package/build/src/services/runtime/RuntimeMetadataService.spec.js +1 -1
- package/build/src/services/runtime/RuntimeMetadataService.spec.js.map +1 -1
- package/build/src/services/runtime/RuntimeSpecService.spec.js +1 -1
- package/build/src/services/runtime/RuntimeSpecService.spec.js.map +1 -1
- package/build/src/services/test-helpers/mock/data/block789629.json +2 -2
- package/build/src/services/test-helpers/mock/data/blocks789629Fork.json +2 -2
- package/build/src/services/test-helpers/mock/mockApi.d.ts +4 -12
- package/build/src/services/test-helpers/mock/mockApi.js +3 -377
- package/build/src/services/test-helpers/mock/mockApi.js.map +1 -1
- package/build/src/services/test-helpers/responses/blocks/block789629Extrinsic.json +3 -0
- package/build/src/services/test-helpers/responses/blocks/blocks789629.json +99 -154
- package/build/src/services/transaction/TransactionFeeEstimateService.spec.js +6 -3
- package/build/src/services/transaction/TransactionFeeEstimateService.spec.js.map +1 -1
- package/build/src/services/transaction/TransactionMaterialService.spec.js +1 -1
- package/build/src/services/transaction/TransactionMaterialService.spec.js.map +1 -1
- package/build/src/services/transaction/TransactionSubmitService.spec.js +8 -7
- package/build/src/services/transaction/TransactionSubmitService.spec.js.map +1 -1
- package/build/src/test-helpers/metadata/polkadotV9110Metadata.d.ts +1 -0
- package/build/src/test-helpers/metadata/polkadotV9110Metadata.js +5 -0
- package/build/src/test-helpers/metadata/polkadotV9110Metadata.js.map +1 -0
- package/build/src/test-helpers/registries/polkadotRegistry.d.ts +4 -0
- package/build/src/test-helpers/registries/polkadotRegistry.js +6 -1
- package/build/src/test-helpers/registries/polkadotRegistry.js.map +1 -1
- package/package.json +17 -19
|
@@ -3,33 +3,74 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
8
6
|
const http_errors_1 = require("http-errors");
|
|
9
7
|
const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
|
|
10
8
|
const registries_1 = require("../../test-helpers/registries");
|
|
11
9
|
const mock_1 = require("../test-helpers/mock");
|
|
10
|
+
const validators789629Hex_1 = require("../test-helpers/mock/data/validators789629Hex");
|
|
12
11
|
const stakingProgress789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/stakingProgress789629.json"));
|
|
13
12
|
const PalletsStakingProgressService_1 = require("./PalletsStakingProgressService");
|
|
13
|
+
const epochIndexAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 330));
|
|
14
|
+
const genesisSlotAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 265084563));
|
|
15
|
+
const currentSlotAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u64', 265876724));
|
|
16
|
+
const currentIndexAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('SessionIndex', 330));
|
|
17
|
+
const eraElectionStatusAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('ElectionStatus', { Close: null }));
|
|
18
|
+
const validatorsAt = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<ValidatorId>', validators789629Hex_1.validators789629Hex));
|
|
19
|
+
const forceEraAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Forcing', 'NotForcing'));
|
|
20
|
+
const unappliedSlashesAt = (_hash, _activeEra) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Vec<UnappliedSlash>', []));
|
|
21
|
+
const validatorCountAt = (_hash) => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('u32', 197));
|
|
22
|
+
const mockApi = {
|
|
23
|
+
...mock_1.defaultMockApi,
|
|
24
|
+
consts: {
|
|
25
|
+
babe: {
|
|
26
|
+
epochDuration: registries_1.polkadotRegistry.createType('u64', 2400),
|
|
27
|
+
},
|
|
28
|
+
staking: {
|
|
29
|
+
electionLookAhead: registries_1.polkadotRegistry.createType('BlockNumber'),
|
|
30
|
+
sessionsPerEra: registries_1.polkadotRegistry.createType('SessionIndex', 6),
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
query: {
|
|
34
|
+
babe: {
|
|
35
|
+
currentSlot: { at: currentSlotAt },
|
|
36
|
+
epochIndex: { at: epochIndexAt },
|
|
37
|
+
genesisSlot: { at: genesisSlotAt },
|
|
38
|
+
},
|
|
39
|
+
session: {
|
|
40
|
+
currentIndex: { at: currentIndexAt },
|
|
41
|
+
validators: validatorsAt,
|
|
42
|
+
},
|
|
43
|
+
staking: {
|
|
44
|
+
activeEra: { at: mock_1.activeEraAt },
|
|
45
|
+
eraElectionStatus: { at: eraElectionStatusAt },
|
|
46
|
+
erasStartSessionIndex: { at: mock_1.erasStartSessionIndexAt },
|
|
47
|
+
forceEra: { at: forceEraAt },
|
|
48
|
+
unappliedSlashes: { at: unappliedSlashesAt },
|
|
49
|
+
validatorCount: { at: validatorCountAt },
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
14
53
|
/**
|
|
15
54
|
* Mock PalletStakingProgressService instance.
|
|
16
55
|
*/
|
|
17
|
-
const palletStakingProgressService = new PalletsStakingProgressService_1.PalletsStakingProgressService(
|
|
56
|
+
const palletStakingProgressService = new PalletsStakingProgressService_1.PalletsStakingProgressService(mockApi);
|
|
18
57
|
describe('PalletStakingProgressService', () => {
|
|
19
58
|
describe('derivePalletStakingProgress', () => {
|
|
59
|
+
mockApi.query.session.validators = { at: validatorsAt };
|
|
20
60
|
it('works when ApiPromise works (block 789629)', async () => {
|
|
21
61
|
expect((0, sanitizeNumbers_1.sanitizeNumbers)(await palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629))).toStrictEqual(stakingProgress789629_json_1.default);
|
|
22
62
|
});
|
|
23
63
|
it('throws when ErasStartSessionIndex.isNone', async () => {
|
|
24
|
-
|
|
64
|
+
mockApi.query.staking.erasStartSessionIndex.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<SessionIndex>', null));
|
|
25
65
|
await expect(palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629)).rejects.toStrictEqual(new http_errors_1.InternalServerError('EraStartSessionIndex is None when Some was expected.'));
|
|
26
|
-
|
|
66
|
+
mockApi.query.staking.erasStartSessionIndex.at =
|
|
27
67
|
mock_1.erasStartSessionIndexAt;
|
|
28
68
|
});
|
|
29
69
|
it('throws when activeEra.isNone', async () => {
|
|
30
|
-
|
|
70
|
+
mockApi.query.staking.activeEra.at = () => Promise.resolve().then(() => registries_1.polkadotRegistry.createType('Option<ActiveEraInfo>', null));
|
|
31
71
|
await expect(palletStakingProgressService.derivePalletStakingProgress(mock_1.blockHash789629)).rejects.toStrictEqual(new http_errors_1.InternalServerError('ActiveEra is None when Some was expected.'));
|
|
32
|
-
|
|
72
|
+
mockApi.query.staking.activeEra.at = mock_1.activeEraAt;
|
|
73
|
+
mockApi.query.session.validators = validatorsAt;
|
|
33
74
|
});
|
|
34
75
|
});
|
|
35
76
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PalletsStakingProgressService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStakingProgressService.spec.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"PalletsStakingProgressService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStakingProgressService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +1,33 @@
|
|
|
1
|
+
import { ApiDecoration } from '@polkadot/api/types';
|
|
1
2
|
import { BlockHash } from '@polkadot/types/interfaces';
|
|
2
3
|
import { IPalletStorage, IPalletStorageItem } from 'src/types/responses';
|
|
3
4
|
import { AbstractService } from '../AbstractService';
|
|
4
5
|
interface IFetchPalletArgs {
|
|
5
6
|
hash: BlockHash;
|
|
6
7
|
palletId: string;
|
|
8
|
+
adjustMetadataV13Arg: boolean;
|
|
7
9
|
}
|
|
8
10
|
interface IFetchStorageItemArgs extends IFetchPalletArgs {
|
|
9
11
|
storageItemId: string;
|
|
10
12
|
key1?: string;
|
|
11
13
|
key2?: string;
|
|
12
14
|
metadata: boolean;
|
|
15
|
+
adjustMetadataV13Arg: boolean;
|
|
13
16
|
}
|
|
14
17
|
export declare class PalletsStorageService extends AbstractService {
|
|
15
|
-
fetchStorageItem({ hash, palletId, storageItemId, key1, key2, metadata, }: IFetchStorageItemArgs): Promise<IPalletStorageItem>;
|
|
16
|
-
fetchStorage({ hash, palletId, onlyIds, }: IFetchPalletArgs & {
|
|
18
|
+
fetchStorageItem(historicApi: ApiDecoration<'promise'>, { hash, palletId, storageItemId, key1, key2, metadata, adjustMetadataV13Arg, }: IFetchStorageItemArgs): Promise<IPalletStorageItem>;
|
|
19
|
+
fetchStorage(historicApi: ApiDecoration<'promise'>, { hash, palletId, onlyIds, adjustMetadataV13Arg, }: IFetchPalletArgs & {
|
|
17
20
|
onlyIds: boolean;
|
|
18
21
|
}): Promise<IPalletStorage>;
|
|
22
|
+
/**
|
|
23
|
+
* This will grab either V13 or V14 metadata for pallets. The reason being is v14 introduced
|
|
24
|
+
* `StorageEntryTypeV14` which is different from `StorageEntryTypeV13` when it comes
|
|
25
|
+
* to `asMap`. This will ultimately give different responses, and we want to make sure
|
|
26
|
+
* we preserve the integrity of older blocks.
|
|
27
|
+
*
|
|
28
|
+
* @param hash BlockHash to query
|
|
29
|
+
*/
|
|
30
|
+
private chooseMetadataVersion;
|
|
19
31
|
/**
|
|
20
32
|
* Normalize storage item metadata by running it through `sanitizeNumbers` and
|
|
21
33
|
* converting the docs section from an array of strings to a single string
|
|
@@ -5,9 +5,46 @@ const util_1 = require("@polkadot/util");
|
|
|
5
5
|
const http_errors_1 = require("http-errors");
|
|
6
6
|
const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
|
|
7
7
|
const AbstractService_1 = require("../AbstractService");
|
|
8
|
+
/**
|
|
9
|
+
* This is where these networks switched to v9110 which introduces v14 Metadata.
|
|
10
|
+
*/
|
|
11
|
+
const upgradeBlocks = {
|
|
12
|
+
kusama: 9625129,
|
|
13
|
+
polkadot: 7229126,
|
|
14
|
+
westend: 7766392,
|
|
15
|
+
};
|
|
8
16
|
class PalletsStorageService extends AbstractService_1.AbstractService {
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
/**
|
|
20
|
+
* This will grab either V13 or V14 metadata for pallets. The reason being is v14 introduced
|
|
21
|
+
* `StorageEntryTypeV14` which is different from `StorageEntryTypeV13` when it comes
|
|
22
|
+
* to `asMap`. This will ultimately give different responses, and we want to make sure
|
|
23
|
+
* we preserve the integrity of older blocks.
|
|
24
|
+
*
|
|
25
|
+
* @param hash BlockHash to query
|
|
26
|
+
*/
|
|
27
|
+
this.chooseMetadataVersion = async (hash, adjustMetadataV13Arg) => {
|
|
28
|
+
const [historicMetadata, blockHeader, { specName }] = await Promise.all([
|
|
29
|
+
await this.api.rpc.state.getMetadata(hash),
|
|
30
|
+
await this.api.rpc.chain.getHeader(hash),
|
|
31
|
+
this.api.rpc.state.getRuntimeVersion(),
|
|
32
|
+
]);
|
|
33
|
+
const blockNumber = blockHeader.number.toNumber();
|
|
34
|
+
let chosenMetadata;
|
|
35
|
+
if (blockNumber < upgradeBlocks[specName.toString()] &&
|
|
36
|
+
adjustMetadataV13Arg) {
|
|
37
|
+
chosenMetadata = historicMetadata.asV13;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
chosenMetadata = historicMetadata.asV14;
|
|
41
|
+
}
|
|
42
|
+
return chosenMetadata;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
async fetchStorageItem(historicApi, { hash, palletId, storageItemId, key1, key2, metadata, adjustMetadataV13Arg, }) {
|
|
46
|
+
const chosenMetadata = await this.chooseMetadataVersion(hash, adjustMetadataV13Arg);
|
|
47
|
+
const [palletMeta, palletMetaIdx] = this.findPalletMeta(chosenMetadata, historicApi, palletId);
|
|
11
48
|
const palletName = (0, util_1.stringCamelCase)(palletMeta.name);
|
|
12
49
|
// Even if `storageItemMeta` is not used, we call this function to ensure it exists. The side effects
|
|
13
50
|
// of the storage item not existing are that `findStorageItemMeta` will throw.
|
|
@@ -18,7 +55,7 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
|
|
|
18
55
|
this.normalizeStorageItemMeta(storageItemMeta);
|
|
19
56
|
}
|
|
20
57
|
const [value, { number }] = await Promise.all([
|
|
21
|
-
|
|
58
|
+
historicApi.query[palletName][storageItemId](key1, key2),
|
|
22
59
|
this.api.rpc.chain.getHeader(hash),
|
|
23
60
|
]);
|
|
24
61
|
return {
|
|
@@ -35,8 +72,9 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
|
|
|
35
72
|
metadata: normalizedStorageItemMeta,
|
|
36
73
|
};
|
|
37
74
|
}
|
|
38
|
-
async fetchStorage({ hash, palletId, onlyIds, }) {
|
|
39
|
-
const
|
|
75
|
+
async fetchStorage(historicApi, { hash, palletId, onlyIds, adjustMetadataV13Arg, }) {
|
|
76
|
+
const chosenMetadata = await this.chooseMetadataVersion(hash, adjustMetadataV13Arg);
|
|
77
|
+
const [palletMeta, palletMetaIdx] = this.findPalletMeta(chosenMetadata, historicApi, palletId);
|
|
40
78
|
let items;
|
|
41
79
|
if (palletMeta.storage.isNone) {
|
|
42
80
|
items = [];
|
|
@@ -96,10 +134,17 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
|
|
|
96
134
|
*
|
|
97
135
|
* @param palletId identifier for a FRAME pallet as a pallet name or index.
|
|
98
136
|
*/
|
|
99
|
-
findPalletMeta(palletId) {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
137
|
+
findPalletMeta(adjustedMetadata, historicApi, palletId) {
|
|
138
|
+
const metadataType = adjustedMetadata.toRawType();
|
|
139
|
+
let pallets;
|
|
140
|
+
if (metadataType.includes('MetadataV13')) {
|
|
141
|
+
pallets = adjustedMetadata['modules'];
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
pallets = adjustedMetadata['pallets'];
|
|
145
|
+
}
|
|
146
|
+
const { isValidPalletName, isValidPalletIndex, parsedPalletId } = this.validPalletId(historicApi, pallets, palletId);
|
|
147
|
+
const filtered = pallets.filter((mod) => mod.storage.isSome);
|
|
103
148
|
let palletMeta;
|
|
104
149
|
let palletIdx;
|
|
105
150
|
if (isValidPalletIndex) {
|
|
@@ -139,10 +184,10 @@ class PalletsStorageService extends AbstractService_1.AbstractService {
|
|
|
139
184
|
}
|
|
140
185
|
return [palletMeta, palletIdx];
|
|
141
186
|
}
|
|
142
|
-
validPalletId(modules, palletId) {
|
|
187
|
+
validPalletId(historicApi, modules, palletId) {
|
|
143
188
|
// Either a pallet name (string) or a pallet index (number)
|
|
144
189
|
const parsedPalletId = PalletsStorageService.palletIdxOrName(palletId);
|
|
145
|
-
const isValidPalletName = typeof parsedPalletId === 'string' && !!
|
|
190
|
+
const isValidPalletName = typeof parsedPalletId === 'string' && !!historicApi.query[palletId];
|
|
146
191
|
const isValidPalletIndex = typeof parsedPalletId === 'number' &&
|
|
147
192
|
modules.some((meta, idx) => meta.index.eqn(255)
|
|
148
193
|
? idx === parsedPalletId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PalletsStorageService.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"PalletsStorageService.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,68 +4,90 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const sanitize_1 = require("../../sanitize");
|
|
7
|
+
const registries_1 = require("../../test-helpers/registries");
|
|
7
8
|
const mock_1 = require("../test-helpers/mock");
|
|
8
9
|
const fetchStorage789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorage789629.json"));
|
|
9
10
|
const fetchStorageIdsOnly789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorageIdsOnly789629.json"));
|
|
10
11
|
const fetchStorageItem789629_json_1 = __importDefault(require("../test-helpers/responses/pallets/fetchStorageItem789629.json"));
|
|
11
12
|
const PalletsStorageService_1 = require("./PalletsStorageService");
|
|
13
|
+
const referendumInfoOfAt = () => Promise.resolve().then(() => {
|
|
14
|
+
registries_1.polkadotRegistry.createType('ReferendumInfo');
|
|
15
|
+
});
|
|
16
|
+
const mockHistoricApi = {
|
|
17
|
+
registry: registries_1.polkadotRegistry,
|
|
18
|
+
query: {
|
|
19
|
+
democracy: {
|
|
20
|
+
referendumInfoOf: referendumInfoOfAt,
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
const mockApi = {
|
|
25
|
+
...mock_1.defaultMockApi,
|
|
26
|
+
at: (_hash) => mockHistoricApi,
|
|
27
|
+
};
|
|
12
28
|
/**
|
|
13
29
|
* Mock PalletsStorageService instance.
|
|
14
30
|
*/
|
|
15
|
-
const palletsStorageService = new PalletsStorageService_1.PalletsStorageService(
|
|
31
|
+
const palletsStorageService = new PalletsStorageService_1.PalletsStorageService(mockApi);
|
|
16
32
|
describe('PalletStorageService', () => {
|
|
17
33
|
describe('fetchStorageItem', () => {
|
|
18
34
|
it('works with a query to a single key storage map', async () => {
|
|
19
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
|
|
35
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
|
|
20
36
|
hash: mock_1.blockHash789629,
|
|
21
37
|
palletId: 'democracy',
|
|
22
38
|
storageItemId: 'referendumInfoOf',
|
|
23
39
|
key1: '0',
|
|
24
40
|
key2: undefined,
|
|
25
41
|
metadata: false,
|
|
42
|
+
adjustMetadataV13Arg: true,
|
|
26
43
|
}))).toMatchObject(fetchStorageItem789629_json_1.default);
|
|
27
44
|
});
|
|
28
45
|
it('works with a index identifier', async () => {
|
|
29
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
|
|
46
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
|
|
30
47
|
hash: mock_1.blockHash789629,
|
|
31
48
|
palletId: '15',
|
|
32
49
|
storageItemId: 'referendumInfoOf',
|
|
33
50
|
key1: '0',
|
|
34
51
|
key2: undefined,
|
|
35
52
|
metadata: false,
|
|
53
|
+
adjustMetadataV13Arg: true,
|
|
36
54
|
}))).toMatchObject(fetchStorageItem789629_json_1.default);
|
|
37
55
|
});
|
|
38
56
|
it('appropriately uses metadata params', async () => {
|
|
39
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem({
|
|
57
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorageItem(mockHistoricApi, {
|
|
40
58
|
hash: mock_1.blockHash789629,
|
|
41
59
|
palletId: 'democracy',
|
|
42
60
|
storageItemId: 'referendumInfoOf',
|
|
43
61
|
key1: '0',
|
|
44
62
|
key2: undefined,
|
|
45
63
|
metadata: true,
|
|
64
|
+
adjustMetadataV13Arg: true,
|
|
46
65
|
}))).toMatchObject(fetchStorageItem789629_json_1.default);
|
|
47
66
|
});
|
|
48
67
|
});
|
|
49
68
|
describe('fetchStorage', () => {
|
|
50
69
|
it('works with no query params', async () => {
|
|
51
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
|
|
70
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
|
|
52
71
|
hash: mock_1.blockHash789629,
|
|
53
72
|
palletId: 'democracy',
|
|
54
73
|
onlyIds: false,
|
|
74
|
+
adjustMetadataV13Arg: true,
|
|
55
75
|
}))).toStrictEqual(fetchStorage789629_json_1.default);
|
|
56
76
|
});
|
|
57
77
|
it('work with a index identifier', async () => {
|
|
58
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
|
|
78
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
|
|
59
79
|
hash: mock_1.blockHash789629,
|
|
60
80
|
palletId: '15',
|
|
61
81
|
onlyIds: false,
|
|
82
|
+
adjustMetadataV13Arg: true,
|
|
62
83
|
}))).toStrictEqual(fetchStorage789629_json_1.default);
|
|
63
84
|
});
|
|
64
85
|
it('only list storage item ids when onlyIds is true', async () => {
|
|
65
|
-
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage({
|
|
86
|
+
expect((0, sanitize_1.sanitizeNumbers)(await palletsStorageService.fetchStorage(mockHistoricApi, {
|
|
66
87
|
hash: mock_1.blockHash789629,
|
|
67
88
|
palletId: 'democracy',
|
|
68
89
|
onlyIds: true,
|
|
90
|
+
adjustMetadataV13Arg: true,
|
|
69
91
|
}))).toStrictEqual(fetchStorageIdsOnly789629_json_1.default);
|
|
70
92
|
});
|
|
71
93
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PalletsStorageService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.spec.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"PalletsStorageService.spec.js","sourceRoot":"","sources":["../../../../src/services/pallets/PalletsStorageService.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
import { Option, Tuple, Vec } from '@polkadot/types';
|
|
2
|
+
import { BlockNumber } from '@polkadot/types/interfaces';
|
|
3
|
+
import { Codec } from '@polkadot/types/types';
|
|
4
|
+
export declare const emptyVectorLeases: Vec<import("@polkadot/types").Raw>;
|
|
5
|
+
export declare const slotsLeasesAt: () => Promise<Vec<Option<Tuple>>>;
|
|
6
|
+
/**
|
|
7
|
+
* Used for parachain Auctions
|
|
8
|
+
*/
|
|
9
|
+
export declare const auctionsInfoAt: () => Promise<Option<Vec<BlockNumber>>>;
|
|
10
|
+
export declare const noneAuctionsInfoAt: () => Promise<Option<Codec>>;
|
|
@@ -3,12 +3,205 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.noneAuctionsInfoAt = exports.auctionsInfoAt = exports.slotsLeasesAt = exports.emptyVectorLeases = void 0;
|
|
6
7
|
const bn_js_1 = __importDefault(require("bn.js"));
|
|
7
8
|
const sanitizeNumbers_1 = require("../../sanitize/sanitizeNumbers");
|
|
9
|
+
const rococoMetadata_1 = require("../../test-helpers/metadata/rococoMetadata");
|
|
8
10
|
const registries_1 = require("../../test-helpers/registries");
|
|
11
|
+
const typeFactory_1 = require("../../test-helpers/typeFactory");
|
|
9
12
|
const mock_1 = require("../test-helpers/mock");
|
|
10
13
|
const ParasService_1 = require("./ParasService");
|
|
11
|
-
|
|
14
|
+
/**
|
|
15
|
+
* ParasService specific constants
|
|
16
|
+
* The below types and constants use the rococo registry in order to properly
|
|
17
|
+
* test the ParasService with accurate metadata
|
|
18
|
+
*/
|
|
19
|
+
const rococoApi = (0, typeFactory_1.createApiWithAugmentations)(rococoMetadata_1.rococoMetadataV228);
|
|
20
|
+
const rococoTypeFactory = new typeFactory_1.TypeFactory(rococoApi);
|
|
21
|
+
/**
|
|
22
|
+
* Used for parachain crowdloans
|
|
23
|
+
*/
|
|
24
|
+
const funds = {
|
|
25
|
+
depositor: registries_1.rococoRegistry.createType('AccountId', '14E5nqKAp3oAJcmzgZhUD2RcptBeUBScxKHgJKU4HPNcKVf3'),
|
|
26
|
+
verifier: null,
|
|
27
|
+
deposit: registries_1.rococoRegistry.createType('Balance', 100000000000000),
|
|
28
|
+
raised: registries_1.rococoRegistry.createType('Balance', 627500000000000),
|
|
29
|
+
end: registries_1.rococoRegistry.createType('BlockNumber', 200000),
|
|
30
|
+
cap: registries_1.rococoRegistry.createType('Balance', '0x0000000000000000016345785d8a0000'),
|
|
31
|
+
lastContribution: registries_1.rococoRegistry.createType('LastContribution', {
|
|
32
|
+
preEnding: 6,
|
|
33
|
+
}),
|
|
34
|
+
firstPeriod: registries_1.rococoRegistry.createType('LeasePeriod', 13),
|
|
35
|
+
lastPeriod: registries_1.rococoRegistry.createType('LeasePeriod', 16),
|
|
36
|
+
trieIndex: registries_1.rococoRegistry.createType('TrieIndex', 60),
|
|
37
|
+
};
|
|
38
|
+
const paraLifecycleObjectOne = {
|
|
39
|
+
onboarding: true,
|
|
40
|
+
parachain: true,
|
|
41
|
+
};
|
|
42
|
+
const paraLifecycleObjectTwo = {
|
|
43
|
+
parathread: true,
|
|
44
|
+
parachain: false,
|
|
45
|
+
};
|
|
46
|
+
const crowdloanParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.crowdloan.funds);
|
|
47
|
+
const crowdloanParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.crowdloan.funds);
|
|
48
|
+
const paraLifecycleOne = registries_1.rococoRegistry.createType('ParaLifecycle', paraLifecycleObjectOne);
|
|
49
|
+
const paraLifecycleTwo = registries_1.rococoRegistry.createType('ParaLifecycle', paraLifecycleObjectTwo);
|
|
50
|
+
const accountIdOne = registries_1.rococoRegistry.createType('AccountId', '1TYrFCWxwHA5bhiXf6uLvPfG6eEvrzzL7uiPK3Yc6yHLUqc');
|
|
51
|
+
const accountIdTwo = registries_1.rococoRegistry.createType('AccountId', '13NXiLYYzVEjXxU3eaZNcrjEX9vPyVDNNpURCzK8Bj9BiCWH');
|
|
52
|
+
const balanceOfOne = registries_1.rococoRegistry.createType('BalanceOf', 1000000);
|
|
53
|
+
const balanceOfTwo = registries_1.rococoRegistry.createType('BalanceOf', 2000000);
|
|
54
|
+
const fundsEntries = () => Promise.resolve().then(() => {
|
|
55
|
+
const optionFundInfo = registries_1.rococoRegistry.createType('Option<FundInfo>', funds);
|
|
56
|
+
const entries = [
|
|
57
|
+
[crowdloanParaId1, optionFundInfo],
|
|
58
|
+
[crowdloanParaId2, optionFundInfo],
|
|
59
|
+
];
|
|
60
|
+
return entries;
|
|
61
|
+
});
|
|
62
|
+
const fundsAt = () => Promise.resolve().then(() => {
|
|
63
|
+
return registries_1.rococoRegistry.createType('Option<FundInfo>', funds);
|
|
64
|
+
});
|
|
65
|
+
const fundsKeys = () => Promise.resolve().then(() => {
|
|
66
|
+
return [crowdloanParaId1, crowdloanParaId2];
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Used for parachain paras
|
|
70
|
+
*/
|
|
71
|
+
const paraLifeCycleParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.paras.paraLifecycles);
|
|
72
|
+
const paraLifeCycleParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.paras.paraLifecycles);
|
|
73
|
+
const parasLifecyclesEntriesAt = () => Promise.resolve().then(() => {
|
|
74
|
+
return [
|
|
75
|
+
[paraLifeCycleParaId1, paraLifecycleOne],
|
|
76
|
+
[paraLifeCycleParaId2, paraLifecycleTwo],
|
|
77
|
+
];
|
|
78
|
+
});
|
|
79
|
+
const parasGenesisArgsAt = () => Promise.resolve().then(() => {
|
|
80
|
+
return registries_1.rococoRegistry.createType('ParaGenesisArgs', { parachain: true });
|
|
81
|
+
});
|
|
82
|
+
const upcomingParasGenesisAt = () => Promise.resolve().then(() => {
|
|
83
|
+
return registries_1.rococoRegistry.createType('Option<ParaGenesisArgs>', {
|
|
84
|
+
parachain: true,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
const parasLifecyclesAt = () => Promise.resolve().then(() => {
|
|
88
|
+
return rococoTypeFactory.optionOf(paraLifecycleOne);
|
|
89
|
+
});
|
|
90
|
+
/**
|
|
91
|
+
* Used for parachain leases
|
|
92
|
+
*/
|
|
93
|
+
const leasesParaId1 = rococoTypeFactory.storageKey(199, 'ParaId', rococoApi.query.slots.leases);
|
|
94
|
+
const leasesParaId2 = rococoTypeFactory.storageKey(200, 'ParaId', rococoApi.query.slots.leases);
|
|
95
|
+
const leasesTupleOne = rococoTypeFactory.tupleOf([accountIdOne, balanceOfOne], ['AccountId', 'BalanceOf']);
|
|
96
|
+
const leasesTupleTwo = rococoTypeFactory.tupleOf([accountIdTwo, balanceOfTwo], ['AccountId', 'BalanceOf']);
|
|
97
|
+
const parasOptionsOne = rococoTypeFactory.optionOf(leasesTupleOne);
|
|
98
|
+
const parasOptionsTwo = rococoTypeFactory.optionOf(leasesTupleTwo);
|
|
99
|
+
const vectorLeases = rococoTypeFactory.vecOf([
|
|
100
|
+
parasOptionsOne,
|
|
101
|
+
parasOptionsTwo,
|
|
102
|
+
]);
|
|
103
|
+
exports.emptyVectorLeases = registries_1.rococoRegistry.createType('Vec<Raw>', []);
|
|
104
|
+
const slotsLeasesAt = () => Promise.resolve().then(() => {
|
|
105
|
+
return vectorLeases;
|
|
106
|
+
});
|
|
107
|
+
exports.slotsLeasesAt = slotsLeasesAt;
|
|
108
|
+
const slotsLeasesEntriesAt = () => Promise.resolve().then(() => {
|
|
109
|
+
return [
|
|
110
|
+
[leasesParaId1, vectorLeases],
|
|
111
|
+
[leasesParaId2, vectorLeases],
|
|
112
|
+
];
|
|
113
|
+
});
|
|
114
|
+
/**
|
|
115
|
+
* Used for parachain Auctions
|
|
116
|
+
*/
|
|
117
|
+
const auctionsInfoAt = () => Promise.resolve().then(() => {
|
|
118
|
+
const beingEnd = registries_1.rococoRegistry.createType('BlockNumber', 1000);
|
|
119
|
+
const leasePeriodIndex = registries_1.rococoRegistry.createType('BlockNumber', 39);
|
|
120
|
+
const vectorAuctions = rococoTypeFactory.vecOf([
|
|
121
|
+
leasePeriodIndex,
|
|
122
|
+
beingEnd,
|
|
123
|
+
]);
|
|
124
|
+
const optionAuctions = rococoTypeFactory.optionOf(vectorAuctions);
|
|
125
|
+
return optionAuctions;
|
|
126
|
+
});
|
|
127
|
+
exports.auctionsInfoAt = auctionsInfoAt;
|
|
128
|
+
const noneAuctionsInfoAt = () => Promise.resolve().then(() => registries_1.rococoRegistry.createType('Option<Raw>', null));
|
|
129
|
+
exports.noneAuctionsInfoAt = noneAuctionsInfoAt;
|
|
130
|
+
const auctionCounterAt = () => Promise.resolve().then(() => {
|
|
131
|
+
const counter = new bn_js_1.default(4);
|
|
132
|
+
return counter;
|
|
133
|
+
});
|
|
134
|
+
const auctionsWinningsAt = () => Promise.resolve().then(() => {
|
|
135
|
+
const paraId1 = registries_1.rococoRegistry.createType('ParaId', 199);
|
|
136
|
+
const paraId2 = registries_1.rococoRegistry.createType('ParaId', 200);
|
|
137
|
+
const tupleOne = rococoTypeFactory.tupleOf([accountIdOne, paraId1, balanceOfOne], ['AccountId', 'ParaId', 'BalanceOf']);
|
|
138
|
+
const tupleTwo = rococoTypeFactory.tupleOf([accountIdTwo, paraId2, balanceOfTwo], ['AccountId', 'ParaId', 'BalanceOf']);
|
|
139
|
+
const parasOptionsOne = rococoTypeFactory.optionOf(tupleOne);
|
|
140
|
+
const parasOptionsTwo = rococoTypeFactory.optionOf(tupleTwo);
|
|
141
|
+
// No bids for the remaining slot ranges
|
|
142
|
+
const mockWinningOptions = new Array(8).fill(registries_1.rococoRegistry.createType('Option<Raw>', null) // This is just `Option::None`
|
|
143
|
+
);
|
|
144
|
+
// Total of 10 winning object, 2 `Some(..)`, 8 `None`
|
|
145
|
+
const vectorWinnings = rococoTypeFactory.vecOf([
|
|
146
|
+
parasOptionsOne,
|
|
147
|
+
parasOptionsTwo,
|
|
148
|
+
...mockWinningOptions,
|
|
149
|
+
]);
|
|
150
|
+
const optionWinnings = rococoTypeFactory.optionOf(vectorWinnings);
|
|
151
|
+
return optionWinnings;
|
|
152
|
+
});
|
|
153
|
+
const mockApi = {
|
|
154
|
+
...mock_1.defaultMockApi,
|
|
155
|
+
consts: {
|
|
156
|
+
auctions: {
|
|
157
|
+
endingPeriod: new bn_js_1.default(20000),
|
|
158
|
+
sampleLength: new bn_js_1.default(2),
|
|
159
|
+
leasePeriodsPerSlot: undefined,
|
|
160
|
+
},
|
|
161
|
+
slots: {
|
|
162
|
+
leasePeriod: new bn_js_1.default(20000),
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
query: {
|
|
166
|
+
auctions: {
|
|
167
|
+
auctionInfo: {
|
|
168
|
+
at: exports.auctionsInfoAt,
|
|
169
|
+
},
|
|
170
|
+
auctionCounter: {
|
|
171
|
+
at: auctionCounterAt,
|
|
172
|
+
},
|
|
173
|
+
winning: {
|
|
174
|
+
at: auctionsWinningsAt,
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
crowdloan: {
|
|
178
|
+
funds: {
|
|
179
|
+
entriesAt: fundsEntries,
|
|
180
|
+
keys: fundsKeys,
|
|
181
|
+
at: fundsAt,
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
paras: {
|
|
185
|
+
paraLifecycles: {
|
|
186
|
+
entriesAt: parasLifecyclesEntriesAt,
|
|
187
|
+
at: parasLifecyclesAt,
|
|
188
|
+
},
|
|
189
|
+
paraGenesisArgs: {
|
|
190
|
+
at: parasGenesisArgsAt,
|
|
191
|
+
},
|
|
192
|
+
upcomingParasGenesis: {
|
|
193
|
+
at: upcomingParasGenesisAt,
|
|
194
|
+
},
|
|
195
|
+
},
|
|
196
|
+
slots: {
|
|
197
|
+
leases: {
|
|
198
|
+
entriesAt: slotsLeasesEntriesAt,
|
|
199
|
+
at: exports.slotsLeasesAt,
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
const parasService = new ParasService_1.ParasService(mockApi);
|
|
12
205
|
describe('ParasService', () => {
|
|
13
206
|
const paraId = 199;
|
|
14
207
|
const expectedAt = {
|
|
@@ -78,8 +271,8 @@ describe('ParasService', () => {
|
|
|
78
271
|
expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
|
|
79
272
|
});
|
|
80
273
|
it('Should have `null` `leases` when its length is equal to 0', async () => {
|
|
81
|
-
const emptyLeasesAt = () => Promise.resolve().then(() =>
|
|
82
|
-
|
|
274
|
+
const emptyLeasesAt = () => Promise.resolve().then(() => exports.emptyVectorLeases);
|
|
275
|
+
mockApi.query.slots.leases.at = emptyLeasesAt;
|
|
83
276
|
const expectedResponse = {
|
|
84
277
|
at: expectedAt,
|
|
85
278
|
leases: null,
|
|
@@ -88,7 +281,7 @@ describe('ParasService', () => {
|
|
|
88
281
|
};
|
|
89
282
|
const response = await parasService.leaseInfo(mock_1.blockHash789629, paraId);
|
|
90
283
|
expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
|
|
91
|
-
|
|
284
|
+
mockApi.query.slots.leases.at = exports.slotsLeasesAt;
|
|
92
285
|
});
|
|
93
286
|
});
|
|
94
287
|
describe('ParasService.leasesCurrent', () => {
|
|
@@ -189,15 +382,15 @@ describe('ParasService', () => {
|
|
|
189
382
|
};
|
|
190
383
|
const header = registries_1.polkadotRegistry.createType('Header', overrideHeader);
|
|
191
384
|
// Override the mockApi
|
|
192
|
-
|
|
385
|
+
mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => header);
|
|
193
386
|
const expectedResponse = 'endPeriod';
|
|
194
387
|
const response = await parasService.auctionsCurrent(mock_1.blockHash20000);
|
|
195
388
|
expect(response.phase).toBe(expectedResponse);
|
|
196
389
|
// Set the MockApi back to its original self
|
|
197
|
-
|
|
390
|
+
mockApi.rpc.chain.getHeader = () => Promise.resolve().then(() => mock_1.mockBlock789629.header);
|
|
198
391
|
});
|
|
199
392
|
it('Should return the correct null values when `auctionInfo` is `None`', async () => {
|
|
200
|
-
|
|
393
|
+
mockApi.query.auctions.auctionInfo.at = exports.noneAuctionsInfoAt;
|
|
201
394
|
const expectedResponse = {
|
|
202
395
|
at: expectedAt,
|
|
203
396
|
beginEnd: null,
|
|
@@ -209,7 +402,7 @@ describe('ParasService', () => {
|
|
|
209
402
|
};
|
|
210
403
|
const response = await parasService.auctionsCurrent(mock_1.blockHash789629);
|
|
211
404
|
expect((0, sanitizeNumbers_1.sanitizeNumbers)(response)).toMatchObject(expectedResponse);
|
|
212
|
-
|
|
405
|
+
mockApi.query.auctions.auctionInfo.at = exports.auctionsInfoAt;
|
|
213
406
|
});
|
|
214
407
|
});
|
|
215
408
|
});
|