token-wizard/test/stores/ReservedTokenStore.spec.js

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)
}
}
})
})