]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/staff/admin/basic-admin-page.component.spec.ts
LP1917092: Filter shelving location grid to non-deleted by default
[Evergreen.git] / Open-ILS / src / eg2 / src / app / staff / admin / basic-admin-page.component.spec.ts
1 import { Component, Input } from '@angular/core';
2 import { ComponentFixture, TestBed } from '@angular/core/testing';
3 import { By } from '@angular/platform-browser';
4 import { ActivatedRoute, ParamMap } from '@angular/router';
5 import { IdlObject, IdlService } from '@eg/core/idl.service';
6 import { of } from 'rxjs';
7 import { BasicAdminPageComponent } from './basic-admin-page.component';
8
9 @Component({
10     selector: 'eg-title',
11     template: ''
12 })
13 class MockTitleComponent {
14     @Input() prefix: string;
15 }
16
17 @Component({
18     selector: 'eg-staff-banner',
19     template: ''
20 })
21 class MockStaffBannerComponent {
22     @Input() bannerText: string;
23 }
24
25 @Component({
26     selector: 'eg-admin-page',
27     template: ''
28 })
29 class MockAdminPageComponent {
30     @Input() configLinkBasePath: string;
31     @Input() defaultNewRecord: IdlObject;
32     @Input() disableOrgFilter: boolean;
33     @Input() hideClearFilters: boolean;
34     @Input() initialFilterValues: {[field: string]: string};
35     @Input() fieldOrder: string;
36     @Input() idlClass: string;
37     @Input() persistKeyPfx: string;
38     @Input() readonlyFields: string;
39     @Input() enableUndelete: boolean;
40     @Input() recordLabel: string;
41     @Input() orgDefaultAllowed: string;
42     @Input() orgFieldsDefaultingToContextOrg: string;
43     @Input() contextOrgSelectorPersistKey: string;
44     @Input() fieldOptions: any;
45     @Input() disableDelete: boolean;
46     @Input() disableEdit: boolean;
47     @Input() deleteConfirmation: boolean;
48 }
49
50 describe('Component: BasicAdminPage', () => {
51     let component: BasicAdminPageComponent;
52     let fixture: ComponentFixture<BasicAdminPageComponent>;
53     let idlServiceStub: Partial<IdlService>;
54     let routeStub: any;
55
56     beforeEach(() => {
57         idlServiceStub = {
58             create: (cls: string, seed?: []) => {
59                 return {
60                     a: seed || [],
61                     classname: cls,
62                     _isfieldmapper: true,
63
64                     field1(value: any): any {
65                         this.a[0] = value;
66                         return this.a[0];
67                     }
68                 };
69             },
70             classes: [{ tbl1: { table: 'schema1.table1' } }]
71         };
72
73         const emptyParamMap: ParamMap = {
74             has: (name: string) => false,
75             get: (name: string) => null,
76             getAll: (name: string) => [],
77             keys: []
78         };
79         const data = [{
80             schema: 'schema1',
81             table: 'table1',
82             defaultNewRecord: { field1: 'value1' },
83             enableUndelete: true,
84             initialFilterValues: { archived: 't' }
85         }];
86         const parentRoute = { url: of('') };
87         const snapshot = { parent: { url: [{ path: '' }] } };
88         routeStub = {
89             paramMap: of(emptyParamMap),
90             data: of(data),
91             parent: parentRoute,
92             snapshot
93         };
94
95         TestBed.configureTestingModule({
96             imports: [],
97             providers: [
98                 { provide: IdlService, useValue: idlServiceStub },
99                 { provide: ActivatedRoute, useValue: routeStub }
100             ],
101             declarations: [
102                 BasicAdminPageComponent,
103                 MockTitleComponent,
104                 MockStaffBannerComponent,
105                 MockAdminPageComponent
106             ]
107         });
108         fixture = TestBed.createComponent(BasicAdminPageComponent);
109         component = fixture.componentInstance;
110         component.idlClass = 'tbl1';
111         fixture.detectChanges();
112     });
113
114     it('sets default new record from routing data', () => {
115         const adminPage: MockAdminPageComponent = fixture.debugElement.query(
116             By.directive(MockAdminPageComponent)).componentInstance;
117         expect(adminPage.defaultNewRecord.a[0]).toEqual('value1');
118     });
119     it('sets enableUndelete from routing data', () => {
120         const adminPage: MockAdminPageComponent = fixture.debugElement.query(
121             By.directive(MockAdminPageComponent)).componentInstance;
122         expect(adminPage.enableUndelete).toEqual(true);
123     });
124     it('sets initialFilterValues from routing data', () => {
125         const adminPage: MockAdminPageComponent = fixture.debugElement.query(
126             By.directive(MockAdminPageComponent)).componentInstance;
127         expect(adminPage.initialFilterValues).toEqual({archived: 't'});
128     });
129 });