/* global describe: true, test:true, expect:true */ import { framePairing as framePairingReducer, initialState } from '~/reducers/framePairing'; import { FRAME_DISCOVER_START, FRAME_DISCOVER_STARTED_SUCCESS, FRAME_DISCOVER_ERROR, FRAME_DISCOVER_SUCCESS, } from '~/store/actionTypes'; describe('framePairing reducer', () => { test('CASE 1: should return initial state', () => { expect(framePairingReducer(undefined, { type: 'Default' })) .toEqual(initialState); }); test('CASE 2: should return state with loading when type is FRAME_DISCOVER_START or FRAME_DISCOVER_STARTED_SUCCESS', () => { const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } }; expect(framePairingReducer(initialState, { type: FRAME_DISCOVER_START, })).toEqual(expectedState); expect(framePairingReducer(initialState, { type: FRAME_DISCOVER_STARTED_SUCCESS, })).toEqual(expectedState); }); test('CASE 3: should return frames with meta property when type is FRAME_DISCOVER_SUCCESS', () => { const services = [{ txt: { serialNumber: '', model: 1, }, }, { txt: { serialNumber: '', model: 2, }, }]; const specs = { 1: { name: '', colors: [1, 2], photo: [ '', '', ], }, 2: { name: '', colors: [1, 2], photo: [ '', '', ], }, }; const stateResult = framePairingReducer(undefined, { type: FRAME_DISCOVER_SUCCESS, payload: { services, specs }, }); expect(stateResult).toHaveProperty('frames'); expect(stateResult.frames).toHaveLength(services.length); expect(stateResult).toHaveProperty('meta'); }); test('CASE 5: should return correct state when type is FRAME_DISCOVER_ERROR', () => { const err = new Error('discoverFrameErr'); const expectedState = { ...initialState, meta: { error: err, loading: false } }; expect(framePairingReducer(initialState, { type: FRAME_DISCOVER_ERROR, payload: { error: err }, })).toEqual(expectedState); }); });