@yoroi/common
Version:
The Common package of Yoroi SDK
63 lines (54 loc) • 1.52 kB
text/typescript
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 as any)
const invalidResult = storageDeserializerMaker(mapping)(invalid as any)
expect(nullResult).toBeNull()
expect(emptyResult).toBeNull()
expect(invalidResult).toBeNull()
})
})