]> git.ipfire.org Git - thirdparty/paperless-ngx.git/blob
91b61ccc287fe31e86b0bad4eadfed30d2969ef5
[thirdparty/paperless-ngx.git] /
1 import {
2 ComponentFixture,
3 TestBed,
4 fakeAsync,
5 tick,
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'
13
14 describe('SaveViewConfigDialogComponent', () => {
15 let component: SaveViewConfigDialogComponent
16 let fixture: ComponentFixture<SaveViewConfigDialogComponent>
17 let modal: NgbActiveModal
18
19 beforeEach(fakeAsync(() => {
20 TestBed.configureTestingModule({
21 declarations: [
22 SaveViewConfigDialogComponent,
23 TextComponent,
24 CheckComponent,
25 ],
26 providers: [NgbActiveModal],
27 imports: [NgbModalModule, FormsModule, ReactiveFormsModule],
28 }).compileComponents()
29
30 modal = TestBed.inject(NgbActiveModal)
31 fixture = TestBed.createComponent(SaveViewConfigDialogComponent)
32 component = fixture.componentInstance
33 fixture.detectChanges()
34 tick()
35 }))
36
37 it('should support default name', () => {
38 const name = 'Tag: Inbox'
39 let result
40 component.saveClicked.subscribe((saveResult) => (result = saveResult))
41 component.defaultName = name
42 component.save()
43 expect(component.defaultName).toEqual(name)
44 expect(result).toEqual({
45 name,
46 showInSideBar: false,
47 showOnDashboard: false,
48 })
49 })
50
51 it('should support user input', () => {
52 const name = 'Tag: Inbox'
53 let result
54 component.saveClicked.subscribe((saveResult) => (result = saveResult))
55
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
61
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
67
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
73
74 component.save()
75 expect(result).toEqual({
76 name,
77 showInSideBar: true,
78 showOnDashboard: true,
79 })
80 })
81
82 it('should support default name', () => {
83 const saveClickedSpy = jest.spyOn(component.saveClicked, 'emit')
84 const modalCloseSpy = jest.spyOn(modal, 'close')
85 component.cancel()
86 expect(saveClickedSpy).not.toHaveBeenCalled()
87 expect(modalCloseSpy).toHaveBeenCalled()
88 })
89 })