mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-11 20:27:12 +01:00
98 lines
2.5 KiB
JavaScript
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('');
|
|
});
|
|
});
|
|
});
|