mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-01 00:28:06 +01:00
31175625b4
* Remove ui/app/keychains/ * Remove ui/app/img/ (unused images) * Move conversion-util to helpers/utils/ * Move token-util to helpers/utils/ * Move /helpers/*.js inside /helpers/utils/ * Move util tests inside /helpers/utils/ * Renameand move confirm-transaction/util.js to helpers/utils/ * Move higher-order-components to helpers/higher-order-components/ * Move infura-conversion.json to helpers/constants/ * Move all utility functions to helpers/utils/ * Move pages directory to top-level * Move all constants to helpers/constants/ * Move metametrics inside helpers/ * Move app and root inside pages/ * Move routes inside helpers/ * Re-organize ducks/ * Move reducers to ducks/ * Move selectors inside selectors/ * Move test out of test folder * Move action, reducer, store inside store/ * Move ui components inside ui/ * Move UI components inside ui/ * Move connected components inside components/app/ * Move i18n-helper inside helpers/ * Fix unit tests * Fix unit test * Move pages components * Rename routes component * Move reducers to ducks/index * Fix bad path in unit test
596 lines
16 KiB
JavaScript
596 lines
16 KiB
JavaScript
import assert from 'assert'
|
|
import proxyquire from 'proxyquire'
|
|
|
|
const {
|
|
getCustomGasErrors,
|
|
getCustomGasLimit,
|
|
getCustomGasPrice,
|
|
getCustomGasTotal,
|
|
getEstimatedGasPrices,
|
|
getEstimatedGasTimes,
|
|
getPriceAndTimeEstimates,
|
|
getRenderableBasicEstimateData,
|
|
getRenderableEstimateDataForSmallButtonsFromGWEI,
|
|
} = proxyquire('./custom-gas', {})
|
|
|
|
describe('custom-gas selectors', () => {
|
|
|
|
describe('getCustomGasPrice()', () => {
|
|
it('should return gas.customData.price', () => {
|
|
const mockState = { gas: { customData: { price: 'mockPrice' } } }
|
|
assert.equal(getCustomGasPrice(mockState), 'mockPrice')
|
|
})
|
|
})
|
|
|
|
describe('getCustomGasLimit()', () => {
|
|
it('should return gas.customData.limit', () => {
|
|
const mockState = { gas: { customData: { limit: 'mockLimit' } } }
|
|
assert.equal(getCustomGasLimit(mockState), 'mockLimit')
|
|
})
|
|
})
|
|
|
|
describe('getCustomGasTotal()', () => {
|
|
it('should return gas.customData.total', () => {
|
|
const mockState = { gas: { customData: { total: 'mockTotal' } } }
|
|
assert.equal(getCustomGasTotal(mockState), 'mockTotal')
|
|
})
|
|
})
|
|
|
|
describe('getCustomGasErrors()', () => {
|
|
it('should return gas.errors', () => {
|
|
const mockState = { gas: { errors: 'mockErrors' } }
|
|
assert.equal(getCustomGasErrors(mockState), 'mockErrors')
|
|
})
|
|
})
|
|
|
|
describe('getPriceAndTimeEstimates', () => {
|
|
it('should return price and time estimates', () => {
|
|
const mockState = { gas: { priceAndTimeEstimates: 'mockPriceAndTimeEstimates' } }
|
|
assert.equal(getPriceAndTimeEstimates(mockState), 'mockPriceAndTimeEstimates')
|
|
})
|
|
})
|
|
|
|
describe('getEstimatedGasPrices', () => {
|
|
it('should return price and time estimates', () => {
|
|
const mockState = { gas: { priceAndTimeEstimates: [
|
|
{ gasprice: 12, somethingElse: 20 },
|
|
{ gasprice: 22, expectedTime: 30 },
|
|
{ gasprice: 32, somethingElse: 40 },
|
|
] } }
|
|
assert.deepEqual(getEstimatedGasPrices(mockState), [12, 22, 32])
|
|
})
|
|
})
|
|
|
|
describe('getEstimatedGasTimes', () => {
|
|
it('should return price and time estimates', () => {
|
|
const mockState = { gas: { priceAndTimeEstimates: [
|
|
{ somethingElse: 12, expectedTime: 20 },
|
|
{ gasPrice: 22, expectedTime: 30 },
|
|
{ somethingElse: 32, expectedTime: 40 },
|
|
] } }
|
|
assert.deepEqual(getEstimatedGasTimes(mockState), [20, 30, 40])
|
|
})
|
|
})
|
|
|
|
describe('getRenderableBasicEstimateData()', () => {
|
|
const tests = [
|
|
{
|
|
expectedResult: [
|
|
{
|
|
labelKey: 'slow',
|
|
feeInSecondaryCurrency: '$0.01',
|
|
feeInPrimaryCurrency: '0.0000525 ETH',
|
|
timeEstimate: '~6 min 36 sec',
|
|
priceInHexWei: '0x9502f900',
|
|
},
|
|
{
|
|
labelKey: 'average',
|
|
feeInSecondaryCurrency: '$0.03',
|
|
feeInPrimaryCurrency: '0.000105 ETH',
|
|
timeEstimate: '~3 min 18 sec',
|
|
priceInHexWei: '0x12a05f200',
|
|
},
|
|
{
|
|
labelKey: 'fast',
|
|
feeInSecondaryCurrency: '$0.05',
|
|
feeInPrimaryCurrency: '0.00021 ETH',
|
|
timeEstimate: '~30 sec',
|
|
priceInHexWei: '0x2540be400',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 255.71,
|
|
currentCurrency: 'usd',
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 2.5,
|
|
safeLowWait: 6.6,
|
|
fast: 5,
|
|
fastWait: 3.3,
|
|
fastest: 10,
|
|
fastestWait: 0.5,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
labelKey: 'slow',
|
|
feeInSecondaryCurrency: '$0.27',
|
|
feeInPrimaryCurrency: '0.000105 ETH',
|
|
timeEstimate: '~13 min 12 sec',
|
|
priceInHexWei: '0x12a05f200',
|
|
},
|
|
{
|
|
labelKey: 'average',
|
|
feeInSecondaryCurrency: '$0.54',
|
|
feeInPrimaryCurrency: '0.00021 ETH',
|
|
timeEstimate: '~6 min 36 sec',
|
|
priceInHexWei: '0x2540be400',
|
|
},
|
|
{
|
|
labelKey: 'fast',
|
|
feeInSecondaryCurrency: '$1.07',
|
|
feeInPrimaryCurrency: '0.00042 ETH',
|
|
timeEstimate: '~1 min',
|
|
priceInHexWei: '0x4a817c800',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 5,
|
|
safeLowWait: 13.2,
|
|
fast: 10,
|
|
fastWait: 6.6,
|
|
fastest: 20,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
labelKey: 'slow',
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.000105 ETH',
|
|
timeEstimate: '~13 min 12 sec',
|
|
priceInHexWei: '0x12a05f200',
|
|
},
|
|
{
|
|
labelKey: 'average',
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.00021 ETH',
|
|
timeEstimate: '~6 min 36 sec',
|
|
priceInHexWei: '0x2540be400',
|
|
},
|
|
{
|
|
labelKey: 'fast',
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.00042 ETH',
|
|
timeEstimate: '~1 min',
|
|
priceInHexWei: '0x4a817c800',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'rinkeby',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 5,
|
|
safeLowWait: 13.2,
|
|
fast: 10,
|
|
fastWait: 6.6,
|
|
fastest: 20,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
labelKey: 'slow',
|
|
feeInSecondaryCurrency: '$0.27',
|
|
feeInPrimaryCurrency: '0.000105 ETH',
|
|
timeEstimate: '~13 min 12 sec',
|
|
priceInHexWei: '0x12a05f200',
|
|
},
|
|
{
|
|
labelKey: 'average',
|
|
feeInSecondaryCurrency: '$0.54',
|
|
feeInPrimaryCurrency: '0.00021 ETH',
|
|
timeEstimate: '~6 min 36 sec',
|
|
priceInHexWei: '0x2540be400',
|
|
},
|
|
{
|
|
labelKey: 'fast',
|
|
feeInSecondaryCurrency: '$1.07',
|
|
feeInPrimaryCurrency: '0.00042 ETH',
|
|
timeEstimate: '~1 min',
|
|
priceInHexWei: '0x4a817c800',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: true,
|
|
},
|
|
provider: {
|
|
type: 'rinkeby',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 5,
|
|
safeLowWait: 13.2,
|
|
fast: 10,
|
|
fastWait: 6.6,
|
|
fastest: 20,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
labelKey: 'slow',
|
|
feeInSecondaryCurrency: '$0.27',
|
|
feeInPrimaryCurrency: '0.000105 ETH',
|
|
timeEstimate: '~13 min 12 sec',
|
|
priceInHexWei: '0x12a05f200',
|
|
},
|
|
{
|
|
labelKey: 'average',
|
|
feeInSecondaryCurrency: '$0.54',
|
|
feeInPrimaryCurrency: '0.00021 ETH',
|
|
timeEstimate: '~6 min 36 sec',
|
|
priceInHexWei: '0x2540be400',
|
|
},
|
|
{
|
|
labelKey: 'fast',
|
|
feeInSecondaryCurrency: '$1.07',
|
|
feeInPrimaryCurrency: '0.00042 ETH',
|
|
timeEstimate: '~1 min',
|
|
priceInHexWei: '0x4a817c800',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: true,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 5,
|
|
safeLowWait: 13.2,
|
|
fast: 10,
|
|
fastWait: 6.6,
|
|
fastest: 20,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
]
|
|
it('should return renderable data about basic estimates', () => {
|
|
tests.forEach(test => {
|
|
assert.deepEqual(
|
|
getRenderableBasicEstimateData(test.mockState, '0x5208'),
|
|
test.expectedResult
|
|
)
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
describe('getRenderableEstimateDataForSmallButtonsFromGWEI()', () => {
|
|
const tests = [
|
|
{
|
|
expectedResult: [
|
|
{
|
|
feeInSecondaryCurrency: '$0.13',
|
|
feeInPrimaryCurrency: '0.00052 ETH',
|
|
labelKey: 'slow',
|
|
priceInHexWei: '0x5d21dba00',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$0.27',
|
|
feeInPrimaryCurrency: '0.00105 ETH',
|
|
labelKey: 'average',
|
|
priceInHexWei: '0xba43b7400',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$0.54',
|
|
feeInPrimaryCurrency: '0.0021 ETH',
|
|
labelKey: 'fast',
|
|
priceInHexWei: '0x174876e800',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 255.71,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 25,
|
|
safeLowWait: 6.6,
|
|
fast: 50,
|
|
fastWait: 3.3,
|
|
fastest: 100,
|
|
fastestWait: 0.5,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
feeInSecondaryCurrency: '$2.68',
|
|
feeInPrimaryCurrency: '0.00105 ETH',
|
|
labelKey: 'slow',
|
|
priceInHexWei: '0xba43b7400',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$5.37',
|
|
feeInPrimaryCurrency: '0.0021 ETH',
|
|
labelKey: 'average',
|
|
priceInHexWei: '0x174876e800',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$10.74',
|
|
feeInPrimaryCurrency: '0.0042 ETH',
|
|
labelKey: 'fast',
|
|
priceInHexWei: '0x2e90edd000',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 50,
|
|
safeLowWait: 13.2,
|
|
fast: 100,
|
|
fastWait: 6.6,
|
|
fastest: 200,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.00105 ETH',
|
|
labelKey: 'slow',
|
|
priceInHexWei: '0xba43b7400',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.0021 ETH',
|
|
labelKey: 'average',
|
|
priceInHexWei: '0x174876e800',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '',
|
|
feeInPrimaryCurrency: '0.0042 ETH',
|
|
labelKey: 'fast',
|
|
priceInHexWei: '0x2e90edd000',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: false,
|
|
},
|
|
provider: {
|
|
type: 'rinkeby',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 50,
|
|
safeLowWait: 13.2,
|
|
fast: 100,
|
|
fastWait: 6.6,
|
|
fastest: 200,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
feeInSecondaryCurrency: '$2.68',
|
|
feeInPrimaryCurrency: '0.00105 ETH',
|
|
labelKey: 'slow',
|
|
priceInHexWei: '0xba43b7400',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$5.37',
|
|
feeInPrimaryCurrency: '0.0021 ETH',
|
|
labelKey: 'average',
|
|
priceInHexWei: '0x174876e800',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$10.74',
|
|
feeInPrimaryCurrency: '0.0042 ETH',
|
|
labelKey: 'fast',
|
|
priceInHexWei: '0x2e90edd000',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: true,
|
|
},
|
|
provider: {
|
|
type: 'rinkeby',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 50,
|
|
safeLowWait: 13.2,
|
|
fast: 100,
|
|
fastWait: 6.6,
|
|
fastest: 200,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
{
|
|
expectedResult: [
|
|
{
|
|
feeInSecondaryCurrency: '$2.68',
|
|
feeInPrimaryCurrency: '0.00105 ETH',
|
|
labelKey: 'slow',
|
|
priceInHexWei: '0xba43b7400',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$5.37',
|
|
feeInPrimaryCurrency: '0.0021 ETH',
|
|
labelKey: 'average',
|
|
priceInHexWei: '0x174876e800',
|
|
},
|
|
{
|
|
feeInSecondaryCurrency: '$10.74',
|
|
feeInPrimaryCurrency: '0.0042 ETH',
|
|
labelKey: 'fast',
|
|
priceInHexWei: '0x2e90edd000',
|
|
},
|
|
],
|
|
mockState: {
|
|
metamask: {
|
|
conversionRate: 2557.1,
|
|
currentCurrency: 'usd',
|
|
send: {
|
|
gasLimit: '0x5208',
|
|
},
|
|
preferences: {
|
|
showFiatInTestnets: true,
|
|
},
|
|
provider: {
|
|
type: 'mainnet',
|
|
},
|
|
},
|
|
gas: {
|
|
basicEstimates: {
|
|
blockTime: 14.16326530612245,
|
|
safeLow: 50,
|
|
safeLowWait: 13.2,
|
|
fast: 100,
|
|
fastWait: 6.6,
|
|
fastest: 200,
|
|
fastestWait: 1.0,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
]
|
|
it('should return renderable data about basic estimates appropriate for buttons with less info', () => {
|
|
tests.forEach(test => {
|
|
assert.deepEqual(
|
|
getRenderableEstimateDataForSmallButtonsFromGWEI(test.mockState),
|
|
test.expectedResult
|
|
)
|
|
})
|
|
})
|
|
|
|
})
|
|
|
|
})
|