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';
13 class MockTitleComponent {
14 @Input() prefix: string;
18 selector: 'eg-staff-banner',
21 class MockStaffBannerComponent {
22 @Input() bannerText: string;
26 selector: 'eg-admin-page',
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;
50 describe('Component: BasicAdminPage', () => {
51 let component: BasicAdminPageComponent;
52 let fixture: ComponentFixture<BasicAdminPageComponent>;
53 let idlServiceStub: Partial<IdlService>;
58 create: (cls: string, seed?: []) => {
64 field1(value: any): any {
70 classes: [{ tbl1: { table: 'schema1.table1' } }]
73 const emptyParamMap: ParamMap = {
74 has: (name: string) => false,
75 get: (name: string) => null,
76 getAll: (name: string) => [],
82 defaultNewRecord: { field1: 'value1' },
84 initialFilterValues: { archived: 't' }
86 const parentRoute = { url: of('') };
87 const snapshot = { parent: { url: [{ path: '' }] } };
89 paramMap: of(emptyParamMap),
95 TestBed.configureTestingModule({
98 { provide: IdlService, useValue: idlServiceStub },
99 { provide: ActivatedRoute, useValue: routeStub }
102 BasicAdminPageComponent,
104 MockStaffBannerComponent,
105 MockAdminPageComponent
108 fixture = TestBed.createComponent(BasicAdminPageComponent);
109 component = fixture.componentInstance;
110 component.idlClass = 'tbl1';
111 fixture.detectChanges();
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');
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);
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'});