]> git.evergreen-ils.org Git - Evergreen.git/blob - Open-ILS/src/eg2/src/app/staff/admin/basic-admin-page.component.spec.ts
LP2061136 - Stamping 1405 DB upgrade script
[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() fieldOrder: string;
34     @Input() idlClass: string;
35     @Input() persistKeyPfx: string;
36     @Input() readonlyFields: string;
37 }
38
39 describe('Component: BasicAdminPage', () => {
40     let component: BasicAdminPageComponent;
41     let fixture: ComponentFixture<BasicAdminPageComponent>;
42     let idlServiceStub: Partial<IdlService>;
43     let routeStub: any;
44
45     beforeEach(() => {
46         idlServiceStub = {
47             create: (cls: string, seed?: []) => {
48                 return {
49                     a: seed || [],
50                     classname: cls,
51                     _isfieldmapper: true,
52
53                     field1(value: any): any {
54                         this.a[0] = value;
55                         return this.a[0];
56                     }
57                 };
58             },
59             classes: [{ tbl1: { table: 'schema1.table1' } }]
60         };
61
62         const emptyParamMap: ParamMap = {
63             has: (name: string) => false,
64             get: (name: string) => null,
65             getAll: (name: string) => [],
66             keys: []
67         };
68         const data = [{
69             schema: 'schema1',
70             table: 'table1',
71             defaultNewRecord: { field1: 'value1' }
72         }];
73         const parentRoute = { url: of('') };
74         const snapshot = { parent: { url: [{ path: '' }] } };
75         routeStub = {
76             paramMap: of(emptyParamMap),
77             data: of(data),
78             parent: parentRoute,
79             snapshot
80         };
81
82         TestBed.configureTestingModule({
83             imports: [],
84             providers: [
85                 { provide: IdlService, useValue: idlServiceStub },
86                 { provide: ActivatedRoute, useValue: routeStub }
87             ],
88             declarations: [
89                 BasicAdminPageComponent,
90                 MockTitleComponent,
91                 MockStaffBannerComponent,
92                 MockAdminPageComponent
93             ]
94         });
95         fixture = TestBed.createComponent(BasicAdminPageComponent);
96         component = fixture.componentInstance;
97         component.idlClass = 'tbl1';
98         fixture.detectChanges();
99     });
100
101     it('sets default new record from routing data', () => {
102         const adminPage: MockAdminPageComponent = fixture.debugElement.query(
103             By.directive(MockAdminPageComponent)).componentInstance;
104         expect(adminPage.defaultNewRecord.a[0]).toEqual('value1');
105     });
106 });