blob: ca69f30c3f98bdda74d53851e946ea05404e89bf [file] [log] [blame]
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { PersonTypesSandbox } from '@pages/admin/person-types/person-types.sandbox';
import { Store, ActionsSubject } from '@ngrx/store';
import { State } from '@shared/store';
import { UtilService } from '@shared/utility/utility.service';
import { of } from 'rxjs';
import { Router } from '@angular/router';
import * as personTypesActions from '@app/shared/store/actions/admin/person-types.action';
import * as personTypesFormReducer from '@shared/store/reducers/admin/person-types-details-form.reducer';
import { MarkAsTouchedAction } from 'ngrx-forms';
describe('PersonTypesSandbox', () => {
let service: PersonTypesSandbox;
let appState: Store<State>;
let actionSubject: ActionsSubject;
let utilService: UtilService;
let router: Router;
let modalService: NgbModal;
beforeEach(() => {
appState = { dispatch: () => {}, pipe: () => of(true), select: () => of(true) } as any;
actionSubject = { pipe: () => of(true) } as any;
utilService = { displayNotification() {} } as any;
router = { navigateByUrl() {} } as any;
modalService = { open() {} } as any;
spyOn(appState, 'dispatch').and.callFake(() => {});
service = new PersonTypesSandbox(appState, actionSubject, router, utilService, modalService);
});
it('should create PersonTypesSandbox service', () => {
expect(service).toBeTruthy();
});
it('should set DisplayForm property', () => {
service.setDisplayForm();
expect(service.displayForm).toBeTruthy();
});
it('should dispatch loadPersonTypes Action via loadPersonTypes()', () => {
service.loadPersonTypes();
expect(appState.dispatch).toHaveBeenCalledWith(personTypesActions.loadPersonTypes());
});
it('should dispatch loadPersonType Action via loadPersonType(id)', () => {
service.loadPersonType('x');
expect(appState.dispatch).toHaveBeenCalledWith(personTypesActions.loadPersonType({ payload: 'x' }));
});
it('should clear form via clear()', () => {
service['clear']();
expect(service.displayForm).toBe(false);
});
it('should open modal before deleting a PersonType', () => {
spyOn(service['modalService'], 'open')
.and.returnValue({componentInstance: {title: ''}, result: {then: () => of(true)}} as any);
service.deletePersonType('x');
expect(modalService.open).toHaveBeenCalled();
});
it('should clear form state when current change is canceled and form state is pristine', () => {
let spy = spyOn(service,'clear');
service.currentFormState = {isPristine: true} as any;
service.cancel();
expect(spy).toHaveBeenCalled();
});
it('should open modal when current change is canceled and form state is not pristine', () => {
spyOn(service['modalService'], 'open')
.and.returnValue({componentInstance: {title: ''}, result: {then: () => of(true)}} as any);
service.currentFormState = {isPristine: false} as any;
service.cancel();
expect(modalService.open).toHaveBeenCalled();
});
});