diff --git a/goofy-client/libs/user-settings-shared/src/lib/user-settings.repository.spec.ts b/goofy-client/libs/user-settings-shared/src/lib/user-settings.repository.spec.ts index 19185502e900584f910edb17c36673254d0a8211..ce24b371135751e376ffb67b94962c7876e2fa3d 100644 --- a/goofy-client/libs/user-settings-shared/src/lib/user-settings.repository.spec.ts +++ b/goofy-client/libs/user-settings-shared/src/lib/user-settings.repository.spec.ts @@ -1,48 +1,78 @@ -import { ApiRootLinkRel, ApiRootResource } from '@goofy-client/api-root-shared'; import { mock, useFromMock } from '@goofy-client/test-utils'; -import { UserProfileResource } from '@goofy-client/user-profile-shared'; +import { UserProfileLinkRel, UserProfileResource } from '@goofy-client/user-profile-shared'; import { ResourceFactory } from '@ngxp/rest'; -import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; -import { UserProfileRepository } from "libs/user-profile-shared/src/lib/user-profile.repository"; +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 { UserSettingsLinkRel } from './user-settings.linkrel'; +import { UserSettings, UserSettingsResource } from './user-settings.model'; import { UserSettingsRepository } from './user-settings.repository'; -const resourceFactory = mock(ResourceFactory); -const resourceWrapper = { get: jest.fn() }; -const apiRoot: ApiRootResource = createApiRootResource([ApiRootLinkRel.SEARCH_USER_PROFILES]); - -beforeEach(() => { - // userProfileRepository = new UserProfileRepository(useFromMock(resourceFactory)); -}) - -describe('get user settings', () => { - const userProfileRepository: UserProfileRepository = new UserProfileRepository(useFromMock(resourceFactory)); - const userProfile: UserProfileResource = createUserProfileResource(); - const repository: UserSettingsRepository = new UserSettingsRepository(useFromMock(resourceFactory)); +describe('UserSettingsRepository', () => { + let repository: UserSettingsRepository; + let resourceFactory = mock(ResourceFactory); + let resourceWrapper = { get: jest.fn(), patch: jest.fn() }; beforeEach(() => { + repository = new UserSettingsRepository(useFromMock(resourceFactory)); + resourceFactory.from.mockReturnValue(resourceWrapper); }) - it('should call resource factory', () => { - repository.getUserSettings(userProfile); + describe('get user settings', () => { + const userProfileResource: UserProfileResource = createUserProfileResource(); + const responseResource: UserProfileResource = createUserProfileResource(); - expect(resourceFactory.from).toHaveBeenCalledWith(userProfile); - }) + beforeEach(() => { + resourceWrapper.get.mockReturnValue(hot('a', { a: responseResource })); + }) - it('should get', () => { - // const result = userPr - }) + it('should call resourceFactory with resource', () => { + repository.getUserSettings(userProfileResource); + + expect(resourceFactory.from).toHaveBeenCalledWith(userProfileResource); + }) - it('should return result', () => { + it('should call resourceWrapper with link', () => { + repository.getUserSettings(userProfileResource); + expect(resourceWrapper.get).toHaveBeenCalledWith(UserProfileLinkRel.SETTINGS) + }) + + it('should return result', () => { + let result = repository.getUserSettings(userProfileResource); + + expect(result).not.toBeNull(); + expect(result).toBeObservable(cold('a', { a: responseResource })); + }) }) -}) + describe('set user settings', () => { + const userSettingsResource: UserSettingsResource = createUserSettingsResource(); + const responseResource: UserProfileResource = createUserProfileResource(); + const userSettings: UserSettings = createUserSettings(); + + beforeEach(() => { + resourceWrapper.patch.mockReturnValue(hot('a', { a: responseResource })); + }) + + it('should call resourceFactory with resource', () => { + repository.setUserSettings(userSettingsResource, userSettings); + + expect(resourceFactory.from).toHaveBeenCalledWith(userSettingsResource); + }) + + it('should call resourceWrapper with link', () => { + repository.setUserSettings(userSettingsResource, userSettings); -describe('set user settings', () => { + expect(resourceWrapper.patch).toHaveBeenCalledWith(UserSettingsLinkRel.EDIT, userSettings) + }) - it('for current user', () => { + it('should return result', () => { + let result = repository.setUserSettings(userSettingsResource, userSettings); + expect(result).not.toBeNull(); + expect(result).toBeObservable(cold('a', { a: responseResource })); + }) }) }) \ No newline at end of file