Skip to content
Snippets Groups Projects
Commit 0b5ba148 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-2626 OZG-2886 add/adjust test for reducer; adjust Naming; add Typeinformation

parent 2164325e
Branches
Tags
No related merge requests found
......@@ -12,7 +12,7 @@ export interface UserProfileAction {
currentUser: UserProfileResource
}
export interface LoadUserSettingsAction {
export interface LoadedUserSettingsAction {
userSettings: UserSettingsResource
}
......@@ -29,7 +29,7 @@ export const loadUserSettings: UserSettingsActionCreator<UserProfileAction> = cr
props<{ currentUser: UserProfileResource }>()
);
export const loadUserSettingsSuccess: UserSettingsActionCreator<LoadUserSettingsAction> = createAction(
export const loadUserSettingsSuccess: UserSettingsActionCreator<LoadedUserSettingsAction> = createAction(
'[UserSettings/API] Load UserSettings Success',
props<{ userSettings: UserSettingsResource }>()
);
......@@ -44,7 +44,7 @@ export const setUserSettings: UserSettingsActionCreator<SetUserSettingsAction> =
props<{ userSettings: UserSettings }>()
);
export const setUserSettingsSuccess: UserSettingsActionCreator<LoadUserSettingsAction> = createAction(
export const setUserSettingsSuccess: UserSettingsActionCreator<LoadedUserSettingsAction> = createAction(
'[UserSettings/API] Set UserSettings Success',
props<{ userSettings: UserSettingsResource }>()
);
......
import { ApiError, createStateResource } from "@goofy-client/tech-shared";
import { Action } from "@ngrx/store";
import { createUserProfileResource } from "libs/user-profile-shared/test/user-profile";
import { createUserSettingsResource } from "libs/user-settings-shared/test/user-settings";
import { ApiError, createStateResource } from '@goofy-client/tech-shared';
import { Action } from '@ngrx/store';
import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile';
import { createUserSettings, createUserSettingsResource } from 'libs/user-settings-shared/test/user-settings';
import { createApiError } from '../../../../tech-shared/test/error';
import { UserSettingsResource } from '../user-settings.model';
import * as UserSettingsActions from './user-settings.actions';
import { initialUserSettingsState, settingsReducer, UserSettingsState } from "./user-settings.reducer";
import { initialUserSettingsState, userSettingsReducer, UserSettingsState } from './user-settings.reducer';
describe('User Settings Reducer', () => {
describe('unknown action', () => {
it('should return current state', () => {
const action = {} as Action;
const action: Action = {} as Action;
const result = settingsReducer(initialUserSettingsState, action);
const result = userSettingsReducer(initialUserSettingsState, action);
expect(result).toBe(initialUserSettingsState);
})
......@@ -22,9 +23,9 @@ describe('User Settings Reducer', () => {
describe('loadUserSettings', () => {
describe('on "loadUserSettings" action', () => {
it('should set loading to true', () => {
const action = UserSettingsActions.loadUserSettings({ currentUser: createUserProfileResource() });
const action: Action = UserSettingsActions.loadUserSettings({ currentUser: createUserProfileResource() });
const state: UserSettingsState = settingsReducer(initialUserSettingsState, action);
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings.loading).toBeTruthy();
})
......@@ -32,17 +33,17 @@ describe('User Settings Reducer', () => {
})
describe('on "loadUserSettingsSuccess"', () => {
const userSettings = createUserSettingsResource();
const action = UserSettingsActions.loadUserSettingsSuccess({ userSettings })
const userSettings: UserSettingsResource = createUserSettingsResource();
const action: Action = UserSettingsActions.loadUserSettingsSuccess({ userSettings });
it('should set loaded resource', () => {
const state: UserSettingsState = settingsReducer(initialUserSettingsState, action);
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings).toEqual(createStateResource(userSettings));
})
it('should has property "notificationsSendFor"', () => {
const state: UserSettingsState = settingsReducer(initialUserSettingsState, action);
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings).toHaveProperty('resource.notificationsSendFor');
})
......@@ -51,35 +52,49 @@ describe('User Settings Reducer', () => {
describe('on "loadUserSettingsFailure"', () => {
it('should set apiError', () => {
const apiError: ApiError = createApiError();
const action = UserSettingsActions.loadUserSettingsFailure({ apiError });
const action: Action = UserSettingsActions.loadUserSettingsFailure({ apiError });
const state: UserSettingsState = settingsReducer(initialUserSettingsState, action);
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings.error).toStrictEqual(apiError);
})
})
describe('setUserSettings', () => {
describe('on "setUserSettings" action', () => {
it('should set state resource to loading', () => {
const action: Action = UserSettingsActions.setUserSettings({ userSettings: createUserSettings() });
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings.loading).toBeTruthy();
})
})
describe('on "setUserSettingsSuccess" action', () => {
it('should set loaded resource', () => {
})
const userSettingsResource: UserSettingsResource = createUserSettingsResource();
const action: Action = UserSettingsActions.setUserSettingsSuccess({ userSettings: userSettingsResource });
it('should has property "notificationsSendFor"', () => {
it('should set loaded resource', () => {
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings).toEqual(createStateResource(userSettingsResource));
})
})
describe('on "setUserSettingsFailure" action', () => {
it('should set API Error', () => {
const apiError: ApiError = createApiError();
const action: Action = UserSettingsActions.setUserSettingsFailure({ apiError });
const state: UserSettingsState = userSettingsReducer(initialUserSettingsState, action);
expect(state.userSettings.error).toStrictEqual(apiError);
})
})
})
})
\ No newline at end of file
import { createEmptyStateResource, createErrorStateResource, createStateResource, StateResource } from '@goofy-client/tech-shared';
import { createEntityAdapter, EntityAdapter } from '@ngrx/entity';
import { Action, createReducer, on } from '@ngrx/store';
import { Action, ActionReducer, createReducer, on } from '@ngrx/store';
import { UserSettingsResource } from '../user-settings.model';
import * as UserSettingsActions from './user-settings.actions';
import { ApiErrorAction, LoadUserSettingsAction, SetUserSettingsAction } from './user-settings.actions';
import { ApiErrorAction, LoadedUserSettingsAction } from './user-settings.actions';
import { UserSettingsEntity } from './user-settings.models';
export const SETTINGS_FEATURE_KEY = 'settings';
export interface UserSettingsPartialState {
readonly [SETTINGS_FEATURE_KEY]: UserSettingsState;
}
......@@ -23,13 +23,13 @@ export const initialUserSettingsState: UserSettingsState = {
userSettings: createEmptyStateResource()
};
const reducer = createReducer(
const reducer: ActionReducer<UserSettingsState, Action> = createReducer(
initialUserSettingsState,
on(UserSettingsActions.loadUserSettings, (state: UserSettingsState): UserSettingsState => ({
...state,
userSettings: { ...state.userSettings, loading: true }
})),
on(UserSettingsActions.loadUserSettingsSuccess, (state: UserSettingsState, action: LoadUserSettingsAction) => ({
on(UserSettingsActions.loadUserSettingsSuccess, (state: UserSettingsState, action: LoadedUserSettingsAction) => ({
...state,
userSettings: createStateResource<UserSettingsResource>(action.userSettings)
})),
......@@ -37,23 +37,21 @@ const reducer = createReducer(
...state,
userSettings: createErrorStateResource<UserSettingsResource>(action.apiError)
})),
on(UserSettingsActions.setUserSettings, (state: UserSettingsState): UserSettingsState => ({
...state,
userSettings: { ...state.userSettings, loading: true }
})),
on(UserSettingsActions.setUserSettingsSuccess, (state: UserSettingsState, action: SetUserSettingsAction) => ({
on(UserSettingsActions.setUserSettingsSuccess, (state: UserSettingsState, action: LoadedUserSettingsAction) => ({
...state,
userSettings: { ...state.userSettings, loading: true }
userSettings: createStateResource<UserSettingsResource>(action.userSettings)
})),
on(UserSettingsActions.setUserSettingsFailure, (state: UserSettingsState, action: ApiErrorAction) => ({
...state,
userSettings: createErrorStateResource<UserSettingsResource>(action.apiError)
})),
}))
);
export function settingsReducer(
state: UserSettingsState | undefined,
action: Action
) {
export function userSettingsReducer(state: UserSettingsState, action: Action): UserSettingsState {
return reducer(state, action);
}
......@@ -11,12 +11,12 @@ import * as fromUserSettings from './+state/user-settings.reducer';
CommonModule,
StoreModule.forFeature(
fromUserSettings.SETTINGS_FEATURE_KEY,
fromUserSettings.settingsReducer
fromUserSettings.userSettingsReducer
),
EffectsModule.forFeature([UserSettingsEffects]),
StoreModule.forFeature(
fromUserSettings.SETTINGS_FEATURE_KEY,
fromUserSettings.settingsReducer
fromUserSettings.userSettingsReducer
),
],
providers: [UserSettingsFacade],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment