]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/share/fm-editor/fm-editor.spec.ts
LP 2061136 follow-up: ng lint --fix
[Evergreen.git] / Open-ILS / src / eg2 / src / app / share / fm-editor / fm-editor.spec.ts
1 import { IdlService } from '@eg/core/idl.service';
2 import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
3 import { ToastService } from '@eg/share/toast/toast.service';
4 import { FmRecordEditorComponent } from './fm-editor.component';
5 import { FormatService } from '@eg/core/format.service';
6 import { OrgService } from '@eg/core/org.service';
7 import { PcrudService } from '@eg/core/pcrud.service';
8 import { waitForAsync } from '@angular/core/testing';
9 import { of } from 'rxjs';
10
11 describe('FmRecordEditorComponent', () => {
12     let component: FmRecordEditorComponent;
13     const mockPcrud = jasmine.createSpyObj<PcrudService>(['retrieve']);
14     beforeEach(() => {
15         const mockModal = jasmine.createSpyObj<NgbModal>(['open']);
16         const mockIdl = jasmine.createSpyObj<IdlService>(['pkeyMatches', 'getClassSelector', 'sortIdlFields'], {classes: {
17             'mock': {
18                 label: 'Mock Class',
19                 fields: [
20                     {datatype: 'link', name: 'linked_field', class: 'linked'}
21                 ]
22             },
23             'linked': {pkey: 'id'}
24         }});
25         mockIdl.pkeyMatches.and.returnValue(true);
26         mockIdl.getClassSelector.and.returnValue('label');
27         const mockToast = jasmine.createSpyObj<ToastService>(['success']);
28         const mockFormat = jasmine.createSpyObj<FormatService>([], {wsOrgTimezone: 'America/Los_Angeles'});
29         const mockOrg = jasmine.createSpyObj<OrgService>(['get']);
30         mockPcrud.retrieve.and.callFake((fmClass, pkey) => {
31             if (fmClass === 'mock') {
32                 return of({
33                     a: [],
34                     classname: 'mock',
35                     _isfieldmapper: true,
36                     'linked_field': () => 456
37                 });
38             } else {
39                 return of({
40                     id: () => 456,
41                     label: () => 'My Config Value'
42                 });
43             }
44         });
45
46         component = new FmRecordEditorComponent(
47             mockModal, mockIdl, mockToast, mockFormat, mockOrg, mockPcrud
48         );
49
50     });
51     describe('hidden fields', () => {
52         it('fetches only one row of linked values', waitForAsync(() => {
53             component.idlClass = 'mock';
54             component.readonlyFields = 'linked_field';
55             component.mode = 'update';
56             component.displayMode = 'inline';
57             component.recordId = 123;
58             component.ngOnInit();
59             // wait for ngOnInit to do its work
60             setTimeout(() => {
61                 expect(mockPcrud.retrieve).toHaveBeenCalledWith('mock', 123);
62                 expect(mockPcrud.retrieve).toHaveBeenCalledWith('linked', 456);
63             }, 100);
64         }));
65     });
66 });