1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-24 11:01:41 +01:00
metamask-extension/ui/app/hooks/tests/useRetryTransaction.test.js
2020-12-03 09:46:22 -06:00

72 lines
2.1 KiB
JavaScript

import assert from 'assert'
import * as reactRedux from 'react-redux'
import { renderHook } from '@testing-library/react-hooks'
import sinon from 'sinon'
import transactions from '../../../../test/data/transaction-data.json'
import * as methodDataHook from '../useMethodData'
import * as metricEventHook from '../useMetricEvent'
import { showSidebar } from '../../store/actions'
import { useRetryTransaction } from '../useRetryTransaction'
describe('useRetryTransaction', function () {
describe('when transaction meets retry enabled criteria', function () {
const dispatch = sinon.spy(() => Promise.resolve({ blockTime: 0 }))
const trackEvent = sinon.spy()
const event = {
preventDefault: () => undefined,
stopPropagation: () => undefined,
}
before(function () {
sinon.stub(reactRedux, 'useDispatch').returns(dispatch)
sinon.stub(methodDataHook, 'useMethodData').returns({})
sinon.stub(metricEventHook, 'useMetricEvent').returns(trackEvent)
})
afterEach(function () {
dispatch.resetHistory()
trackEvent.resetHistory()
})
const retryEnabledTransaction = {
...transactions[0],
transactions: [
{
submittedTime: new Date() - 5001,
},
],
hasRetried: false,
}
it('retryTransaction function should track metrics', function () {
const { result } = renderHook(() =>
useRetryTransaction(retryEnabledTransaction, true),
)
const retry = result.current
retry(event)
assert.strictEqual(trackEvent.calledOnce, true)
})
it('retryTransaction function should show retry sidebar', async function () {
const { result } = renderHook(() =>
useRetryTransaction(retryEnabledTransaction, true),
)
const retry = result.current
await retry(event)
assert.strictEqual(
dispatch.calledWith(
showSidebar({
transitionName: 'sidebar-left',
type: 'customize-gas',
props: { transaction: retryEnabledTransaction.initialTransaction },
}),
),
true,
)
})
after(function () {
sinon.restore()
})
})
})