158 lines
5.7 KiB
JavaScript
158 lines
5.7 KiB
JavaScript
import processReservedTokens from '../../src/utils/processReservedTokens'
|
|
|
|
describe('processReservedTokens function', () => {
|
|
it('should call the callback for each valid reserved tokens item', () => {
|
|
// Given
|
|
const rows = [
|
|
['0x1111111111111111111111111111111111111111', 'tokens', '10'],
|
|
['0x2222222222222222222222222222222222222222', 'tokens', '10'],
|
|
['0x2222222222222222222222222222222222222222', 'percentage', '10'],
|
|
['0x3333333333333333333333333333333333333333', 'tokens', '10']
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(cb).toHaveBeenCalledTimes(4)
|
|
expect(cb.mock.calls[0]).toEqual([{ addr: rows[0][0], dim: rows[0][1], val: rows[0][2] }])
|
|
expect(cb.mock.calls[1]).toEqual([{ addr: rows[1][0], dim: rows[1][1], val: rows[1][2] }])
|
|
expect(cb.mock.calls[2]).toEqual([{ addr: rows[2][0], dim: rows[2][1], val: rows[2][2] }])
|
|
expect(cb.mock.calls[3]).toEqual([{ addr: rows[3][0], dim: rows[3][1], val: rows[3][2] }])
|
|
})
|
|
|
|
it('should ignore items that dont have 3 elements', () => {
|
|
// Given
|
|
const rows = [
|
|
['1', '10'],
|
|
['0x2222222222222222222222222222222222222222', '10'],
|
|
['0x3333333333333333333333333333333333333333', 'tokens'],
|
|
['0x4444444444444444444444444444444444444444'],
|
|
[],
|
|
['0x4444444444444444444444444444444444444444', 'percentage', '10', '100'],
|
|
['0x2589bd7D8A58Ac9A4aC01d68A7c63315ef184c63', 'tokens', '10'] //valid parameters
|
|
]
|
|
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(cb).toHaveBeenCalledTimes(1)
|
|
})
|
|
|
|
it('should return the number of times the callback was called', () => {
|
|
// Given
|
|
const rows = [
|
|
['0x1111111111111111111111111111111111111111', 'tokens', '10'],
|
|
['0x2222222222222222222222222222222222222222', 'tokens', '10'],
|
|
['0x2222222222222222222222222222222222222222', 'percentage', '10'],
|
|
['0x3333333333333333333333333333333333333333', 'tokens', '10']
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
const { called } = processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(called).toBe(4)
|
|
})
|
|
|
|
it('should ignore invalid numbers', () => {
|
|
// Given
|
|
const rows = [
|
|
['0x1111111111111111111111111111111111111111', 'tokens', 'foo'],
|
|
['0x2222222222222222222222222222222222222222', 'tokens', ''],
|
|
['0x2222222222222222222222222222222222222222', 'percentage', 'bar'],
|
|
['0x3333333333333333333333333333333333333333', 'percentage', ''],
|
|
['0x2589bd7D8A58Ac9A4aC01d68A7c63315ef184c63', 'tokens', '10'] //valid parameters
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
const { called } = processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(called).toBe(1)
|
|
})
|
|
|
|
it('should ignore invalid addresses', () => {
|
|
// Given
|
|
const rows = [
|
|
['0x123456789012345678901234567890123456789', 'tokens', '10'], // 41 characters
|
|
['0x12345678901234567890123456789012345678901', 'tokens', '10'], // 43 characters
|
|
['0x90F8bf6A479f320ead074411a4B0e7944Ea8c9CG', 'tokens', '10'], // invalid character
|
|
['0x90F8bf6A479f320ead074411a4B0e7944Ea8c9c1', 'tokens', '10'], // invalid checksum
|
|
['0x2589bd7D8A58Ac9A4aC01d68A7c63315ef184c63', 'tokens', '10'] //valid address
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
const { called } = processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(called).toBe(1)
|
|
})
|
|
|
|
it('should ignore invalid dimensions', () => {
|
|
// Given
|
|
const rows = [
|
|
['0x49d915966F1f2AdE697Ef7587615D2CF6A8A374e', 'tokenz', '10'],
|
|
['0x9F3cA66c22eAc286017b785ed63183859b4183DC', 'perzentage', '10'],
|
|
['0x871c98FFA5b44873aE2fa4BFD190Cd42F63907Da', 'units', '10'],
|
|
['0x6c8ca1fD00d18B69C2c14228ef3D2E4E1ce3316b', '', '10'],
|
|
['0x2589bd7D8A58Ac9A4aC01d68A7c63315ef184c63', 'tokens', '10'], //valid dimension
|
|
['0x9613130348aC610732A391063CD70b5a8c186EfC', 'percentage', '10'] //valid dimension
|
|
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(cb).toHaveBeenCalledTimes(2)
|
|
})
|
|
|
|
it(`should ignore tokens with more decimals than specified`, () => {
|
|
// Given
|
|
const rows = [
|
|
['0x49d915966F1f2AdE697Ef7587615D2CF6A8A374e', 'tokens', '10.1'],
|
|
['0x9F3cA66c22eAc286017b785ed63183859b4183DC', 'tokens', '10'],
|
|
['0x871c98FFA5b44873aE2fa4BFD190Cd42F63907Da', 'tokens', '10.123'],
|
|
['0x6c8ca1fD00d18B69C2c14228ef3D2E4E1ce3316b', 'tokens', '10.12']
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
processReservedTokens({ rows, decimals: 2 }, cb)
|
|
|
|
// Then
|
|
expect(cb).toHaveBeenCalledTimes(3)
|
|
expect(cb.mock.calls[0]).toEqual([{ addr: rows[0][0], dim: rows[0][1], val: rows[0][2] }])
|
|
expect(cb.mock.calls[1]).toEqual([{ addr: rows[1][0], dim: rows[1][1], val: rows[1][2] }])
|
|
expect(cb.mock.calls[2]).toEqual([{ addr: rows[3][0], dim: rows[3][1], val: rows[3][2] }])
|
|
})
|
|
|
|
it(`should ignore percentage with invalid values`, () => {
|
|
// Given
|
|
const rows = [
|
|
['0x49d915966F1f2AdE697Ef7587615D2CF6A8A374e', 'percentage', '10'],
|
|
['0x9F3cA66c22eAc286017b785ed63183859b4183DC', 'percentage', '-10'],
|
|
['0x871c98FFA5b44873aE2fa4BFD190Cd42F63907Da', 'percentage', ''],
|
|
['0x6c8ca1fD00d18B69C2c14228ef3D2E4E1ce3316b', 'percentage', '0.12']
|
|
]
|
|
const cb = jest.fn()
|
|
|
|
// When
|
|
processReservedTokens({ rows, decimals:2 }, cb)
|
|
|
|
// Then
|
|
expect(cb).toHaveBeenCalledTimes(2)
|
|
expect(cb.mock.calls[0]).toEqual([{ addr: rows[0][0], dim: rows[0][1], val: rows[0][2] }])
|
|
expect(cb.mock.calls[1]).toEqual([{ addr: rows[3][0], dim: rows[3][1], val: rows[3][2] }])
|
|
})
|
|
})
|