import React from 'react';
import { fireEvent } from '@testing-library/react';
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import mockSendState from '../../../../../test/data/mock-send-state.json';
import { renderWithProvider } from '../../../../../test/lib/render-helpers';
import { AssetType } from '../../../../../shared/constants/transaction';
import SendAmountRow from '.';
const mockUpdateSendAmount = jest.fn();
jest.mock('../../../../ducks/send', () => ({
...jest.requireActual('../../../../ducks/send'),
updateSendAmount: () => mockUpdateSendAmount,
}));
describe('SendAmountRow Component', () => {
describe('render', () => {
describe('Native Asset Type', () => {
const mockStore = configureMockStore([thunk])(mockSendState);
it('should match snapshot for native asset type', () => {
const { container } = renderWithProvider(, mockStore);
expect(container).toMatchSnapshot();
});
});
describe('Token Asset Type', () => {
const tokenState = {
...mockSendState,
send: {
currentTransactionUUID: '1-tx',
draftTransactions: {
'1-tx': {
asset: {
balance: '0x1158e460913d00000', // 20000000000000000000
details: {
address: '0x617b3f8050a0BD94b6b1da02B4384eE5B4DF13F4',
symbol: 'META',
balance: '1000000000000000000',
decimals: 18,
string: '1',
balanceError: null,
isERC721: false,
image: '',
standard: 'ERC20',
},
error: null,
type: AssetType.token,
},
},
},
},
};
const mockStore = configureMockStore([thunk])(tokenState);
it('should match snapshot for token asset type', () => {
const { container } = renderWithProvider(, mockStore);
expect(container).toMatchSnapshot();
});
});
describe('NFT Asset Type', () => {
it('should match snapshot for token NFT type', () => {
const nftState = {
...mockSendState,
send: {
currentTransactionUUID: '1-tx',
draftTransactions: {
'1-tx': {
asset: {
balance: '',
details: null,
error: null,
type: AssetType.NFT,
},
},
},
},
};
const mockStore = configureMockStore([thunk])(nftState);
const { container } = renderWithProvider(, mockStore);
expect(container).toMatchSnapshot();
});
});
});
describe('updateAmount', () => {
const mockStore = configureMockStore([thunk])(mockSendState);
it('should call updateSendAmount', () => {
const { queryByTestId } = renderWithProvider(
,
mockStore,
);
queryByTestId('currency-input');
fireEvent.change(queryByTestId('currency-input'), {
target: { value: 0.5 },
});
expect(mockUpdateSendAmount).toHaveBeenCalled();
});
});
});