mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-30 16:18:07 +01:00
143a5c4a53
* If a transaction would revert/fail, 1. hide the gas estimate info. 2. Disable the confirm button. 3. All user to enable the confirm button anyways. 4. Do not show the default Transaction error message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Always return a value for hasSimulationError Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Use primary button of action message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove hasSimulationError from getErrorKey Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Move confirm anyways logic to base component. Change message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Disable edit if there's simulation error Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * hide confirm anyways button once clicked. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Move Actionable Primary Action to flex-end Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fix unit tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fix nested ternary lint issues Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * add !confirmAnyways to conditions to show GasDetails. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * ConfirmAnyways should be read from state Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Rename tryAnywayOption Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove await tick Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint issue fix Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes after rebase Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * description should show that it's content being tested. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * If a transaction would revert/fail, 1. hide the gas estimate info. 2. Disable the confirm button. 3. All user to enable the confirm button anyways. 4. Do not show the default Transaction error message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Always return a value for hasSimulationError Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Use primary button of action message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove hasSimulationError from getErrorKey Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Move confirm anyways logic to base component. Change message Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Disable edit if there's simulation error Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * hide confirm anyways button once clicked. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Move Actionable Primary Action to flex-end Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fix unit tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fix nested ternary lint issues Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * add !confirmAnyways to conditions to show GasDetails. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * ConfirmAnyways should be read from state Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Rename tryAnywayOption Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove await tick Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint issue fix Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes after rebase Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * description should show that it's content being tested. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Move simulation fails message inline with gas details component (#12705) * Move simulation fails message inline with gas details component * Remove old unit tests Co-authored-by: Dan Miller <danjm.com@gmail.com> * lint fix * use an XOR operation. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * The changes in this file are no longer needed because we hide the edit button now Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Co-authored-by: Dan Miller <danjm.com@gmail.com>
125 lines
4.1 KiB
JavaScript
125 lines
4.1 KiB
JavaScript
import { fireEvent } from '@testing-library/react';
|
|
import React from 'react';
|
|
import configureMockStore from 'redux-mock-store';
|
|
import { renderWithProvider } from '../../../../../test/lib/render-helpers';
|
|
import { TRANSACTION_ERROR_KEY } from '../../../../helpers/constants/error-keys';
|
|
import ConfirmPageContainerContent from './confirm-page-container-content.component';
|
|
|
|
describe('Confirm Page Container Content', () => {
|
|
const mockStore = {
|
|
metamask: {
|
|
provider: {
|
|
type: 'test',
|
|
},
|
|
},
|
|
};
|
|
|
|
const store = configureMockStore()(mockStore);
|
|
|
|
let props = {};
|
|
|
|
beforeEach(() => {
|
|
const mockOnCancel = jest.fn();
|
|
const mockOnCancelAll = jest.fn();
|
|
const mockOnSubmit = jest.fn();
|
|
const mockOnConfirmAnyways = jest.fn();
|
|
props = {
|
|
action: ' Withdraw Stake',
|
|
errorMessage: null,
|
|
errorKey: null,
|
|
hasSimulationError: true,
|
|
onCancelAll: mockOnCancelAll,
|
|
onCancel: mockOnCancel,
|
|
cancelText: 'Reject',
|
|
onSubmit: mockOnSubmit,
|
|
onConfirmAnyways: mockOnConfirmAnyways,
|
|
submitText: 'Confirm',
|
|
disabled: true,
|
|
origin: 'http://localhost:4200',
|
|
hideTitle: false,
|
|
};
|
|
});
|
|
|
|
it('render ConfirmPageContainer component with simulation error', async () => {
|
|
const { queryByText, getByText } = renderWithProvider(
|
|
<ConfirmPageContainerContent {...props} />,
|
|
store,
|
|
);
|
|
|
|
expect(
|
|
queryByText('Transaction Error. Exception thrown in contract code.'),
|
|
).not.toBeInTheDocument();
|
|
expect(
|
|
queryByText(
|
|
'This transaction is expected to fail. Trying to execute it is expected to be expensive but fail, and is not recommended.',
|
|
),
|
|
).toBeInTheDocument();
|
|
expect(queryByText('I will try anyway')).toBeInTheDocument();
|
|
|
|
const confirmButton = getByText('Confirm');
|
|
expect(getByText('Confirm').closest('button')).toBeDisabled();
|
|
fireEvent.click(confirmButton);
|
|
expect(props.onSubmit).toHaveBeenCalledTimes(0);
|
|
|
|
const iWillTryButton = getByText('I will try anyway');
|
|
fireEvent.click(iWillTryButton);
|
|
expect(props.onConfirmAnyways).toHaveBeenCalledTimes(1);
|
|
|
|
const cancelButton = getByText('Reject');
|
|
fireEvent.click(cancelButton);
|
|
expect(props.onCancel).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('render ConfirmPageContainer component with another error', async () => {
|
|
props.hasSimulationError = false;
|
|
props.disabled = true;
|
|
props.errorKey = TRANSACTION_ERROR_KEY;
|
|
const { queryByText, getByText } = renderWithProvider(
|
|
<ConfirmPageContainerContent {...props} />,
|
|
store,
|
|
);
|
|
|
|
expect(
|
|
queryByText(
|
|
'This transaction is expected to fail. Trying to execute it is expected to be expensive but fail, and is not recommended.',
|
|
),
|
|
).not.toBeInTheDocument();
|
|
expect(queryByText('I will try anyway')).not.toBeInTheDocument();
|
|
expect(getByText('Confirm').closest('button')).toBeDisabled();
|
|
expect(
|
|
getByText('Transaction Error. Exception thrown in contract code.'),
|
|
).toBeInTheDocument();
|
|
|
|
const cancelButton = getByText('Reject');
|
|
fireEvent.click(cancelButton);
|
|
expect(props.onCancel).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('render ConfirmPageContainer component with no errors', async () => {
|
|
props.hasSimulationError = false;
|
|
props.disabled = false;
|
|
const { queryByText, getByText } = renderWithProvider(
|
|
<ConfirmPageContainerContent {...props} />,
|
|
store,
|
|
);
|
|
|
|
expect(
|
|
queryByText(
|
|
'This transaction is expected to fail. Trying to execute it is expected to be expensive but fail, and is not recommended.',
|
|
),
|
|
).not.toBeInTheDocument();
|
|
expect(
|
|
queryByText('Transaction Error. Exception thrown in contract code.'),
|
|
).not.toBeInTheDocument();
|
|
expect(queryByText('I will try anyway')).not.toBeInTheDocument();
|
|
|
|
const confirmButton = getByText('Confirm');
|
|
fireEvent.click(confirmButton);
|
|
expect(props.onSubmit).toHaveBeenCalledTimes(1);
|
|
|
|
const cancelButton = getByText('Reject');
|
|
fireEvent.click(cancelButton);
|
|
expect(props.onCancel).toHaveBeenCalledTimes(1);
|
|
});
|
|
});
|