blob: c5540a6e00b5631c611f70533f45d37629dc755f [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MetronDialogComponent } from './metron-dialog.component';
import { DialogService } from 'app/service/dialog.service';
import { DialogType } from 'app/model/dialog-type';
describe('MetronDialogComponent', () => {
let component: MetronDialogComponent;
let fixture: ComponentFixture<MetronDialogComponent>;
let dialogService: DialogService;
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [MetronDialogComponent],
providers: [DialogService]
});
fixture = TestBed.createComponent(MetronDialogComponent);
component = fixture.componentInstance;
fixture.detectChanges();
dialogService = TestBed.get(DialogService);
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should show when showModal is true', () => {
component.showModal = false;
fixture.detectChanges();
let modal = fixture.nativeElement.querySelector('[data-qe-id="modal"]');
expect(modal).toBeNull();
component.showModal = true;
fixture.detectChanges();
modal = fixture.nativeElement.querySelector('[data-qe-id="modal"]');
expect(modal).toBeTruthy();
});
it('should display the passed message', () => {
const testMessage = 'This is a confirmation message';
dialogService.launchDialog(testMessage);
fixture.detectChanges();
const modalMessage = fixture.nativeElement.querySelector(
'[data-qe-id="modal-message"]'
);
expect(modalMessage.textContent).toBe(testMessage);
});
it('should display the correct title based on the dialog type', () => {
dialogService.launchDialog('');
fixture.detectChanges();
let modalTitle = fixture.nativeElement.querySelector(
'[data-qe-id="modal-title"]'
);
expect(modalTitle.textContent).toBe('Confirmation');
dialogService.launchDialog('', DialogType.Error);
fixture.detectChanges();
modalTitle = fixture.nativeElement.querySelector(
'[data-qe-id="modal-title"]'
);
expect(modalTitle.textContent).toBe('Error');
});
it('should execute cancel() when the cancel button is clicked', () => {
dialogService.launchDialog('');
const cancelSpy = spyOn(component, 'cancel').and.callThrough();
fixture.detectChanges();
const cancelButton = fixture.nativeElement.querySelector(
'[data-qe-id="modal-cancel"]'
);
cancelButton.click();
expect(cancelSpy).toHaveBeenCalled();
expect(component.showModal).toBe(false);
});
it('should execute confirm() when the ok button is clicked', () => {
dialogService.launchDialog('');
const confirmSpy = spyOn(component, 'confirm').and.callThrough();
fixture.detectChanges();
const confirmButton = fixture.nativeElement.querySelector(
'[data-qe-id="modal-confirm"]'
);
confirmButton.click();
expect(confirmSpy).toHaveBeenCalled();
expect(component.showModal).toBe(false);
});
it('should only display a cancel() button when the dialog type is Error', () => {
dialogService.launchDialog('', DialogType.Error);
fixture.detectChanges();
const errorCancelButton = fixture.nativeElement.querySelector(
'[data-qe-id="modal-error-cancel"]'
);
expect(errorCancelButton).toBeTruthy();
const confirmCancelButton = fixture.nativeElement.querySelector(
'[data-qe-id="modal-cancel"]'
);
expect(confirmCancelButton).toBeNull();
const confirmApproveButton = fixture.nativeElement.querySelector(
'[data-qe-id="modal-confirm"]'
);
expect(confirmApproveButton).toBeNull();
});
});