Fix StorageData checks, fix Option toHex 00/01 (#1052)
* Option.toHex should not add 00/01 (implied) * Option tests * We have a failing test, finally * Adapt createType to cater for storage with length
This commit is contained in:
@@ -19,9 +19,10 @@ const BALANCE_KEYS = [
|
||||
/* v3-, using xxHash */ '0x4af2c53fce3ec33c6ccccf22e926f1a7',
|
||||
/* v4+, using blake2_256 */ '0xec8f96437274a883afcac82d01a9defeb68209cd4f2c084632813692aa5e65ad'
|
||||
];
|
||||
const OPTION_BYTES_HEX = '0x210100000000000000000000000000000000000000000000000000000000000000000000000000000000011b4d03dd8c01f1049143cf9c4c817e4b167f1d1b83e5c6f0f10d89ba1e7bce';
|
||||
|
||||
function formattingTests (version: string, storage: Storage, encodedValues: [string, string]) {
|
||||
const [ENC_ONE, ENC_TWO] = encodedValues;
|
||||
function formattingTests (version: string, storage: Storage, encodedValues: [string, string, string]) {
|
||||
const [ENC_ONE, ENC_TWO, CONTRACT_KEY] = encodedValues;
|
||||
|
||||
describe(`formatting with Metadata ${version}`, () => {
|
||||
let api: Api;
|
||||
@@ -36,16 +37,25 @@ function formattingTests (version: string, storage: Storage, encodedValues: [str
|
||||
: null
|
||||
)
|
||||
),
|
||||
subscribe: jest.fn((type, method, params, cb) =>
|
||||
cb(null, {
|
||||
block: '0x1234',
|
||||
changes: [
|
||||
[ENC_ONE, '0x01020000000000000000000000000000'],
|
||||
[ENC_TWO, '0x02010000000000000000000000000000']
|
||||
]
|
||||
})
|
||||
)
|
||||
subscribe: jest.fn((type, method, params, cb) => {
|
||||
// this emulates https://github.com/polkadot-js/api/issues/1051
|
||||
params[0][0] === CONTRACT_KEY
|
||||
? cb(null, {
|
||||
block: '0x2345',
|
||||
changes: [
|
||||
[CONTRACT_KEY, OPTION_BYTES_HEX]
|
||||
]
|
||||
})
|
||||
: cb(null, {
|
||||
block: '0x1234',
|
||||
changes: [
|
||||
[ENC_ONE, '0x01020000000000000000000000000000'],
|
||||
[ENC_TWO, '0x02010000000000000000000000000000']
|
||||
]
|
||||
});
|
||||
})
|
||||
};
|
||||
|
||||
api = new Api(provider);
|
||||
});
|
||||
|
||||
@@ -94,28 +104,39 @@ function formattingTests (version: string, storage: Storage, encodedValues: [str
|
||||
value.map((balance: BN) =>
|
||||
balance.toNumber()
|
||||
)
|
||||
).toEqual([513, 258]);
|
||||
).toEqual([0x0201, 0x0102]);
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('handles the case where Option<Bytes> are retrieved', (done) => {
|
||||
api.state
|
||||
.subscribeStorage([[storage.contract.pristineCode, '0x00']])
|
||||
.subscribe((value: any) => {
|
||||
// console.error(value);
|
||||
|
||||
// expect(value.toHex()).toBe(OPTION_BYTES_HEX);
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
formattingTests(
|
||||
'v3',
|
||||
fromMetadata(new Metadata(rpcMetadataV3)),
|
||||
['0x4af2c53fce3ec33c6ccccf22e926f1a7', '0x3e62f7ed6e788e1337bce2a97b68a12a']
|
||||
);
|
||||
formattingTests('v3', fromMetadata(new Metadata(rpcMetadataV3)), [
|
||||
'0x4af2c53fce3ec33c6ccccf22e926f1a7',
|
||||
'0x3e62f7ed6e788e1337bce2a97b68a12a',
|
||||
'0x777519cd81f845abdb40d253923d6098'
|
||||
]);
|
||||
|
||||
formattingTests(
|
||||
'v4',
|
||||
fromMetadata(new Metadata(rpcMetadataV4)),
|
||||
['0xec8f96437274a883afcac82d01a9defeb68209cd4f2c084632813692aa5e65ad', '0x1dbb0224910f42a14e7f1406b24c6fe8157296691b02a78756e01946038fffab']
|
||||
);
|
||||
formattingTests('v4', fromMetadata(new Metadata(rpcMetadataV4)), [
|
||||
'0xec8f96437274a883afcac82d01a9defeb68209cd4f2c084632813692aa5e65ad',
|
||||
'0x1dbb0224910f42a14e7f1406b24c6fe8157296691b02a78756e01946038fffab',
|
||||
'0xc7879f4faa637a90d782070a3cb6be99a9fb0316e19a0454ce93c4f0a34712f1'
|
||||
]);
|
||||
|
||||
formattingTests(
|
||||
'v5',
|
||||
fromMetadata(new Metadata(rpcMetadataV5)),
|
||||
['0xec8f96437274a883afcac82d01a9defeb68209cd4f2c084632813692aa5e65ad', '0x1dbb0224910f42a14e7f1406b24c6fe8157296691b02a78756e01946038fffab']
|
||||
);
|
||||
formattingTests('v5', fromMetadata(new Metadata(rpcMetadataV5)), [
|
||||
'0xec8f96437274a883afcac82d01a9defeb68209cd4f2c084632813692aa5e65ad',
|
||||
'0x1dbb0224910f42a14e7f1406b24c6fe8157296691b02a78756e01946038fffab',
|
||||
'0xc7879f4faa637a90d782070a3cb6be99a9fb0316e19a0454ce93c4f0a34712f1'
|
||||
]);
|
||||
|
||||
Reference in New Issue
Block a user