/* global describe: true, test:true, expect:true */ import { userActivities as userActivitiesReducer, initialState, } from '~/reducers/userActivities'; import { GET_USER_ACTIVITIES, GET_USER_ACTIVITIES_SUCCESS, GET_USER_ACTIVITIES_ERROR, SET_SHOWN_MEDIA_STATUS, LOGOUT_SUCCESS, } from '~/store/actionTypes'; describe('user activities reducer', () => { test('CASE 1: should return initial state', () => { expect(userActivitiesReducer(undefined, { type: 'Default' })) .toEqual(initialState); }); test('CASE 2: should return state with meta set to loading when type is GET_USER_ACTIVITIES', () => { const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true, error: '' } }; const stateResult = userActivitiesReducer(initialState, { type: GET_USER_ACTIVITIES, payload: {}, }); expect(stateResult).toEqual(expectedState); }); test('CASE 3: should return state with meta set to loading when type is GET_USER_ACTIVITIES_SUCCESS', () => { const activities = [{ mediaExchange: {} }]; const meta = { loading: false, error: '' }; const stateResult = userActivitiesReducer(initialState, { type: GET_USER_ACTIVITIES_SUCCESS, payload: { activities: { activities } }, }); expect(stateResult).toHaveProperty('meta', meta); }); test('CASE 4: should return state with error when type is GET_USER_ACTIVITIES_ERROR', () => { const error = new Error('getFriendsError'); const expectedState = { ...initialState, meta: { ...initialState.meta, error, loading: false }, }; const stateResult = userActivitiesReducer(initialState, { type: GET_USER_ACTIVITIES_ERROR, payload: { error }, }); expect(stateResult).toEqual(expectedState); }); test('CASE 5: should update isShown state when type is SET_SHOWN_MEDIA_STATUS', (isShown = false) => { const stateResult = userActivitiesReducer(initialState, { type: SET_SHOWN_MEDIA_STATUS, payload: { isShown }, }); expect(stateResult).toEqual(initialState); }); test('CASE 6: should empty the state on LOGOUT_SUCCESS', () => { const existingState = {}; expect(userActivitiesReducer(existingState, { type: LOGOUT_SUCCESS })) .toEqual(initialState); }); });