Modal Service tests.
This commit is contained in:
parent
7132e26f8a
commit
68550a2276
@ -15,7 +15,7 @@ export class ModalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
registerModal(newModal: Modal): void {
|
registerModal(newModal: Modal): void {
|
||||||
let modal = this.findModal(newModal.modalId);
|
let modal = this.modals.find(modal => modal.modalId === newModal.modalId);
|
||||||
|
|
||||||
// Delete existing to replace the modal
|
// Delete existing to replace the modal
|
||||||
if (modal) {
|
if (modal) {
|
||||||
@ -26,7 +26,7 @@ export class ModalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open(modalId: string): void {
|
open(modalId: string): void {
|
||||||
let modal = this.findModal(modalId);
|
let modal = this.modals.find(modal => modal.modalId === modalId);
|
||||||
|
|
||||||
if (modal) {
|
if (modal) {
|
||||||
modal.animate = (this.userOptions.show_animations);
|
modal.animate = (this.userOptions.show_animations);
|
||||||
@ -42,7 +42,7 @@ export class ModalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
close(modalId: string, checkBlocking = false): void {
|
close(modalId: string, checkBlocking = false): void {
|
||||||
let modal = this.findModal(modalId);
|
let modal = this.modals.find(modal => modal.modalId === modalId);
|
||||||
|
|
||||||
if (modal) {
|
if (modal) {
|
||||||
if (checkBlocking && modal.blocking) {
|
if (checkBlocking && modal.blocking) {
|
||||||
@ -54,14 +54,5 @@ export class ModalService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private findModal(modalId: string): Modal {
|
|
||||||
for (let modal of this.modals) {
|
|
||||||
if (modal.modalId === modalId) {
|
|
||||||
return modal;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import { SharedModule } from '../../../../src/app/shared/shared.module';
|
|||||||
import { ModalService } from '../../../../src/app/shared/services';
|
import { ModalService } from '../../../../src/app/shared/services';
|
||||||
import { Modal } from '../../../../src/app/shared/modal/modal.component';
|
import { Modal } from '../../../../src/app/shared/modal/modal.component';
|
||||||
|
|
||||||
fdescribe('Modal', () => {
|
describe('Modal', () => {
|
||||||
let component: Modal,
|
let component: Modal,
|
||||||
fixture: ComponentFixture<Modal>;
|
fixture: ComponentFixture<Modal>;
|
||||||
|
|
||||||
@ -63,5 +63,26 @@ fdescribe('Modal', () => {
|
|||||||
expect(called).toEqual(true);
|
expect(called).toEqual(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('handles the Escape key', () => {
|
||||||
|
const keyUp = component['keyup'].bind(component);
|
||||||
|
|
||||||
|
(<any>component.modalService).close = (id, checkBlocking) => {
|
||||||
|
expect(checkBlocking).toEqual(true);
|
||||||
|
};
|
||||||
|
|
||||||
|
keyUp(<any>{ keyCode: 27 });
|
||||||
|
});
|
||||||
|
|
||||||
|
it('handles the Enter key', () => {
|
||||||
|
const keyUp = component['keyup'].bind(component);
|
||||||
|
let called = false;
|
||||||
|
|
||||||
|
component.defaultActionElement = { nativeElement: {
|
||||||
|
click: () => called = true
|
||||||
|
} };
|
||||||
|
|
||||||
|
keyUp(<any>{ keyCode: 13 });
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -0,0 +1,93 @@
|
|||||||
|
import { RouterTestingModule } from '@angular/router/testing';
|
||||||
|
import { TestBed, getTestBed } from '@angular/core/testing'
|
||||||
|
import {
|
||||||
|
HttpClientTestingModule,
|
||||||
|
HttpTestingController
|
||||||
|
} from '@angular/common/http/testing';
|
||||||
|
|
||||||
|
import { SharedModule } from '../../../../src/app/shared/shared.module';
|
||||||
|
import { AuthService } from '../../../../src/app/shared/services';
|
||||||
|
|
||||||
|
import { ModalService } from '../../../../src/app/shared/modal/modal.service';
|
||||||
|
|
||||||
|
describe('ModalService', () => {
|
||||||
|
let injector: TestBed;
|
||||||
|
let service: ModalService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
imports: [
|
||||||
|
RouterTestingModule,
|
||||||
|
HttpClientTestingModule,
|
||||||
|
SharedModule
|
||||||
|
],
|
||||||
|
providers: [ModalService, AuthService]
|
||||||
|
});
|
||||||
|
|
||||||
|
injector = getTestBed();
|
||||||
|
service = injector.get(ModalService);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should be created', () => {
|
||||||
|
expect(service).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('allows a modal to register', () => {
|
||||||
|
service.registerModal(<any>{ modalId: 'MODAL' });
|
||||||
|
|
||||||
|
expect(service['modals'].length).toEqual(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('overwrites when registering same modalId', () => {
|
||||||
|
service.registerModal(<any>{ modalId: 'MODAL' });
|
||||||
|
service.registerModal(<any>{ modalId: 'MODAL' });
|
||||||
|
|
||||||
|
expect(service['modals'].length).toEqual(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can open a modal', done => {
|
||||||
|
const modal = <any>{
|
||||||
|
modalId: 'TEST',
|
||||||
|
focusElement: {
|
||||||
|
nativeElement: {
|
||||||
|
focus: () => {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
service['modals'].push(modal);
|
||||||
|
service['userOptions'] = <any>{ show_animations: true };
|
||||||
|
|
||||||
|
service.open(modal.modalId);
|
||||||
|
|
||||||
|
setTimeout(() => {
|
||||||
|
expect(modal.isOpen).toEqual(true);
|
||||||
|
|
||||||
|
modal.focusElement = null;
|
||||||
|
service.open(modal.modalId);
|
||||||
|
service.open('nope');
|
||||||
|
|
||||||
|
done();
|
||||||
|
}, 110);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('can close a modal', () => {
|
||||||
|
const modal = <any>{
|
||||||
|
modalId: 'TEST',
|
||||||
|
blocking: true
|
||||||
|
};
|
||||||
|
|
||||||
|
service['modals'].push(modal);
|
||||||
|
|
||||||
|
service.close('nope');
|
||||||
|
|
||||||
|
service.close('TEST');
|
||||||
|
expect(modal.isOpen).toEqual(false);
|
||||||
|
|
||||||
|
modal.isOpen = true;
|
||||||
|
service.close('TEST', true);
|
||||||
|
expect(modal.isOpen).toEqual(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
Reference in New Issue
Block a user