From 243c3aa8b42bd8fe554d3bc4e5b486a344822e50 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Mon, 17 Oct 2022 09:17:59 +0200
Subject: [PATCH] OZG-2626 impl PR comments/cleanup code

---
 .../src/lib/user-profile.repository.spec.ts   | 24 ++++++++++++++++--
 .../src/lib/user-profile.service.spec.ts      | 17 +++++++------
 .../lib/+state/user-settings.facade.spec.ts   |  4 ---
 .../src/lib/+state/user-settings.reducer.ts   |  7 +-----
 .../+state/user-settings.selectors.spec.ts    | 24 ++++++++++++++++--
 .../src/lib/+state/user-settings.selectors.ts |  1 -
 .../src/lib/user-settings.service.spec.ts     | 25 ++++++++++---------
 7 files changed, 68 insertions(+), 34 deletions(-)

diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts
index 9eb4a9fa11..90347798b1 100644
--- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts
+++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.repository.spec.ts
@@ -6,8 +6,8 @@ import { ResourceFactory } from '@ngxp/rest';
 import { cold, hot } from 'jest-marbles';
 import { createApiRootResource } from 'libs/api-root-shared/test/api-root';
 import { createVorgangResource } from 'libs/vorgang-shared/test/vorgang';
-import { createUserProfileResource } from '../../test/user-profile';
-import { UserProfileResource } from './user-profile.model';
+import { createUserProfileListResource, createUserProfileResource } from '../../test/user-profile';
+import { UserProfileListResource, UserProfileResource } from './user-profile.model';
 import { UserProfileRepository } from './user-profile.repository';
 
 describe('User profile repository', () => {
@@ -62,6 +62,11 @@ describe('User profile repository', () => {
 	describe('search', () => {
 
 		const searchBy: string = 'SearchMe';
+		const userProfileListResource: UserProfileListResource = createUserProfileListResource();
+
+		beforeEach(() => {
+			resourceWrapper.get.mockReturnValue(cold('a', { a: userProfileListResource }));
+		})
 
 		it('should call resource factory', () => {
 			repository.search(apiRoot, searchBy);
@@ -76,9 +81,17 @@ describe('User profile repository', () => {
 
 			expect(repository.buildSearchByUrl).toHaveBeenCalledWith(apiRoot, searchBy);
 		})
+
+		it('should return result', () => {
+			const result = repository.search(apiRoot, searchBy);
+
+			expect(result).not.toBeNull();
+			expect(result).toBeObservable(hot('a', { a: userProfileListResource }));
+		})
 	})
 
 	describe('getCurrentUser', () => {
+
 		it('should call resource Factory', () => {
 			repository.getCurrentUser(apiRoot);
 
@@ -90,5 +103,12 @@ describe('User profile repository', () => {
 
 			expect(resourceWrapper.get).toHaveBeenCalledWith(ApiRootLinkRel.CURRENT_USER);
 		})
+
+		it('should return result', () => {
+			const result = repository.getCurrentUser(apiRoot);
+
+			expect(result).not.toBeNull();
+			expect(result).toBeObservable(hot('a', { a: userProfile }));
+		})
 	})
 })
\ No newline at end of file
diff --git a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts
index 2a8ff62bec..ea98a04cdb 100644
--- a/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts
+++ b/goofy-client/libs/user-profile-shared/src/lib/user-profile.service.spec.ts
@@ -44,14 +44,22 @@ describe('UserProfileService', () => {
 
 		const apiRootResource = createApiRootResource(["currentUser"]);
 
-		it('should call repository', () => {
+		it('should call repository', (done) => {
 			apiRootFacade.getApiRoot.mockReturnValue(of(createStateResource(apiRootResource)));
 
 			service.getCurrentUser().subscribe(() => {
 				expect(repository.getCurrentUser).toHaveBeenCalledWith(apiRootResource);
-			});
+				done();
+			})
+		})
 
+		it('should call apiRoot facade', (done) => {
+			apiRootFacade.getApiRoot.mockReturnValue(of(createStateResource(apiRootResource)));
 
+			service.getCurrentUser().subscribe(() => {
+				expect(apiRootFacade.getApiRoot).toHaveBeenCalled();
+				done();
+			})
 		})
 	})
 
@@ -109,8 +117,6 @@ describe('UserProfileService', () => {
 
 	describe('createStateResourceForUpdate', () => {
 
-		const linkRel: string = VorgangHeaderLinkRel.ASSIGNED_TO;
-
 		beforeEach(() => {
 			service.updateUserProfile = jest.fn();
 		})
@@ -151,7 +157,4 @@ describe('UserProfileService', () => {
 			expect(apiRootFacade.getApiRoot).toHaveBeenCalled();
 		})
 	})
-
-
-
 })
\ No newline at end of file
diff --git a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.facade.spec.ts b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.facade.spec.ts
index d1e0f80f2b..6430fd793b 100644
--- a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.facade.spec.ts
+++ b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.facade.spec.ts
@@ -8,11 +8,7 @@ import { Subject } from 'rxjs';
 import { UserSettings, UserSettingsResource } from '../user-settings.model';
 import * as UserSettingsActions from './user-settings.actions';
 import { UserSettingsFacade } from './user-settings.facade';
-import { UserSettingsState } from './user-settings.reducer';
 
-interface TestSchema {
-	settings: UserSettingsState;
-}
 
 describe('UserSettingsFacade', () => {
 	const store: Mock<Store> = mock(Store);
diff --git a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.reducer.ts b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.reducer.ts
index 5d39aa5fa9..9ee7052bca 100644
--- a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.reducer.ts
+++ b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.reducer.ts
@@ -1,12 +1,10 @@
 import { createEmptyStateResource, createErrorStateResource, createStateResource, StateResource } from '@goofy-client/tech-shared';
-import { createEntityAdapter, EntityAdapter } from '@ngrx/entity';
 import { Action, ActionReducer, createReducer, on } from '@ngrx/store';
 import { UserSettingsResource } from '../user-settings.model';
 import * as UserSettingsActions from './user-settings.actions';
 import { ApiErrorAction, LoadedUserSettingsAction } from './user-settings.actions';
-import { UserSettingsEntity } from './user-settings.models';
 
-export const SETTINGS_FEATURE_KEY = 'settings';
+export const SETTINGS_FEATURE_KEY = 'UserSettingsState';
 
 export interface UserSettingsPartialState {
 	readonly [SETTINGS_FEATURE_KEY]: UserSettingsState;
@@ -16,9 +14,6 @@ export interface UserSettingsState {
 	userSettings: StateResource<UserSettingsResource>
 }
 
-export const settingsAdapter: EntityAdapter<UserSettingsEntity> =
-	createEntityAdapter<UserSettingsEntity>();
-
 export const initialUserSettingsState: UserSettingsState = {
 	userSettings: createEmptyStateResource()
 };
diff --git a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.spec.ts b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.spec.ts
index c6f1e8ebf6..60ae1f81e3 100644
--- a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.spec.ts
+++ b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.spec.ts
@@ -1,8 +1,28 @@
+import { createStateResource, StateResource } from '@goofy-client/tech-shared';
+import { createUserSettingsResource } from 'libs/user-settings-shared/test/user-settings';
+import { UserSettingsResource } from '../user-settings.model';
+import { initialUserSettingsState, UserSettingsPartialState } from './user-settings.reducer';
+import * as UserSettingsSelectors from './user-settings.selectors';
 
 describe('UserSettings Selectors', () => {
 
-	it('should never fail', () => {
+	let state: UserSettingsPartialState;
 
+	const userSettings: StateResource<UserSettingsResource> = createStateResource(createUserSettingsResource());
+
+	beforeEach(() => {
+		state = {
+			UserSettingsState: {
+				...initialUserSettingsState,
+				userSettings
+			}
+		}
 	})
 
-});
+	describe('userSettingsSelector', () => {
+
+		it('should return userSettings from state', () => {
+			expect(UserSettingsSelectors.userSettings.projector(state.UserSettingsState)).toEqual(userSettings);
+		})
+	})
+})
\ No newline at end of file
diff --git a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.ts b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.ts
index 9bae8b8c35..8f5096de99 100644
--- a/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.ts
+++ b/goofy-client/libs/user-settings-shared/src/lib/+state/user-settings.selectors.ts
@@ -3,7 +3,6 @@ import { createFeatureSelector, createSelector, MemoizedSelector } from '@ngrx/s
 import { UserSettingsResource } from '../user-settings.model';
 import { SETTINGS_FEATURE_KEY, UserSettingsState } from './user-settings.reducer';
 
-
 export const getUserSettingsState: MemoizedSelector<object, UserSettingsState> = createFeatureSelector<UserSettingsState>(SETTINGS_FEATURE_KEY);
 
 export const userSettings: MemoizedSelector<UserSettingsState, StateResource<UserSettingsResource>> = createSelector(getUserSettingsState, (state: UserSettingsState) => state.userSettings);
\ No newline at end of file
diff --git a/goofy-client/libs/user-settings-shared/src/lib/user-settings.service.spec.ts b/goofy-client/libs/user-settings-shared/src/lib/user-settings.service.spec.ts
index 80d3f205f6..ec12c7e2c0 100644
--- a/goofy-client/libs/user-settings-shared/src/lib/user-settings.service.spec.ts
+++ b/goofy-client/libs/user-settings-shared/src/lib/user-settings.service.spec.ts
@@ -1,11 +1,12 @@
-import { createEmptyStateResource, createStateResource } from '@goofy-client/tech-shared';
+import { createEmptyStateResource, createStateResource, StateResource } from '@goofy-client/tech-shared';
 import { mock, Mock, useFromMock } from '@goofy-client/test-utils';
 import { UserProfileResource, UserProfileService } from '@goofy-client/user-profile-shared';
 import { cold, hot } from 'jest-marbles';
 import { createUserProfileResource } from 'libs/user-profile-shared/test/user-profile';
 import { createUserSettings, createUserSettingsResource } from 'libs/user-settings-shared/test/user-settings';
+import { Observable } from 'rxjs';
 import { UserSettingsFacade } from './+state/user-settings.facade';
-import { UserSettings } from './user-settings.model';
+import { UserSettings, UserSettingsResource } from './user-settings.model';
 import { UserSettingsService } from './user-settings.service';
 
 describe('UserSettingsService', () => {
@@ -31,10 +32,10 @@ describe('UserSettingsService', () => {
 		const emptyStateResourceCU = createEmptyStateResource<UserProfileResource>(true);
 
 		beforeEach(() => {
-			const stateResourceUP = createStateResource(userProfileResource);
-			userProfileService.getCurrentUser.mockReturnValue(hot('a', {a: stateResourceUP}));
+			const stateResourceUP: StateResource<UserProfileResource> = createStateResource(userProfileResource);
+			userProfileService.getCurrentUser.mockReturnValue(hot('a', { a: stateResourceUP }));
 
-			facade.getUserSettings.mockReturnValue(hot('-a', {a: stateResourceCU}));
+			facade.getUserSettings.mockReturnValue(hot('-a', { a: stateResourceCU }));
 		})
 
 		it('should call userProfileService.getCurrentUser', () => {
@@ -43,17 +44,17 @@ describe('UserSettingsService', () => {
 			expect(userProfileService.getCurrentUser).toHaveBeenCalled();
 		})
 
-		it.skip('should load user settings from facade', () => {
-			// Prüfen dass sowie womit aufgerufen wird
-			service.getUserSettings();
-
-			expect(facade.loadUserSettings).toHaveBeenCalledWith(userProfileResource);
+		it.skip('should load user settings from facade', (done) => {
+			service.getUserSettings().subscribe(() => {
+				expect(facade.loadUserSettings).toHaveBeenCalledWith(userProfileResource);
+				done();
+			});
 		})
 
 		it('should return user settings', () => {
-			const userSettings$ = service.getUserSettings();
+			const userSettings$: Observable<StateResource<UserSettingsResource>> = service.getUserSettings();
 
-			expect(userSettings$).toBeObservable(cold('ab', {a: emptyStateResourceCU, b: stateResourceCU}));
+			expect(userSettings$).toBeObservable(cold('ab', { a: emptyStateResourceCU, b: stateResourceCU }));
 		})
 
 	})
-- 
GitLab