import sinon from 'sinon'; import GasReducer, { setCustomGasPrice, setCustomGasLimit } from './gas.duck'; import { SET_CUSTOM_GAS_PRICE, SET_CUSTOM_GAS_LIMIT, } from './gas-action-constants'; describe('Gas Duck', () => { let tempDateNow; beforeEach(() => { tempDateNow = global.Date.now; global.Date.now = () => 2000000; }); afterEach(() => { sinon.restore(); global.Date.now = tempDateNow; }); const mockState = { mockProp: 123, }; const initState = { customData: { price: null, limit: null, }, }; describe('GasReducer()', () => { it('should initialize state', () => { expect(GasReducer(undefined, {})).toStrictEqual(initState); }); it('should return state unchanged if it does not match a dispatched actions type', () => { expect( GasReducer(mockState, { type: 'someOtherAction', value: 'someValue', }), ).toStrictEqual(mockState); }); it('should set customData.price when receiving a SET_CUSTOM_GAS_PRICE action', () => { expect( GasReducer(mockState, { type: SET_CUSTOM_GAS_PRICE, value: 4321, }), ).toStrictEqual({ customData: { price: 4321 }, ...mockState }); }); it('should set customData.limit when receiving a SET_CUSTOM_GAS_LIMIT action', () => { expect( GasReducer(mockState, { type: SET_CUSTOM_GAS_LIMIT, value: 9876, }), ).toStrictEqual({ customData: { limit: 9876 }, ...mockState }); }); }); describe('setCustomGasPrice', () => { it('should create the correct action', () => { expect(setCustomGasPrice('mockCustomGasPrice')).toStrictEqual({ type: SET_CUSTOM_GAS_PRICE, value: 'mockCustomGasPrice', }); }); }); describe('setCustomGasLimit', () => { it('should create the correct action', () => { expect(setCustomGasLimit('mockCustomGasLimit')).toStrictEqual({ type: SET_CUSTOM_GAS_LIMIT, value: 'mockCustomGasLimit', }); }); }); });