mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-01 13:47:06 +01:00
c54f9b3097
* Draft methods to brak updateTransaction into smaller more targeted methods. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * This is a combination of 76 commits. normalize and validate tx params. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Method to normalize tx and check if it's unapproved. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Move the methods to controllers/transactions/index.js Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Flesh out the methods to update transaction with custom notes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> enforce that only the properties for the specific methid can be updated via the method. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Test update gas fees Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update swap approval transaction Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> use lodash to remove undefined properties update swap transaction tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Updates transaction user settings. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Add more parameters to updateSwapTransaction approvalTxId estimatedBaseFee Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Add Update Transaction Metrics Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update transaction gas fees actions.js Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update EIP 1559 Params. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint Fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Documentations. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove metrics from this PR Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes: Removed unused variables Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Add more params to updateTransactionGasFees. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update eip1559 method to editableParams. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix Mocha tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> add gasPrice to updateEditableParams Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove duplicated Params in notes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> A few more tests to cover if transaction status is not unapproved transaction is passed more parameters than it requires. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update Transaction Gas Fees. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update gas fees in edit-gas-popover. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove metrics. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update gas settings and user settings. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix unit tests. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Draft methods to brak updateTransaction into smaller more targeted methods. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> normalize and validate tx params. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Method to normalize tx and check if it's unapproved. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Move the methods to controllers/transactions/index.js Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Flesh out the methods to update transaction with custom notes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Test update gas fees Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update swap approval transaction Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> use lodash to remove undefined properties update swap transaction tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Updates transaction user settings. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Add Update Transaction Metrics Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update transaction gas fees actions.js Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update EIP 1559 Params. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint Fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Documentations. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove metrics from this PR Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes: Removed unused variables Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Add more params to updateTransactionGasFees. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update eip1559 method to editableParams. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix Mocha tests Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> add gasPrice to updateEditableParams Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove duplicated Params in notes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> A few more tests to cover if transaction status is not unapproved transaction is passed more parameters than it requires. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update Transaction Gas Fees. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove metrics. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Update gas settings and user settings. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Fix unit tests. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Remove dup;icated method from rebase. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> unrelated change Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Force re-run workflow Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fix Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Do not hideLoading since we're not showing it. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> UpdateTransaction should be renamed to updateGasFees Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> updateGasFees in gas-modal-page-container. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> fix: update previous gas params update method add types to the jsdoc comments. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> updateTransactionGasFees should have been updatePreviousGasParams Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Previous gas fees can be updated for confirmed transactions. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> add updatePreviousGasParams to mocked functions. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * we need to await the first dispatch before we call the second Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * update values to make tests pass Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * More changes to make e2e pass Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Need to wait a bit after save for changes to take effect. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Remove merge comments. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Await one dispatch before calling another Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * We don't need goHome anymore. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Tests must use async...await syntax too since we have await in the useTranasctionFunction Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Add delay after button click for values to update Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Wait a moment after clicking save for values to update Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Wait after clicking save... Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Merge update transaction gas fees and transaction user settings Show loading indicator on edit gas popover Fix tests. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Lint fixes Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * Fix JSDoc Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com> * updatePreviousGasParams should also return updated transaction meta. Signed-off-by: Akintayo A. Olusegun <akintayo.segun@gmail.com>
143 lines
5.0 KiB
JavaScript
143 lines
5.0 KiB
JavaScript
import React from 'react';
|
|
import { Provider } from 'react-redux';
|
|
import { renderHook } from '@testing-library/react-hooks';
|
|
|
|
import {
|
|
CUSTOM_GAS_ESTIMATE,
|
|
EDIT_GAS_MODES,
|
|
GAS_RECOMMENDATIONS,
|
|
} from '../../../shared/constants/gas';
|
|
import mockState from '../../../test/data/mock-state.json';
|
|
import * as Actions from '../../store/actions';
|
|
import configureStore from '../../store/store';
|
|
import { useGasFeeEstimates } from '../useGasFeeEstimates';
|
|
import { FEE_MARKET_ESTIMATE_RETURN_VALUE } from './test-utils';
|
|
import { useTransactionFunctions } from './useTransactionFunctions';
|
|
|
|
jest.mock('../useGasFeeEstimates', () => ({
|
|
useGasFeeEstimates: jest.fn(),
|
|
}));
|
|
useGasFeeEstimates.mockImplementation(() => FEE_MARKET_ESTIMATE_RETURN_VALUE);
|
|
|
|
jest.mock('../../selectors', () => ({
|
|
checkNetworkAndAccountSupports1559: () => true,
|
|
}));
|
|
|
|
const wrapper = ({ children }) => (
|
|
<Provider store={configureStore(mockState)}>{children}</Provider>
|
|
);
|
|
|
|
const renderUseTransactionFunctions = (props) => {
|
|
return renderHook(
|
|
() =>
|
|
useTransactionFunctions({
|
|
defaultEstimateToUse: GAS_RECOMMENDATIONS.MEDIUM,
|
|
editGasMode: EDIT_GAS_MODES.MODIFY_IN_PLACE,
|
|
estimatedBaseFee: '0x59682f10',
|
|
gasFeeEstimates: FEE_MARKET_ESTIMATE_RETURN_VALUE.gasFeeEstimates,
|
|
gasLimit: '21000',
|
|
maxPriorityFeePerGas: '0x59682f10',
|
|
transaction: {
|
|
userFeeLevel: CUSTOM_GAS_ESTIMATE,
|
|
txParams: { maxFeePerGas: '0x5028', maxPriorityFeePerGas: '0x5028' },
|
|
},
|
|
...props,
|
|
}),
|
|
{ wrapper },
|
|
);
|
|
};
|
|
|
|
describe('useMaxPriorityFeePerGasInput', () => {
|
|
beforeEach(() => {
|
|
jest.clearAllMocks();
|
|
});
|
|
|
|
it('should invoke action createCancelTransaction when cancelTransaction callback is invoked', () => {
|
|
const mock = jest
|
|
.spyOn(Actions, 'createCancelTransaction')
|
|
.mockImplementation(() => ({ type: '' }));
|
|
const { result } = renderUseTransactionFunctions();
|
|
result.current.cancelTransaction();
|
|
expect(mock).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should invoke action createSpeedUpTransaction when speedUpTransaction callback is invoked', () => {
|
|
const mock = jest
|
|
.spyOn(Actions, 'createSpeedUpTransaction')
|
|
.mockImplementation(() => ({ type: '' }));
|
|
const { result } = renderUseTransactionFunctions();
|
|
result.current.speedUpTransaction();
|
|
expect(mock).toHaveBeenCalledTimes(1);
|
|
});
|
|
|
|
it('should invoke action updateTransaction with 10% increased fee when updateTransactionToTenPercentIncreasedGasFee callback is invoked', async () => {
|
|
const mockUpdateGasFees = jest
|
|
.spyOn(Actions, 'updateTransactionGasFees')
|
|
.mockImplementation(() => ({ type: '' }));
|
|
|
|
const { result } = renderUseTransactionFunctions();
|
|
await result.current.updateTransactionToTenPercentIncreasedGasFee();
|
|
expect(mockUpdateGasFees).toHaveBeenCalledTimes(1);
|
|
expect(mockUpdateGasFees).toHaveBeenCalledWith(undefined, {
|
|
estimateSuggested: 'tenPercentIncreased',
|
|
estimateUsed: 'tenPercentIncreased',
|
|
gas: '5208',
|
|
gasLimit: '5208',
|
|
maxFeePerGas: '0x582c',
|
|
maxPriorityFeePerGas: '0x582c',
|
|
userEditedGasLimit: undefined,
|
|
userFeeLevel: 'tenPercentIncreased',
|
|
});
|
|
});
|
|
|
|
it('should invoke action updateTransaction with estimate gas values fee when updateTransactionUsingEstimate callback is invoked', async () => {
|
|
const mockUpdateGasFees = jest
|
|
.spyOn(Actions, 'updateTransactionGasFees')
|
|
.mockImplementation(() => ({ type: '' }));
|
|
|
|
const { result } = renderUseTransactionFunctions();
|
|
await result.current.updateTransactionUsingEstimate(
|
|
GAS_RECOMMENDATIONS.LOW,
|
|
);
|
|
expect(mockUpdateGasFees).toHaveBeenCalledTimes(1);
|
|
expect(mockUpdateGasFees).toHaveBeenCalledWith(undefined, {
|
|
estimateSuggested: 'medium',
|
|
estimateUsed: 'low',
|
|
gas: '5208',
|
|
gasLimit: '5208',
|
|
maxFeePerGas: 'c570bd200',
|
|
maxPriorityFeePerGas: 'b2d05e00',
|
|
userEditedGasLimit: undefined,
|
|
userFeeLevel: 'low',
|
|
});
|
|
});
|
|
|
|
it('should invoke action updateTransaction with dappSuggestedValues values fee when updateTransactionUsingDAPPSuggestedValues callback is invoked', async () => {
|
|
const mockUpdateGasFees = jest
|
|
.spyOn(Actions, 'updateTransactionGasFees')
|
|
.mockImplementation(() => ({ type: '' }));
|
|
|
|
const { result } = renderUseTransactionFunctions({
|
|
transaction: {
|
|
userFeeLevel: CUSTOM_GAS_ESTIMATE,
|
|
dappSuggestedGasFees: {
|
|
maxFeePerGas: '0x5028',
|
|
maxPriorityFeePerGas: '0x5028',
|
|
},
|
|
},
|
|
});
|
|
await result.current.updateTransactionUsingDAPPSuggestedValues();
|
|
expect(mockUpdateGasFees).toHaveBeenCalledTimes(1);
|
|
expect(mockUpdateGasFees).toHaveBeenCalledWith(undefined, {
|
|
estimateSuggested: 'medium',
|
|
estimateUsed: 'dappSuggested',
|
|
gas: '5208',
|
|
gasLimit: '5208',
|
|
maxFeePerGas: '0x5028',
|
|
maxPriorityFeePerGas: '0x5028',
|
|
userEditedGasLimit: undefined,
|
|
userFeeLevel: 'dappSuggested',
|
|
});
|
|
});
|
|
});
|