|
|
|
import { PRIORITY_LEVELS } from '../../../shared/constants/gas';
|
|
|
|
|
|
|
|
import {
|
|
|
|
addTenPercent,
|
|
|
|
gasEstimateGreaterThanGasUsedPlusTenPercent,
|
|
|
|
formatGasFeeOrFeeRange,
|
|
|
|
} from './gas';
|
|
|
|
|
|
|
|
describe('Gas utils', () => {
|
|
|
|
describe('gasEstimateGreaterThanGasUsedPlusTenPercent', () => {
|
|
|
|
const compareGas = (estimateValues) => {
|
|
|
|
return gasEstimateGreaterThanGasUsedPlusTenPercent(
|
|
|
|
{
|
|
|
|
maxFeePerGas: '0x59682f10',
|
|
|
|
maxPriorityFeePerGas: '0x59682f00',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
medium: estimateValues,
|
|
|
|
},
|
|
|
|
PRIORITY_LEVELS.MEDIUM,
|
|
|
|
);
|
|
|
|
};
|
|
|
|
|
|
|
|
it('should return true if gas used in transaction + 10% is greater that estimate', () => {
|
|
|
|
const result = compareGas({
|
|
|
|
suggestedMaxPriorityFeePerGas: '7',
|
|
|
|
suggestedMaxFeePerGas: '70',
|
|
|
|
});
|
|
|
|
expect(result).toStrictEqual(true);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should return false if gas used in transaction + 10% is less that estimate', () => {
|
|
|
|
const result = compareGas({
|
|
|
|
suggestedMaxPriorityFeePerGas: '.5',
|
|
|
|
suggestedMaxFeePerGas: '1',
|
|
|
|
});
|
|
|
|
expect(result).toStrictEqual(false);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('addTenPercent', () => {
|
|
|
|
it('should add 10% to hex value passed', () => {
|
|
|
|
const result = addTenPercent('0x59682f00');
|
|
|
|
expect(result).toStrictEqual('0x62590080');
|
|
|
|
});
|
|
|
|
it('should return undefined if undefined value is passed', () => {
|
|
|
|
const result = addTenPercent(undefined);
|
|
|
|
expect(result).toBeUndefined();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('formatGasFeeOrFeeRange', () => {
|
|
|
|
describe('given a singular fee', () => {
|
|
|
|
it('should return a string "X GWEI" where X is the fee rounded to the given precision', () => {
|
|
|
|
expect(formatGasFeeOrFeeRange('23.43', { precision: 1 })).toStrictEqual(
|
|
|
|
'23.4 GWEI',
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('given an array of two fees', () => {
|
|
|
|
describe('given a single precision', () => {
|
|
|
|
it('should return a string "X - Y GWEI" where X and Y are the fees rounded to the given precision', () => {
|
|
|
|
expect(
|
|
|
|
formatGasFeeOrFeeRange(['23.43', '83.9342'], { precision: 1 }),
|
|
|
|
).toStrictEqual('23.4 - 83.9 GWEI');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('given two precisions', () => {
|
|
|
|
it('should return a string "X - Y GWEI" where X and Y are the fees rounded to the given precisions', () => {
|
|
|
|
expect(
|
|
|
|
formatGasFeeOrFeeRange(['23.43', '83.9342'], { precision: [1, 0] }),
|
|
|
|
).toStrictEqual('23.4 - 84 GWEI');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('given more than two precisions', () => {
|
|
|
|
it('should ignore precisions past 2', () => {
|
|
|
|
expect(
|
|
|
|
formatGasFeeOrFeeRange(['23.43', '83.9342'], {
|
|
|
|
precision: [1, 0, 999],
|
|
|
|
}),
|
|
|
|
).toStrictEqual('23.4 - 84 GWEI');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('given an array of more than two fees', () => {
|
|
|
|
it('should ignore fees past two', () => {
|
|
|
|
expect(
|
|
|
|
formatGasFeeOrFeeRange(['23.43', '83.9342', '300.3414'], {
|
|
|
|
precision: 1,
|
|
|
|
}),
|
|
|
|
).toStrictEqual('23.4 - 83.9 GWEI');
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('if the fee is null', () => {
|
|
|
|
it('should return null', () => {
|
|
|
|
expect(formatGasFeeOrFeeRange(null, { precision: 1 })).toBeNull();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('if the fee is undefined', () => {
|
|
|
|
it('should return null', () => {
|
|
|
|
expect(formatGasFeeOrFeeRange(null, { precision: 1 })).toBeNull();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|