1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-29 23:58:06 +01:00
metamask-extension/ui/pages/send/send.utils.test.js

98 lines
2.5 KiB
JavaScript

import { rawEncode } from 'ethereumjs-abi';
import {
generateERC20TransferData,
isBalanceSufficient,
isTokenBalanceSufficient,
ellipsify,
} from './send.utils';
jest.mock('ethereumjs-abi', () => ({
rawEncode: jest.fn().mockReturnValue(16, 1100),
}));
describe('send utils', () => {
describe('generateERC20TransferData()', () => {
it('should return undefined if not passed a send token', () => {
expect(
generateERC20TransferData({
toAddress: 'mockAddress',
amount: '0xa',
sendToken: undefined,
}),
).toBeUndefined();
});
it('should call abi.rawEncode with the correct params', () => {
generateERC20TransferData({
toAddress: 'mockAddress',
amount: 'ab',
sendToken: { address: '0x0' },
});
expect(rawEncode.mock.calls[0].toString()).toStrictEqual(
[
['address', 'uint256'],
['0xmockAddress', '0xab'],
].toString(),
);
});
it('should return encoded token transfer data', () => {
expect(
generateERC20TransferData({
toAddress: 'mockAddress',
amount: '0xa',
sendToken: { address: '0x0' },
}),
).toStrictEqual('0xa9059cbb');
});
});
describe('isBalanceSufficient()', () => {
it('should correctly sum the appropriate currencies and ensure that balance is greater', () => {
const result = isBalanceSufficient({
amount: 15,
balance: 100,
conversionRate: 3,
gasTotal: 17,
primaryCurrency: 'ABC',
});
expect(result).toStrictEqual(true);
});
});
describe('isTokenBalanceSufficient()', () => {
it('should return true for a sufficient balance for token spend', () => {
const result = isTokenBalanceSufficient({
amount: '0x10',
tokenBalance: 123,
decimals: 10,
});
expect(result).toStrictEqual(true);
});
it('should return false for an insufficient balance for token spend', () => {
const result = isTokenBalanceSufficient({
amount: '0x10000',
tokenBalance: 123,
decimals: 10,
});
expect(result).toStrictEqual(true);
});
});
describe('ellipsify()', () => {
it('should ellipsify a contract address', () => {
expect(
ellipsify('0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'),
).toStrictEqual('0xCcCC...cccC');
});
it('should return an empty string if the passed text is not defined', () => {
expect(ellipsify(undefined)).toStrictEqual('');
});
});
});