Files
2025-08-06 13:49:11 +08:00

123 lines
5.0 KiB
JavaScript

/* global describe: true, test:true, expect:true */
import {
avatar as avatarReducer,
initialState,
} from '~/reducers/avatar';
import {
GET_AVATAR_UPLOADPOLICY,
GET_AVATAR_UPLOADPOLICY_SUCCESS,
GET_AVATAR_UPLOADPOLICY_ERROR,
GET_AVATAR,
GET_AVATAR_SUCCESS,
GET_AVATAR_ERROR,
ACTIVATE_AVATAR,
ACTIVATE_AVATAR_SUCCESS,
ACTIVATE_AVATAR_ERROR,
DELETE_AVATAR,
DELETE_AVATAR_SUCCESS,
DELETE_AVATAR_ERROR,
} from '~/store/actionTypes';
describe('avatar reducer', () => {
test('CASE 1: should return initial state', () => {
expect(avatarReducer(undefined, { type: 'Default' }))
.toEqual(initialState);
});
test('CASE 2: should return state with meta set to loading when type is GET_AVATAR', () => {
const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR, payload: {},
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 3: should return state with meta set to loading when type is ACTIVATE_AVATAR', () => {
const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } };
const stateResult = avatarReducer(initialState, {
type: ACTIVATE_AVATAR, payload: {},
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 4: should return state with meta set to loading when type is GET_AVATAR_UPLOADPOLICY', () => {
const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR_UPLOADPOLICY, payload: {},
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 5: should return state with meta set to loading when type is DELETE_AVATAR', () => {
const expectedState = { ...initialState, meta: { ...initialState.meta, loading: true } };
const stateResult = avatarReducer(initialState, {
type: DELETE_AVATAR, payload: {},
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 6: should return state with error when type is GET_AVATAR_ERROR', () => {
const error = new Error('getAvatarError');
const expectedState = { ...initialState, meta: { ...initialState.meta, error } };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR_ERROR, payload: { error },
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 6: should return state with error when type is ACTIVATE_AVATAR_ERROR', () => {
const error = new Error('activateAvatarError');
const expectedState = { ...initialState, meta: { ...initialState.meta, error } };
const stateResult = avatarReducer(initialState, {
type: ACTIVATE_AVATAR_ERROR, payload: { error },
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 8: should return state with error when type is GET_AVATAR_UPLOADPOLICY_ERROR', () => {
const error = new Error('getUploadPolicyAvatarError');
const expectedState = { ...initialState, meta: { ...initialState.meta, error } };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR_UPLOADPOLICY_ERROR, payload: { error },
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 9: should return state with error when type is DELETE_AVATAR_ERROR', () => {
const error = new Error('deleteAvatarError');
const expectedState = { ...initialState, meta: { ...initialState.meta, error } };
const stateResult = avatarReducer(initialState, {
type: DELETE_AVATAR_ERROR, payload: { error },
});
expect(stateResult).toEqual(expectedState);
});
test('CASE 10: should return state with meta set to loading when type is GET_AVATAR_SUCCESS', () => {
const payload = { uri: undefined };
const meta = { loading: false, error: '' };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR_SUCCESS, payload,
});
expect(stateResult.source).toEqual(payload);
expect(stateResult).toHaveProperty('meta', meta);
});
test('CASE 11: should return state with meta set to loading when type is ACTIVATE_AVATAR_SUCCESS', () => {
const payload = { uri: undefined };
const meta = { loading: false, error: '' };
const stateResult = avatarReducer(initialState, {
type: ACTIVATE_AVATAR_SUCCESS, payload,
});
expect(stateResult.source).toEqual(payload);
expect(stateResult).toHaveProperty('meta', meta);
});
test('CASE 12: should return state with meta set to loading when type is GET_AVATAR_UPLOADPOLICY_SUCCESS', () => {
const payload = { };
const meta = { loading: false, error: '' };
const stateResult = avatarReducer(initialState, {
type: GET_AVATAR_UPLOADPOLICY_SUCCESS, payload,
});
expect(stateResult.uploadPolicy).toEqual(payload);
expect(stateResult).toHaveProperty('meta', meta);
});
test('CASE 13: should return state with meta set to loading when type is DELETE_AVATAR_SUCCESS', () => {
const payload = { };
const meta = { loading: false, error: '' };
const stateResult = avatarReducer(initialState, {
type: DELETE_AVATAR_SUCCESS, payload,
});
expect(stateResult).toEqual(initialState);
expect(stateResult).toHaveProperty('meta', meta);
});
});