| /******************************************************************************** |
| * Copyright (c) 2020 Contributors to the Eclipse Foundation |
| * |
| * See the NOTICE file(s) distributed with this work for additional |
| * information regarding copyright ownership. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0 which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| ********************************************************************************/ |
| import { PersonsApiClient } from '@app/pages/persons/persons-api-client'; |
| import { InternalPersonEffect } from "@app/shared/store/effects/persons/internal-person.effect"; |
| import { Subject, of, throwError } from 'rxjs'; |
| import * as internalPersonActions from '@app/shared/store/actions/persons/internal-person.action'; |
| import { InternalPerson } from '@app/shared/models'; |
| |
| describe('InternalPerson Effects', () => { |
| let effects: InternalPersonEffect; |
| let actions$: Subject<any>; |
| let apiClient: PersonsApiClient; |
| let apiResponse: any = null; |
| |
| beforeEach(() => { |
| apiClient = { |
| getInternalPersonDetails() {}, |
| putInternalPersonDetails: () => {}, |
| postInternalPersonDetails: () => {}, |
| } as any; |
| actions$ = new Subject(); |
| effects = new InternalPersonEffect(actions$, apiClient); |
| }); |
| |
| it('should be truthy', () => { |
| expect(effects).toBeTruthy(); |
| }); |
| |
| it('should equal loadInternalPersonDetail after getInternalPerson', (done) => { |
| apiResponse = new InternalPerson({id: "1"}); |
| spyOn(apiClient, 'getInternalPersonDetails').and.returnValue(of(apiResponse)); |
| effects.getInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.loadInternalPersonDetailSuccess({payload: new InternalPerson({id: "1"})})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.loadInternalPersonDetail({payload: "1"})); |
| }); |
| |
| it('should equal loadInternalPersonDetailFail after getInternalPerson', (done) => { |
| spyOn(apiClient, 'getInternalPersonDetails').and.returnValue(throwError('error')); |
| effects.getInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.loadInternalPersonDetailFail({payload: 'error'})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.loadInternalPersonDetail({payload: "1"})); |
| }); |
| |
| it('should equal putInternalPersonDetails after persistInternalPerson with given contactId', (done) => { |
| apiResponse = new InternalPerson({contactId: "1"}); |
| spyOn(apiClient, 'putInternalPersonDetails').and.returnValue(of(apiResponse)); |
| effects.persistInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.persistInternalPersonDetailSuccess({payload: new InternalPerson({contactId: "1"})})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.persistInternalPersonDetail({payload: new InternalPerson({contactId: "1"})})); |
| }); |
| |
| it('should equal postInternalPersonDetails after persistInternalPerson a new external person', (done) => { |
| apiResponse = new InternalPerson(); |
| spyOn(apiClient, 'postInternalPersonDetails').and.returnValue(of(apiResponse)); |
| effects.persistInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.persistInternalPersonDetailSuccess({payload: new InternalPerson()})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.persistInternalPersonDetail({payload: new InternalPerson()})); |
| }); |
| |
| it('should equal persistInternalPersonDetailFail after putInternalPersonDetails', (done) => { |
| spyOn(apiClient, 'putInternalPersonDetails').and.returnValue(throwError('error')); |
| effects.persistInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.persistInternalPersonDetailFail({payload: 'error'})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.persistInternalPersonDetail({payload: new InternalPerson({contactId: "1"})})); |
| }); |
| |
| it('should equal persistInternalPersonDetailFail after postInternalPersonDetails', (done) => { |
| spyOn(apiClient, 'postInternalPersonDetails').and.returnValue(throwError('error')); |
| effects.persistInternalPerson$.pipe().subscribe(result => { |
| expect(result).toEqual(internalPersonActions.persistInternalPersonDetailFail({payload: 'error'})); |
| }); |
| done(); |
| actions$.next(internalPersonActions.persistInternalPersonDetail({payload: new InternalPerson()})); |
| }); |
| }); |