|
|
|
import * as reactRedux from 'react-redux'
|
|
|
|
import assert from 'assert'
|
|
|
|
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: () => {}, stopPropagation: () => {} }
|
|
|
|
|
|
|
|
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.equal(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)
|
|
|
|
const calls = dispatch.getCalls()
|
|
|
|
assert.equal(calls.length, 5)
|
|
|
|
assert.equal(
|
|
|
|
dispatch.calledWith(
|
|
|
|
showSidebar({
|
|
|
|
transitionName: 'sidebar-left',
|
|
|
|
type: 'customize-gas',
|
|
|
|
props: { transaction: retryEnabledTransaction.initialTransaction },
|
|
|
|
}),
|
|
|
|
),
|
|
|
|
true,
|
|
|
|
)
|
|
|
|
})
|
|
|
|
|
|
|
|
after(function () {
|
|
|
|
sinon.restore()
|
|
|
|
})
|
|
|
|
})
|
|
|
|
})
|