]> git.ipfire.org Git - thirdparty/paperless-ngx.git/blob
52789fb49c0bda706051dea21770ed468906e730
[thirdparty/paperless-ngx.git] /
1 import { HttpClientTestingModule } from '@angular/common/http/testing'
2 import { ComponentFixture, TestBed } from '@angular/core/testing'
3 import { FormsModule, ReactiveFormsModule } from '@angular/forms'
4 import { NgbActiveModal, NgbModule } from '@ng-bootstrap/ng-bootstrap'
5 import { NgSelectModule } from '@ng-select/ng-select'
6 import { of } from 'rxjs'
7 import { IfOwnerDirective } from 'src/app/directives/if-owner.directive'
8 import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive'
9 import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe'
10 import { CorrespondentService } from 'src/app/services/rest/correspondent.service'
11 import { DocumentTypeService } from 'src/app/services/rest/document-type.service'
12 import { MailRuleService } from 'src/app/services/rest/mail-rule.service'
13 import { StoragePathService } from 'src/app/services/rest/storage-path.service'
14 import { SettingsService } from 'src/app/services/settings.service'
15 import { NumberComponent } from '../../input/number/number.component'
16 import { PermissionsGroupComponent } from '../../input/permissions/permissions-group/permissions-group.component'
17 import { PermissionsUserComponent } from '../../input/permissions/permissions-user/permissions-user.component'
18 import { SelectComponent } from '../../input/select/select.component'
19 import { TagsComponent } from '../../input/tags/tags.component'
20 import { TextComponent } from '../../input/text/text.component'
21 import { EditDialogMode } from '../edit-dialog.component'
22 import { ConsumptionTemplateEditDialogComponent } from './consumption-template-edit-dialog.component'
23
24 describe('ConsumptionTemplateEditDialogComponent', () => {
25 let component: ConsumptionTemplateEditDialogComponent
26 let settingsService: SettingsService
27 let fixture: ComponentFixture<ConsumptionTemplateEditDialogComponent>
28
29 beforeEach(() => {
30 TestBed.configureTestingModule({
31 declarations: [
32 ConsumptionTemplateEditDialogComponent,
33 IfPermissionsDirective,
34 IfOwnerDirective,
35 SelectComponent,
36 TextComponent,
37 NumberComponent,
38 TagsComponent,
39 PermissionsUserComponent,
40 PermissionsGroupComponent,
41 SafeHtmlPipe,
42 ],
43 providers: [
44 NgbActiveModal,
45 {
46 provide: CorrespondentService,
47 useValue: {
48 listAll: () =>
49 of({
50 results: [
51 {
52 id: 1,
53 username: 'c1',
54 },
55 ],
56 }),
57 },
58 },
59 {
60 provide: DocumentTypeService,
61 useValue: {
62 listAll: () =>
63 of({
64 results: [
65 {
66 id: 1,
67 username: 'dt1',
68 },
69 ],
70 }),
71 },
72 },
73 {
74 provide: StoragePathService,
75 useValue: {
76 listAll: () =>
77 of({
78 results: [
79 {
80 id: 1,
81 username: 'sp1',
82 },
83 ],
84 }),
85 },
86 },
87 {
88 provide: MailRuleService,
89 useValue: {
90 listAll: () =>
91 of({
92 results: [],
93 }),
94 },
95 },
96 ],
97 imports: [
98 HttpClientTestingModule,
99 FormsModule,
100 ReactiveFormsModule,
101 NgSelectModule,
102 NgbModule,
103 ],
104 }).compileComponents()
105
106 fixture = TestBed.createComponent(ConsumptionTemplateEditDialogComponent)
107 settingsService = TestBed.inject(SettingsService)
108 settingsService.currentUser = { id: 99, username: 'user99' }
109 component = fixture.componentInstance
110
111 fixture.detectChanges()
112 })
113
114 it('should support create and edit modes', () => {
115 component.dialogMode = EditDialogMode.CREATE
116 const createTitleSpy = jest.spyOn(component, 'getCreateTitle')
117 const editTitleSpy = jest.spyOn(component, 'getEditTitle')
118 fixture.detectChanges()
119 expect(createTitleSpy).toHaveBeenCalled()
120 expect(editTitleSpy).not.toHaveBeenCalled()
121 component.dialogMode = EditDialogMode.EDIT
122 fixture.detectChanges()
123 expect(editTitleSpy).toHaveBeenCalled()
124 })
125 })