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 9eb4a9fa11c9d8001d39feefb382cfde603c7f5d..90347798b1f7fed959be287e47a0f5b8d625c96b 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 2a8ff62bec1a6ad0f51088ea9dc74e76b0d10f20..ea98a04cdb6d5ab2e475ce288d58d92b64717a17 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 d1e0f80f2be8f5d66c262ce53f6cf041f9ac0cac..6430fd793bebf2dbe96d971fe307920e2f793121 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 5d39aa5fa91380ab4bd618633506d8087ac94551..9ee7052bcaac3e302d41150bf0c2a6394a2c57ac 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 c6f1e8ebf6a662a6914da4cb4a8724785dbf547e..60ae1f81e3a3cf22b87c43b112363abf016b7178 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 9bae8b8c352730e07f1ab996c6a2bb659c8cf26c..8f5096de99e181cb89e81213a99d6d1931df6d45 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 80d3f205f6a423813177fc4a6c608b2240c40f96..ec12c7e2c0d69cc04bba9923d0c1b3183690040c 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 })); }) })