completion
This commit is contained in:
187
ioneapps-maagapp-ee31119a522d/__tests__/reducers/friends.js
Normal file
187
ioneapps-maagapp-ee31119a522d/__tests__/reducers/friends.js
Normal file
@@ -0,0 +1,187 @@
|
||||
/* global describe: true, test:true, expect:true */
|
||||
import {
|
||||
friends as friendsReducer,
|
||||
initialState,
|
||||
initAddFriend,
|
||||
addFriend as addFriendReducer,
|
||||
} from '~/reducers/friends';
|
||||
import {
|
||||
GET_FRIENDS,
|
||||
GET_FRIENDS_SUCCESS,
|
||||
GET_FRIENDS_ERROR,
|
||||
UPDATE_SEEN_TIMESTAMP_SUCCESS,
|
||||
LOGOUT_SUCCESS,
|
||||
UPDATE_ADD_FRIEND,
|
||||
ACCEPT_FRIEND_INVITE_SUCCESS,
|
||||
ACCEPT_FRIEND_INVITE_ERROR,
|
||||
REJECT_FRIEND_INVITE_SUCCESS,
|
||||
REJECT_FRIEND_INVITE_ERROR,
|
||||
RESET_ADD_FRIEND_ERROR,
|
||||
RESET_ADD_FRIEND_PLAYLIST,
|
||||
} from '~/store/actionTypes';
|
||||
|
||||
describe('friends reducer', () => {
|
||||
test('CASE 1: should return initial state', () => {
|
||||
expect(friendsReducer(undefined, { type: 'Default' }))
|
||||
.toEqual(initialState);
|
||||
});
|
||||
|
||||
test('CASE 2: should return state with meta set to loading when type is GET_FRIENDS', () => {
|
||||
const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } };
|
||||
const stateResult = friendsReducer(initialState, {
|
||||
type: GET_FRIENDS, payload: {},
|
||||
});
|
||||
expect(stateResult).toEqual(expectedState);
|
||||
});
|
||||
|
||||
test('CASE 3: should return state with meta set to loading when type is GET_FRIENDS_SUCCESS', () => {
|
||||
const friends = [{ username: '1', activity: { timestamp: 0 } }, { username: '2', activity: { timestamp: 0 } }];
|
||||
const invites = [{ requester: '1' }, { requester: '2' }];
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, {
|
||||
type: GET_FRIENDS_SUCCESS, payload: { friends: { friends, invites } },
|
||||
});
|
||||
expect(stateResult.friends).toEqual([]);
|
||||
expect(stateResult.invites[0]).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 4: should return state with error when type is GET_FRIENDS_ERROR', () => {
|
||||
const error = new Error('getFriendsError');
|
||||
const expectedState = { ...initialState, meta: { ...initialState.meta, error } };
|
||||
const stateResult = friendsReducer(initialState, {
|
||||
type: GET_FRIENDS_ERROR, payload: { error },
|
||||
});
|
||||
expect(stateResult).toEqual(expectedState);
|
||||
});
|
||||
|
||||
test('CASE 5: should return state when type is UPDATE_SEEN_TIMESTAMP_SUCCESS', () => {
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, { type: UPDATE_SEEN_TIMESTAMP_SUCCESS });
|
||||
expect(stateResult).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 6: should return state with loading = false when type is ACCEPT_FRIEND_INVITE_SUCCESS', () => {
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, { type: ACCEPT_FRIEND_INVITE_SUCCESS });
|
||||
expect(stateResult).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 7: should return state with loading = false when type is ACCEPT_FRIEND_INVITE_ERROR', () => {
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, { type: ACCEPT_FRIEND_INVITE_ERROR, payload: { error: '' } });
|
||||
expect(stateResult).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 8: should return state with loading = false when type is REJECT_FRIEND_INVITE_SUCCESS', () => {
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, { type: REJECT_FRIEND_INVITE_SUCCESS });
|
||||
expect(stateResult).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 9: should return state with loading = false when type is REJECT_FRIEND_INVITE_ERROR', () => {
|
||||
const meta = { loading: false, error: '' };
|
||||
const stateResult = friendsReducer(initialState, { type: REJECT_FRIEND_INVITE_ERROR, payload: { error: '' } });
|
||||
expect(stateResult).toHaveProperty('meta', meta);
|
||||
});
|
||||
|
||||
test('CASE 10: should empty the state on LOGOUT_SUCCESS', () => {
|
||||
const existingState = {};
|
||||
expect(friendsReducer(existingState, { type: LOGOUT_SUCCESS }))
|
||||
.toEqual(initialState);
|
||||
});
|
||||
|
||||
test('CASE 11: addFriend should return initial state', () => {
|
||||
expect(addFriendReducer(undefined, { type: 'Default' }))
|
||||
.toEqual(initAddFriend);
|
||||
});
|
||||
|
||||
test('CASE 12: addFriend should return state when type is UPDATE_ADD_FRIEND', () => {
|
||||
const stateResult = friendsReducer(initAddFriend, {
|
||||
type: UPDATE_ADD_FRIEND,
|
||||
payload: {
|
||||
lookupKey: '',
|
||||
friendName: '',
|
||||
playlistId: -1,
|
||||
hasError: '',
|
||||
isNewPlaylist: 0,
|
||||
popCount: 2,
|
||||
},
|
||||
});
|
||||
expect(stateResult).toEqual(initAddFriend);
|
||||
});
|
||||
|
||||
test('CASE 13: addFriend should update error state when type is UPDATE_ADD_FRIEND', (hasError = '') => {
|
||||
const {
|
||||
lookupKey,
|
||||
friendName,
|
||||
playlistId,
|
||||
isNewPlaylist,
|
||||
} = initAddFriend;
|
||||
const stateResult = friendsReducer(initAddFriend, {
|
||||
type: RESET_ADD_FRIEND_ERROR,
|
||||
payload: {
|
||||
lookupKey,
|
||||
friendName,
|
||||
playlistId,
|
||||
hasError,
|
||||
isNewPlaylist,
|
||||
},
|
||||
});
|
||||
expect(stateResult).toEqual(initAddFriend);
|
||||
});
|
||||
|
||||
test('CASE 14: addFriend should update error state when type is RESET_ADD_FRIEND_ERROR', (hasError = '') => {
|
||||
const stateResult = friendsReducer(initAddFriend, {
|
||||
type: RESET_ADD_FRIEND_ERROR,
|
||||
payload: { hasError },
|
||||
});
|
||||
expect(stateResult).toEqual(initAddFriend);
|
||||
});
|
||||
|
||||
test('CASE 15: addFriend should update error state when type is RESET_ADD_FRIEND_PLAYLIST', (isNewPlaylist = 0) => {
|
||||
const stateResult = friendsReducer(initAddFriend, {
|
||||
type: RESET_ADD_FRIEND_PLAYLIST,
|
||||
payload: { isNewPlaylist },
|
||||
});
|
||||
expect(stateResult).toEqual(initAddFriend);
|
||||
});
|
||||
|
||||
test('CASE 16: Badge should be true when a new friend invite has been added to state GET_FRIENDS_SUCCESS', () => {
|
||||
const existingState = { ...initialState, invites: [{ requester: '1' }, { requester: '2' }] };
|
||||
const friends = {
|
||||
invites: [{ requester: '1' }, { requester: '3' }],
|
||||
friends: [{ username: '1', activity: { timestamp: 0 } }],
|
||||
};
|
||||
const stateResult = friendsReducer(existingState, {
|
||||
type: GET_FRIENDS_SUCCESS,
|
||||
payload: { friends },
|
||||
});
|
||||
expect(stateResult).toHaveProperty('isBadged', true);
|
||||
});
|
||||
|
||||
test('CASE 17: Badge should be true when a new friend invite GET_FRIENDS_SUCCESS', () => {
|
||||
const existingState = { ...initialState, invites: [{ requester: '1' }, { requester: '2' }] };
|
||||
const friends = {
|
||||
invites: [{ requester: '1' }],
|
||||
friends: [{ username: '1', activity: { timestamp: 0 } }],
|
||||
};
|
||||
const stateResult = friendsReducer(existingState, {
|
||||
type: GET_FRIENDS_SUCCESS,
|
||||
payload: { friends },
|
||||
});
|
||||
expect(stateResult).toHaveProperty('isBadged', false);
|
||||
});
|
||||
|
||||
test('CASE 18: Badge should be true when a friend gets a new activity', () => {
|
||||
const existingState = { ...initialState, invites: [], friends: [{ username: '1', activity: { timestamp: 1 } }] };
|
||||
const friends = {
|
||||
invites: [],
|
||||
friends: [{ username: '1', activity: { timestamp: 2 } }],
|
||||
};
|
||||
const stateResult = friendsReducer(existingState, {
|
||||
type: GET_FRIENDS_SUCCESS,
|
||||
payload: { friends },
|
||||
});
|
||||
expect(stateResult).toHaveProperty('isBadged', false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user