chore: add tests and migrate RootEnum

This commit is contained in:
GleidsonDaniel 2022-01-07 17:24:24 -03:00
parent 16e04c7232
commit 701361a686
4 changed files with 56 additions and 12 deletions

View File

@ -1,6 +1,6 @@
import { Action } from 'redux';
import { TRootEnum } from '../definitions';
import { RootEnum } from '../definitions';
import { APP } from './actionsTypes';
export const ROOT_OUTSIDE = 'outside';
@ -9,7 +9,7 @@ export const ROOT_LOADING = 'loading';
export const ROOT_SET_USERNAME = 'setUsername';
interface IAppStart extends Action {
root: TRootEnum;
root: RootEnum;
text?: string;
}
@ -19,7 +19,7 @@ interface ISetMasterDetail extends Action {
export type TActionApp = IAppStart & ISetMasterDetail;
export function appStart({ root, ...args }: { root: TRootEnum }): IAppStart {
export function appStart({ root, ...args }: { root: RootEnum }): IAppStart {
return {
type: APP.START,
root,

View File

@ -1,6 +1,6 @@
export type TRootEnum = {
ROOT_OUTSIDE: 'outside';
ROOT_INSIDE: 'inside';
ROOT_LOADING: 'loading';
ROOT_SET_USERNAME: 'setUsername';
};
export enum RootEnum {
ROOT_OUTSIDE = 'outside',
ROOT_INSIDE = 'inside',
ROOT_LOADING = 'loading',
ROOT_SET_USERNAME = 'setUsername'
}

44
app/reducers/app.test.ts Normal file
View File

@ -0,0 +1,44 @@
import { appStart, appInit, setMasterDetail } from '../actions/app';
import { initialState } from './app';
import { mockedStore } from './mockedStore';
import { RootEnum } from '../definitions';
import { APP_STATE } from '../actions/actionsTypes';
describe('test reducer', () => {
it('should return initial state', () => {
const state = mockedStore.getState().app;
expect(state).toEqual(initialState);
});
it('should return root state after dispatch appStart action', () => {
mockedStore.dispatch(appStart({ root: RootEnum.ROOT_INSIDE }));
const { root } = mockedStore.getState().app;
expect(root).toEqual(RootEnum.ROOT_INSIDE);
});
it('should return ready state after dispatch appInit action', () => {
mockedStore.dispatch(appInit());
const { ready } = mockedStore.getState().app;
expect(ready).toEqual(false);
});
it('should return ready state after dispatch setMasterDetail action', () => {
mockedStore.dispatch(setMasterDetail(false));
const { isMasterDetail } = mockedStore.getState().app;
expect(isMasterDetail).toEqual(false);
});
it('should return correct state after app go to foreground', () => {
mockedStore.dispatch({ type: APP_STATE.FOREGROUND });
const { foreground, background } = mockedStore.getState().app;
expect(foreground).toEqual(true);
expect(background).toEqual(false);
});
it('should return correct state after app go to background', () => {
mockedStore.dispatch({ type: APP_STATE.BACKGROUND });
const { foreground, background } = mockedStore.getState().app;
expect(foreground).toEqual(false);
expect(background).toEqual(true);
});
});

View File

@ -1,9 +1,9 @@
import { TActionApp } from '../actions/app';
import { TRootEnum } from '../definitions';
import { RootEnum } from '../definitions';
import { APP, APP_STATE } from '../actions/actionsTypes';
export interface IApp {
root?: TRootEnum;
root?: RootEnum;
isMasterDetail: boolean;
text?: string;
ready: boolean;
@ -11,7 +11,7 @@ export interface IApp {
background: boolean;
}
const initialState: IApp = {
export const initialState: IApp = {
root: undefined,
isMasterDetail: false,
text: undefined,