text: 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()
      })
    })
  })
  