blob: 6335f39af4d4b24db2903f03a2ca5307a120e705 [file] [log] [blame]
/********************************************************************************
* 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()}));
});
});