Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

import { Observable } from 'rxjs/Observable';
import { FormBuilder } from '@angular/forms';
import { RfaiSearch277Service } from '../rfai-search277/rfai-search277.service';
import { RfaiSubmissionDetailsService } from './rfai-submission-details.service';
import { RfaiSubmissionDetailsComponent } from './rfai-submission-details.component';
import { Observer } from 'rxjs/Observer';
import { AuthenticationService } from '../../auth/auth.service';
import {
SubmissionDetailsModel,
AttachmentModel
} from './rfai-submission-details.model';

describe('RfaiSubmissionDetailsComponent', () => {
let fb: FormBuilder;
let rfaiSubmissionService: RfaiSubmissionDetailsService;
let rfaiSearch277Service: RfaiSearch277Service;
let component: RfaiSubmissionDetailsComponent;
let authenticationService: AuthenticationService;

beforeEach(() => {
fb = new FormBuilder();
rfaiSubmissionService = new RfaiSubmissionDetailsService(null);
rfaiSearch277Service = new RfaiSearch277Service(null);
authenticationService = new AuthenticationService(null, null, null, null);
component = new RfaiSubmissionDetailsComponent(
fb,
rfaiSubmissionService,
rfaiSearch277Service,
authenticationService
);
});

it('should create the component', () => {
expect(component).toBeTruthy();
});

it('should run ngOnInit successfully', () => {
const getUserDataSpy = spyOn(component, 'getUserData').and.callFake(() => {
sessionStorage.setItem(
'viewSubmissionPermissions',
'{"printRfai": "stuff1", "saveUpdates": "stuff2", "updateRfai": "stuff3"}'
);

component.viewSubmissionPermissions = JSON.parse(
sessionStorage.getItem('viewSubmissionPermissions')
);
});

// const getDetailsSpy = spyOn(component, 'getDetails').and.callFake( () => {
// });

const rfaiSubmissionSpy = spyOn(
rfaiSubmissionService,
'getDetails'
).and.callFake(() => {
return Observable.create((observer: Observer<string>) => {
observer.next('I am data');
});
});
component.ngOnInit();
expect(rfaiSubmissionSpy).toHaveBeenCalled();
});

it('should run getUserData with permissions', () => {
const getUserDataSpy = spyOn(component, 'getUserData').and.callFake(() => {
sessionStorage.setItem(
'viewSubmissionPermissions',
'{"printRfai": "stuff1", "saveUpdates": "stuff2", "updateRfai": "stuff3"}'
);

component.viewSubmissionPermissions = JSON.parse(
sessionStorage.getItem('viewSubmissionPermissions')
);
});

const rfaiSubmissionSpy = spyOn(
rfaiSubmissionService,
'getDetails'
).and.callFake(() => {
return Observable.create((observer: Observer<string>) => {
observer.next('I am data');
});
});
component.ngOnInit();

expect(component.disablePrint).toBeTruthy();
expect(component.disableSave).toBeTruthy();
expect(component.disableUpdate).toBeTruthy();
});

it('should run getUserData without permissions', () => {
const getUserDataSpy = spyOn(component, 'getUserData').and.callFake(() => {
sessionStorage.setItem('viewSubmissionPermissions', '{}');

component.viewSubmissionPermissions = JSON.parse(
sessionStorage.getItem('viewSubmissionPermissions')
);
});

const rfaiSubmissionSpy = spyOn(
rfaiSubmissionService,
'getDetails'
).and.callFake(() => {
return Observable.create((observer: Observer<string>) => {
observer.next('I am data');
});
});
component.ngOnInit();

expect(component.disablePrint).toBeTruthy();
expect(component.disableSave).toBeTruthy();
expect(component.disableUpdate).toBeTruthy();
});

it('should run getId()', () => {
spyOn(rfaiSearch277Service, 'getSubmissionId').and.callFake(() => {
return '999';
});

const result = component.getId();
expect(rfaiSearch277Service.getSubmissionId).toHaveBeenCalledTimes(1);
expect(result).toEqual('999');
});

it('should run getDetails()', () => {
component.loading = true;
const responseFromService = new SubmissionDetailsModel();
responseFromService.rfaiAttachmentResponse = [];
const attachmentModel = new AttachmentModel();
attachmentModel.claimLevel = 'CLAIM';
attachmentModel.statusCode = '12345-6';
responseFromService.rfaiAttachmentResponse[0] = attachmentModel;

spyOn(rfaiSubmissionService, 'getDetails').and.callFake(() => {
return Observable.create((observer: Observer<SubmissionDetailsModel>) => {
observer.next(responseFromService);
});
});

component.getDetails(2);
expect(component.loading).toBe(false);
expect(component.attachments[0].claimLevel).toBe('CLAIM');
expect(component.attachments[0].statusCode).toBe('12345-6');
});

it('should run saveUpdates()', () => {
component.successMsg = '';
const responseFromService = { result: true };
component.updateRequest.submissionNote = 'a new submission';
spyOn(rfaiSubmissionService, 'updateRfai').and.callFake(() => {
return Observable.create(observer => {
observer.next(responseFromService);
});
});

component.saveUpdates();

expect(component.updateRequest.submissionNote).toBe('a new submission');
expect(component.successMsg).toBe('Updated RFAI successfully.');
expect(rfaiSubmissionService.updateRfai).toHaveBeenCalledTimes(1);
});

it('should run saveUpdates() (error scenario)', () => {
component.errorMsg = '';
const responseFromService_error = {
error: 'ERR',
error_description: 'there was an error'
};
component.updateRequest.submissionNote = 'a new submission';
spyOn(rfaiSubmissionService, 'updateRfai').and.callFake(() => {
return Observable.create(observer => {
observer.next(responseFromService_error);
});
});

component.saveUpdates();

expect(component.updateRequest.submissionNote).toBe('a new submission');
expect(component.errorMsg).toBe('An error occured RFAI update.');
expect(rfaiSubmissionService.updateRfai).toHaveBeenCalledTimes(1);
});

it('should run update() OK when disableUpdate = false', () => {
component.model.rfaiStatus = 'NEW_STATUS';
component.model.responseDate = '05/05/2044';
component.showUpdate = true;
component.disableUpdate = false; // Now checked for in update().

component.update();

expect(component.updateRequest.submissionStatus).toBe('NEW_STATUS');
expect(component.updateRequest.responseDate).toBe('05/05/2044');
expect(component.disableUpdate).toBe(false);
expect(component.showUpdate).toBe(false);
});

it('should run update() to no effect when disableUpdate = true', () => {
component.model.rfaiStatus = 'NEW_STATUS';
component.model.responseDate = '05/05/2044';
component.showUpdate = true;
component.disableUpdate = true; // Now checked for in update().

component.update();

expect(component.updateRequest.submissionStatus).toBe('');
expect(component.updateRequest.responseDate).toBe('');
expect(component.disableUpdate).toBe(true);
expect(component.showUpdate).toBe(true);
});

it('should run onModalOpen()', () => {
component.modalClosed = true;

component.onModalOpen();

expect(component.modalClosed).toBe(false);
});

it('should run onModalClose()', () => {
component.modalClosed = true;

component.onModalClose(false);

expect(component.modalClosed).toBe(false);
});

it('should run cancelModal()', () => {
component.modalClosed = false;
component.showUpdate = false;
component.cancelModal();

expect(component.modalClosed).toBe(true);
expect(component.showUpdate).toBe(true);
});

it('should run ngOnDestroy()', () => {
spyOn(component.subscription, 'unsubscribe');

component.ngOnDestroy();

expect(component.subscription.unsubscribe).toHaveBeenCalledTimes(1);
});
});