252 lines
5.8 KiB
JavaScript
252 lines
5.8 KiB
JavaScript
import ReservedTokenStore from '../../src/stores/ReservedTokenStore'
|
|
|
|
describe('ReservedTokenStore', function() {
|
|
let reservedTokenStore
|
|
const tokens = [
|
|
{
|
|
addr: '0x66f537cCD03f21c58172602B919884A442A3c313',
|
|
dim: 'percentage',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x665772109Eb2dc9F5B7c28F987Ec58949d4Eeb87',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x693d436da2c3C11341149522E5F6d0390B363197',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x67737e0046b05D2553ad1021A02d957D9c854C00',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x20372dffd12d7b012FF44c9DBae70E5e1aE47C73',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x2BCDBBd0Df231e9C35F3a27a4b9F4E631DD6f8AB',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0xc4C92D54E2136d7A72F4f738B3FA69Df7b479821',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x2bD96eA633e8BcB468732c68B2CD632BfF4D79Db',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x848822D9101ecF8731B09CF52d4a034123FF7F97',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x866623622b19D8603F54d0aF23236759DCeB48d9',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x46fe103Be22C370E2D4143e6b61D1769017b48F0',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x063376DDB05d9e0E0D3761D0D962f9d31F9F6035',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0xc6fD167492BeDf4B4f83e84FeCf9483027565650',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x1595F0a0dE18aE149081aA28b2F51aa5619e3523',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0xb51454306fAa9A3Cf0505a22dff85d5b4EC13B3F',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x7A317D210de8201C8623a0f35d44Eb34D8115B45',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x91c93F00F32898269336734Fe0611C1E9CB12d0A',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x61B748ccD326dEF03dE119d74c81391050dFe021',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0x24952775eE2c842ea624991a0A422f1B0AcecA84',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
},
|
|
{
|
|
addr: '0xB848714c08acC2D32511C5F93F7BCcd43112F3cb',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
}
|
|
]
|
|
|
|
beforeEach(() => {
|
|
reservedTokenStore = new ReservedTokenStore([])
|
|
})
|
|
|
|
afterEach(() => {
|
|
reservedTokenStore.reset()
|
|
})
|
|
|
|
it(`should validate length FALSE`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
|
|
const tokenToAdd = {
|
|
addr: '0x08C9f711d326CaCB341DDBb406BB67475817DAd3',
|
|
dim: 'tokens',
|
|
val: '90'
|
|
}
|
|
reservedTokenStore.addToken(tokenToAdd)
|
|
|
|
// When
|
|
const validateLength = reservedTokenStore.validateLength
|
|
|
|
// Then
|
|
expect(validateLength).toBeFalsy()
|
|
})
|
|
|
|
it(`should validate length TRUE`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
reservedTokenStore.removeToken(0)
|
|
|
|
// When
|
|
const validateLength = reservedTokenStore.validateLength
|
|
|
|
// Then
|
|
expect(validateLength).toBeTruthy()
|
|
})
|
|
|
|
it(`should set a token property`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
|
|
const index = 1
|
|
const property = 'address'
|
|
const value = 'OXtest'
|
|
|
|
// When
|
|
reservedTokenStore.setTokenProperty(index, property, value)
|
|
const addressProperty = reservedTokenStore.tokens[index][property]
|
|
|
|
// Then
|
|
expect(addressProperty).toEqual(value)
|
|
})
|
|
|
|
it(`should maintain the length if you add an existing token`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
|
|
const token = {
|
|
addr: '0x66f537cCD03f21c58172602B919884A442A3c313',
|
|
dim: 'percentage',
|
|
val: '90'
|
|
}
|
|
|
|
// When
|
|
const beforeLength = reservedTokenStore.tokens.length
|
|
reservedTokenStore.addToken(token)
|
|
const afterLength = reservedTokenStore.tokens.length
|
|
|
|
// Then
|
|
expect(beforeLength).toEqual(afterLength)
|
|
})
|
|
|
|
it(`should find or not a token in the collection`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
|
|
const tokenFound = {
|
|
addr: '0x66f537cCD03f21c58172602B919884A442A3c313',
|
|
dim: 'percentage',
|
|
val: '90'
|
|
}
|
|
|
|
const tokenNotFound = {
|
|
addr: '0x66f537cCD03f21c58172602B919884A442A3c313AAA',
|
|
dim: 'percentage',
|
|
val: '90'
|
|
}
|
|
|
|
// When
|
|
const tokenFoundResult = reservedTokenStore.findToken(tokenFound)
|
|
const tokenNotFoundResult = reservedTokenStore.findToken(tokenNotFound)
|
|
|
|
// Then
|
|
expect(tokenFoundResult).toBeTruthy()
|
|
expect(tokenNotFoundResult).toBeFalsy()
|
|
})
|
|
|
|
it(`should apply decimals and get undefined`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
|
|
// When
|
|
const decimalsTokensUndefinedOne = reservedTokenStore.applyDecimalsToTokens(20)
|
|
const decimalsTokensUndefinedTwo = reservedTokenStore.applyDecimalsToTokens(-10)
|
|
|
|
// Then
|
|
expect(decimalsTokensUndefinedOne).toBeUndefined()
|
|
expect(decimalsTokensUndefinedTwo).toBeUndefined()
|
|
})
|
|
|
|
it(`should apply decimals`, () => {
|
|
// Given
|
|
for (let token of tokens) {
|
|
reservedTokenStore.addToken(token)
|
|
}
|
|
const decimalsDefault = 10
|
|
|
|
// When
|
|
reservedTokenStore.applyDecimalsToTokens(decimalsDefault)
|
|
|
|
// Then
|
|
for (let i = 0; i < reservedTokenStore.tokens.length; i++) {
|
|
if (reservedTokenStore.tokens[i].val) {
|
|
// Check if val is decimal with 10 digits
|
|
const value = reservedTokenStore.tokens[i].val
|
|
const decimalsValue = (value.split('.')[1] || []).length
|
|
expect(decimalsValue).toEqual(decimalsDefault)
|
|
}
|
|
}
|
|
})
|
|
})
|