6 } from '@angular/core/testing'
7 import { FormsModule, ReactiveFormsModule } from '@angular/forms'
8 import { By } from '@angular/platform-browser'
9 import { NgbActiveModal, NgbModalModule } from '@ng-bootstrap/ng-bootstrap'
10 import { CheckComponent } from '../../common/input/check/check.component'
11 import { TextComponent } from '../../common/input/text/text.component'
12 import { SaveViewConfigDialogComponent } from './save-view-config-dialog.component'
14 describe('SaveViewConfigDialogComponent', () => {
15 let component: SaveViewConfigDialogComponent
16 let fixture: ComponentFixture<SaveViewConfigDialogComponent>
17 let modal: NgbActiveModal
19 beforeEach(fakeAsync(() => {
20 TestBed.configureTestingModule({
22 SaveViewConfigDialogComponent,
26 providers: [NgbActiveModal],
27 imports: [NgbModalModule, FormsModule, ReactiveFormsModule],
28 }).compileComponents()
30 modal = TestBed.inject(NgbActiveModal)
31 fixture = TestBed.createComponent(SaveViewConfigDialogComponent)
32 component = fixture.componentInstance
33 fixture.detectChanges()
37 it('should support default name', () => {
38 const name = 'Tag: Inbox'
40 component.saveClicked.subscribe((saveResult) => (result = saveResult))
41 component.defaultName = name
43 expect(component.defaultName).toEqual(name)
44 expect(result).toEqual({
47 showOnDashboard: false,
51 it('should support user input', () => {
52 const name = 'Tag: Inbox'
54 component.saveClicked.subscribe((saveResult) => (result = saveResult))
56 const nameInput = fixture.debugElement
57 .query(By.directive(TextComponent))
58 .query(By.css('input'))
59 nameInput.nativeElement.value = name
60 component.saveViewConfigForm.get('name').patchValue(name) // normally done by angular
62 const sidebarCheckInput = fixture.debugElement
63 .queryAll(By.directive(CheckComponent))[0]
64 .query(By.css('input'))
65 sidebarCheckInput.nativeElement.checked = true
66 component.saveViewConfigForm.get('showInSideBar').patchValue(true) // normally done by angular
68 const dashboardCheckInput = fixture.debugElement
69 .queryAll(By.directive(CheckComponent))[1]
70 .query(By.css('input'))
71 dashboardCheckInput.nativeElement.checked = true
72 component.saveViewConfigForm.get('showOnDashboard').patchValue(true) // normally done by angular
75 expect(result).toEqual({
78 showOnDashboard: true,
82 it('should support default name', () => {
83 const saveClickedSpy = jest.spyOn(component.saveClicked, 'emit')
84 const modalCloseSpy = jest.spyOn(modal, 'close')
86 expect(saveClickedSpy).not.toHaveBeenCalled()
87 expect(modalCloseSpy).toHaveBeenCalled()