create videoConf reducer
This commit is contained in:
parent
c6658d570b
commit
76c41474a6
|
@ -21,6 +21,7 @@ import enterpriseModules from './enterpriseModules';
|
|||
import encryption from './encryption';
|
||||
import permissions from './permissions';
|
||||
import roles from './roles';
|
||||
import videoConf from './videoConf';
|
||||
|
||||
export default combineReducers({
|
||||
settings,
|
||||
|
@ -43,5 +44,6 @@ export default combineReducers({
|
|||
enterpriseModules,
|
||||
encryption,
|
||||
permissions,
|
||||
roles
|
||||
roles,
|
||||
videoConf
|
||||
});
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
import { clearVideoConfCalls, removeVideoConfCall, setVideoConfCall } from '../actions/videoConf';
|
||||
import { mockedStore } from './mockedStore';
|
||||
import { initialState, ICallInfo } from './videoConf';
|
||||
|
||||
describe('test videoConf reducer', () => {
|
||||
it('should return initial state', () => {
|
||||
const state = mockedStore.getState().settings;
|
||||
expect(state).toEqual(initialState);
|
||||
});
|
||||
|
||||
const call1: ICallInfo = {
|
||||
callId: '123',
|
||||
rid: '123',
|
||||
type: 'accepted',
|
||||
uid: '123'
|
||||
};
|
||||
|
||||
const call2: ICallInfo = {
|
||||
callId: '321',
|
||||
rid: '321',
|
||||
type: 'accepted',
|
||||
uid: '321'
|
||||
};
|
||||
|
||||
it('should return call1 after call addSettings action with call1 as parameter', () => {
|
||||
mockedStore.dispatch(setVideoConfCall(call1));
|
||||
const state = mockedStore.getState().videoConf;
|
||||
expect(state[call1.callId]).toEqual(call1);
|
||||
});
|
||||
|
||||
it('should return call2 after call addSettings action with call2 as parameter', () => {
|
||||
mockedStore.dispatch(setVideoConfCall(call2));
|
||||
const state = mockedStore.getState().videoConf;
|
||||
expect(state[call2.callId]).toEqual(call2);
|
||||
});
|
||||
|
||||
it('should remove call1 after call removeVideoConfCall action with call1 as parameter', () => {
|
||||
mockedStore.dispatch(removeVideoConfCall(call1));
|
||||
const state = mockedStore.getState().videoConf;
|
||||
expect(state[call1.callId]).toEqual(undefined);
|
||||
});
|
||||
|
||||
it('should return initial state after clearSettings', () => {
|
||||
mockedStore.dispatch(clearVideoConfCalls());
|
||||
const state = mockedStore.getState().videoConf;
|
||||
expect(state).toEqual({});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,33 @@
|
|||
import { VIDEO_CONF } from '../actions/actionsTypes';
|
||||
import { TActionVideoConf } from '../actions/videoConf';
|
||||
|
||||
export type TSupportedCallStatus = 'call' | 'canceled' | 'accepted' | 'rejected' | 'confirmed' | 'join' | 'end';
|
||||
|
||||
export interface ICallInfo {
|
||||
callId: string;
|
||||
rid: string;
|
||||
uid: string;
|
||||
type: TSupportedCallStatus;
|
||||
}
|
||||
|
||||
interface ICallInfoRecord {
|
||||
[key: string]: ICallInfo;
|
||||
}
|
||||
|
||||
export const initialState: ICallInfoRecord = {};
|
||||
|
||||
export default (state = initialState, action: TActionVideoConf): ICallInfoRecord => {
|
||||
switch (action.type) {
|
||||
case VIDEO_CONF.SET:
|
||||
return {
|
||||
...state,
|
||||
[action.payload.callId]: action.payload
|
||||
};
|
||||
case VIDEO_CONF.REMOVE:
|
||||
return Object.fromEntries(Object.entries(state).filter(([key]) => key !== action.payload.callId));
|
||||
case VIDEO_CONF.CLEAR:
|
||||
return initialState;
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue