import React from 'react'; import sinon from 'sinon'; import { fireEvent, screen } from '@testing-library/react'; import configureMockStore from 'redux-mock-store'; import { renderWithProvider } from '../../../../test/lib/render-helpers'; import SignatureRequest from './signature-request.container'; describe('Signature Request', () => { const mockStore = { metamask: { tokenList: { '0x514910771af9ca656af840dff83e8264ecf986ca': { address: '0x514910771af9ca656af840dff83e8264ecf986ca', symbol: 'LINK', decimals: 18, name: 'ChainLink Token', iconUrl: 'https://crypto.com/price/coin-data/icon/LINK/color_icon.png', aggregators: [ 'Aave', 'Bancor', 'CMC', 'Crypto.com', 'CoinGecko', '1inch', 'Paraswap', 'PMM', 'Zapper', 'Zerion', '0x', ], occurrences: 12, unlisted: false, }, }, identities: { '0xb19ac54efa18cc3a14a5b821bfec73d284bf0c5e': { name: 'Account 2', address: '0xb19ac54efa18cc3a14a5b821bfec73d284bf0c5e', }, }, addressBook: { undefined: { 0: { address: '0x39a4e4Af7cCB654dB9500F258c64781c8FbD39F0', name: '', isEns: false, }, }, }, provider: { type: 'rpc', }, accounts: { '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5': { address: '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5', balance: '0x03', }, }, cachedBalances: {}, selectedAddress: '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5', }, }; const store = configureMockStore()(mockStore); const props = { fromAccount: { address: '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5', }, history: { push: sinon.spy(), }, hardwareWalletRequiresConnection: false, clearConfirmTransaction: sinon.spy(), cancelMessage: sinon.spy(), cancel: sinon.stub().resolves(), sign: sinon.stub().resolves(), txData: { msgParams: { id: 1, data: '{"types":{"EIP712Domain":[{"name":"name","type":"string"},{"name":"version","type":"string"},{"name":"chainId","type":"uint256"},{"name":"verifyingContract","type":"address"}],"Person":[{"name":"name","type":"string"},{"name":"wallet","type":"address"}],"Mail":[{"name":"from","type":"Person"},{"name":"to","type":"Person"},{"name":"contents","type":"string"}]},"primaryType":"Mail","domain":{"name":"Ether Mail","version":"1","chainId":"4","verifyingContract":"0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"},"message":{"from":{"name":"Cow","wallet":"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826"},"to":{"name":"Bob","wallet":"0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB"},"contents":"Hello, Bob!"}}', from: '0xd8f6a2ffb0fc5952d16c9768b71cfd35b6399aa5', origin: 'test.domain', }, status: 'unapproved', time: 1, type: 'eth_sign', }, }; beforeEach(() => { renderWithProvider(, store); }); afterEach(() => { props.clearConfirmTransaction.resetHistory(); }); it('cancel', () => { const cancelButton = screen.getByTestId('signature-cancel-button'); fireEvent.click(cancelButton); expect(props.cancel.calledOnce).toStrictEqual(true); }); it('sign', () => { const signButton = screen.getByTestId('signature-sign-button'); fireEvent.click(signButton); expect(props.sign.calledOnce).toStrictEqual(true); }); });