import assert from 'assert' import proxyquire from 'proxyquire' import sinon from 'sinon' let mapDispatchToProps const actionSpies = { setMaxModeTo: sinon.spy(), updateSendAmount: sinon.spy(), } const duckActionSpies = { updateSendErrors: sinon.spy(), } proxyquire('../send-amount-row.container.js', { 'react-redux': { connect: (_, md) => { mapDispatchToProps = md return () => ({}) }, }, '../../../../selectors': { sendAmountIsInError: (s) => `mockInError:${s}` }, '../../send.utils': { getAmountErrorObject: (mockDataObject) => ({ ...mockDataObject, mockChange: true, }), getGasFeeErrorObject: (mockDataObject) => ({ ...mockDataObject, mockGasFeeErrorChange: true, }), }, '../../../../store/actions': actionSpies, '../../../../ducks/send/send.duck': duckActionSpies, }) describe('send-amount-row container', function () { describe('mapDispatchToProps()', function () { let dispatchSpy let mapDispatchToPropsObject beforeEach(function () { dispatchSpy = sinon.spy() mapDispatchToPropsObject = mapDispatchToProps(dispatchSpy) duckActionSpies.updateSendErrors.resetHistory() }) describe('setMaxModeTo()', function () { it('should dispatch an action', function () { mapDispatchToPropsObject.setMaxModeTo('mockBool') assert(dispatchSpy.calledOnce) assert(actionSpies.setMaxModeTo.calledOnce) assert.strictEqual( actionSpies.setMaxModeTo.getCall(0).args[0], 'mockBool', ) }) }) describe('updateSendAmount()', function () { it('should dispatch an action', function () { mapDispatchToPropsObject.updateSendAmount('mockAmount') assert(dispatchSpy.calledOnce) assert(actionSpies.updateSendAmount.calledOnce) assert.strictEqual( actionSpies.updateSendAmount.getCall(0).args[0], 'mockAmount', ) }) }) describe('updateGasFeeError()', function () { it('should dispatch an action', function () { mapDispatchToPropsObject.updateGasFeeError({ some: 'data' }) assert(dispatchSpy.calledOnce) assert(duckActionSpies.updateSendErrors.calledOnce) assert.deepStrictEqual( duckActionSpies.updateSendErrors.getCall(0).args[0], { some: 'data', mockGasFeeErrorChange: true, }, ) }) }) describe('updateSendAmountError()', function () { it('should dispatch an action', function () { mapDispatchToPropsObject.updateSendAmountError({ some: 'data' }) assert(dispatchSpy.calledOnce) assert(duckActionSpies.updateSendErrors.calledOnce) assert.deepStrictEqual( duckActionSpies.updateSendErrors.getCall(0).args[0], { some: 'data', mockChange: true, }, ) }) }) }) })