Files
Maagap/ioneapps-maagapp-ee31119a522d/__tests__/reducers/friendActivities.js
2025-08-06 13:49:11 +08:00

84 lines
2.9 KiB
JavaScript

/* global describe: true, test:true, expect:true */
import { initialState, friendActivities } from '~/reducers/friendActivities';
import {
GET_COMMENTS_SUCCESS,
DELETE_ACTIVITY_PHOTO,
DELETE_ACTIVITY_PHOTO_ERROR,
DELETE_ACTIVITY_PHOTO_SUCCESS,
} from '~/store/actionTypes';
import Factory from 'helper/factories/api';
describe('friendActivities reducer', () => {
test('CASE 1: should return initial state', () => {
expect(friendActivities(undefined, { type: 'Default' }))
.toEqual(initialState);
});
test('CASE 2a: should return with comments when comment is related to the friend and actionType is GET_COMMENTS_SUCCESS', () => {
const friend = { username: 'friend@mynixplay.com' };
const originalState = {
friend,
nextTimestamp: 0,
activities: [],
};
const comments = Factory.buildList('Comment', 2, { friend: friend.username });
const payload = { comments };
const newState = friendActivities(originalState, { type: GET_COMMENTS_SUCCESS, payload });
expect(newState.mediaViewer.comments)
.toHaveLength(2);
});
test('CASE 2b: should return without comments when comment is not related to the friend and actionType is GET_COMMENTS_SUCCESS', () => {
const friend = { username: 'friend@mynixplay.com' };
const originalState = {
friend,
nextTimestamp: 0,
activities: [],
};
const comments = Factory.buildList('Comment', 2, { friend: 'other@mynixplay.com' });
const payload = { comments };
const newState = friendActivities(originalState, { type: GET_COMMENTS_SUCCESS, payload });
expect(newState.mediaViewer.comments)
.toHaveLength(0);
});
test('CASE 3: friendActivities should update meta loading state when type is DELETE_ACTIVITY_PHOTO', (s3Key = '', albumId = '', timestamp = '', friend = '') => {
const existingState = { ...initialState, meta: { loading: true, error: '' } };
const stateResult = friendActivities(existingState, {
type: DELETE_ACTIVITY_PHOTO,
payload: {
s3Key,
albumId,
timestamp,
friend,
},
});
expect(stateResult).toEqual(existingState);
});
test('CASE 4: friendActivities should update meta loading state when type is DELETE_ACTIVITY_PHOTO_ERROR', () => {
const existingState = { ...initialState, actions: { submitting: false, error: '' } };
const stateResult = friendActivities(existingState, {
type: DELETE_ACTIVITY_PHOTO_ERROR,
payload: {
error: '',
},
});
expect(stateResult).toEqual(existingState);
});
test('CASE 5: friendActivities should update meta loading state when type is DELETE_ACTIVITY_PHOTO_SUCCESS', (s3Key = '', albumId = '', timestamp = '', friend = '') => {
const existingState = { ...initialState, meta: { loading: false, error: '' } };
const stateResult = friendActivities(existingState, {
type: DELETE_ACTIVITY_PHOTO_SUCCESS,
payload: {
s3Key,
albumId,
timestamp,
friend,
},
});
expect(stateResult).toEqual(existingState);
});
});