@yoroi/common
Version:
The Common package of Yoroi SDK
56 lines • 1.6 kB
JavaScript
import BigNumber from 'bignumber.js';
import { StorageReviverType, storageDeserializerMaker } from './storage-deserializer-maker';
describe('storageDeserializerMaker', () => {
const mapping = {
age: StorageReviverType.AsBigInt,
balance: StorageReviverType.AsBigNumber
};
const deserializer = storageDeserializerMaker(mapping);
it('should parse JSON string and convert properties', () => {
const whatever = JSON.stringify({
name: 'John',
age: '25',
balance: '100',
nested: {
balance: '111',
age: '10',
data: [{
age: '1'
}],
nullable: {
balance: null,
age: null
}
}
});
const result = deserializer(whatever);
expect(result).toEqual({
name: 'John',
age: 25n,
balance: new BigNumber('100'),
nested: {
balance: new BigNumber('111'),
age: 10n,
data: [{
age: 1n
}],
nullable: {
balance: null,
age: null
}
}
});
});
it('should return null if jsonString is null', () => {
const nullable = JSON.stringify(null);
const empty = undefined;
const invalid = '{x:';
const nullResult = storageDeserializerMaker(mapping)(nullable);
const emptyResult = storageDeserializerMaker(mapping)(empty);
const invalidResult = storageDeserializerMaker(mapping)(invalid);
expect(nullResult).toBeNull();
expect(emptyResult).toBeNull();
expect(invalidResult).toBeNull();
});
});
//# sourceMappingURL=storage-deserializer-maker.test.js.map