1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-10-22 11:22:43 +02:00
metamask-extension/ui/selectors/confirm-transaction.test.js
Mark Stacey d1cea85f33
Rename provider to providerConfig (#18907)
* Rename `provider` to `providerConfig`

The network controller `provider` state has been renamed to
 `providerConfig`. This better reflects what this state is, and makes
this controller more closely aligned with the core network controller.

All references to the provider configuration have been updated to
prefer `providerConfig` over `provider`, to make the distinction clear
between a provider and provider config.

Closes #18902

* Add migration
2023-05-02 13:23:20 -02:30

101 lines
2.7 KiB
JavaScript

import { CHAIN_IDS } from '../../shared/constants/network';
import { TransactionType } from '../../shared/constants/transaction';
import {
unconfirmedTransactionsCountSelector,
sendTokenTokenAmountAndToAddressSelector,
contractExchangeRateSelector,
conversionRateSelector,
} from './confirm-transaction';
const getEthersArrayLikeFromObj = (obj) => {
const arr = [];
Object.keys(obj).forEach((key) => {
arr.push([obj[key]]);
arr[key] = obj[key];
});
return arr;
};
describe('Confirm Transaction Selector', () => {
describe('unconfirmedTransactionsCountSelector', () => {
const state = {
metamask: {
unapprovedTxs: {
1: {
metamaskNetworkId: '5',
},
2: {
chainId: CHAIN_IDS.MAINNET,
},
},
unapprovedMsgCount: 1,
unapprovedPersonalMsgCount: 1,
unapprovedTypedMessagesCount: 1,
networkId: '5',
providerConfig: {
chainId: '0x5',
},
},
};
it('returns number of txs in unapprovedTxs state with the same network plus unapproved signing method counts', () => {
expect(unconfirmedTransactionsCountSelector(state)).toStrictEqual(4);
});
});
describe('sendTokenTokenAmountAndToAddressSelector', () => {
const state = {
confirmTransaction: {
tokenData: {
name: TransactionType.tokenMethodTransfer,
args: getEthersArrayLikeFromObj({
_to: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
_value: { toString: () => '1' },
}),
},
tokenProps: {
decimals: '2',
symbol: 'META',
},
},
};
it('returns token address and calculated token amount', () => {
expect(sendTokenTokenAmountAndToAddressSelector(state)).toStrictEqual({
toAddress: '0x0dcd5d886577d5081b0c52e242ef29e70be3e7bc',
tokenAmount: '0.01',
});
});
});
describe('contractExchangeRateSelector', () => {
const state = {
metamask: {
contractExchangeRates: {
'0xTokenAddress': '10',
},
},
confirmTransaction: {
txData: {
txParams: {
to: '0xTokenAddress',
},
},
},
};
it('returns contract exchange rate in metamask state based on confirm transaction txParams token recipient', () => {
expect(contractExchangeRateSelector(state)).toStrictEqual('10');
});
});
describe('conversionRateSelector', () => {
it('returns conversionRate from state', () => {
const state = {
metamask: { conversionRate: 556.12 },
};
expect(conversionRateSelector(state)).toStrictEqual(556.12);
});
});
});