Skip to content

Commit f03ed89

Browse files
117287: Removed method calls returning observables from the metadata schema registry
1 parent c74c178 commit f03ed89

File tree

5 files changed

+95
-159
lines changed

5 files changed

+95
-159
lines changed

src/app/admin/admin-registries/metadata-schema/metadata-field-form/metadata-field-form.component.spec.ts

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -9,53 +9,35 @@ import { TranslateModule } from '@ngx-translate/core';
99
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
1010
import { EnumKeysPipe } from '../../../../shared/utils/enum-keys-pipe';
1111
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
12-
import { NO_ERRORS_SCHEMA } from '@angular/core';
12+
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
1313
import { MetadataField } from '../../../../core/metadata/metadata-field.model';
1414
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
15+
import { getMockFormBuilderService } from '../../../../shared/mocks/form-builder-service.mock';
16+
import { RegistryServiceStub } from '../../../../shared/testing/registry.service.stub';
1517

1618
describe('MetadataFieldFormComponent', () => {
1719
let component: MetadataFieldFormComponent;
1820
let fixture: ComponentFixture<MetadataFieldFormComponent>;
19-
let registryService: RegistryService;
21+
22+
let registryService: RegistryServiceStub;
2023

2124
const metadataSchema = Object.assign(new MetadataSchema(), {
2225
id: 1,
2326
namespace: 'fake schema',
2427
prefix: 'fake'
2528
});
2629

27-
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
28-
const registryServiceStub = {
29-
getActiveMetadataField: () => observableOf(undefined),
30-
createMetadataField: (field: MetadataField) => observableOf(field),
31-
updateMetadataField: (field: MetadataField) => observableOf(field),
32-
cancelEditMetadataField: () => {
33-
},
34-
cancelEditMetadataSchema: () => {
35-
},
36-
clearMetadataFieldRequests: () => observableOf(undefined)
37-
};
38-
const formBuilderServiceStub = {
39-
createFormGroup: () => {
40-
return {
41-
patchValue: () => {
42-
},
43-
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void {
44-
},
45-
};
46-
}
47-
};
48-
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
49-
5030
beforeEach(waitForAsync(() => {
31+
registryService = new RegistryServiceStub();
32+
5133
return TestBed.configureTestingModule({
5234
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule],
5335
declarations: [MetadataFieldFormComponent, EnumKeysPipe],
5436
providers: [
55-
{ provide: RegistryService, useValue: registryServiceStub },
56-
{ provide: FormBuilderService, useValue: formBuilderServiceStub }
37+
{ provide: RegistryService, useValue: registryService },
38+
{ provide: FormBuilderService, useValue: getMockFormBuilderService() }
5739
],
58-
schemas: [NO_ERRORS_SCHEMA]
40+
schemas: [CUSTOM_ELEMENTS_SCHEMA]
5941
}).compileComponents();
6042
}));
6143

src/app/admin/admin-registries/metadata-schema/metadata-schema.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ <h3>{{'admin.registries.schema.fields.head' | translate}}</h3>
3232
</thead>
3333
<tbody>
3434
<tr *ngFor="let field of fields?.page"
35-
[ngClass]="{'table-primary' : isActive(field) | async}">
35+
[ngClass]="{'table-primary' : (activeField$ | async)?.id === field.id}">
3636
<td>
3737
<label class="mb-0">
3838
<input type="checkbox"
39-
[checked]="isSelected(field) | async"
39+
[checked]="(selectedMetadataFieldIDs$ | async)?.includes(field.id)"
4040
(change)="selectMetadataField(field, $event)">
4141
</label>
4242
</td>

src/app/admin/admin-registries/metadata-schema/metadata-schema.component.spec.ts

Lines changed: 25 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,36 @@ import { of as observableOf } from 'rxjs';
44
import { buildPaginatedList } from '../../../core/data/paginated-list.model';
55
import { TranslateModule } from '@ngx-translate/core';
66
import { CommonModule } from '@angular/common';
7-
import { ActivatedRoute, Router } from '@angular/router';
7+
import { ActivatedRoute } from '@angular/router';
88
import { By } from '@angular/platform-browser';
99
import { RegistryService } from '../../../core/registry/registry.service';
1010
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
1111
import { EnumKeysPipe } from '../../../shared/utils/enum-keys-pipe';
1212
import { PaginationComponent } from '../../../shared/pagination/pagination.component';
1313
import { HostWindowServiceStub } from '../../../shared/testing/host-window-service.stub';
1414
import { HostWindowService } from '../../../shared/host-window.service';
15-
import { RouterStub } from '../../../shared/testing/router.stub';
1615
import { RouterTestingModule } from '@angular/router/testing';
1716
import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub';
18-
import { NO_ERRORS_SCHEMA } from '@angular/core';
17+
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
1918
import { NotificationsService } from '../../../shared/notifications/notifications.service';
2019
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
21-
import { RestResponse } from '../../../core/cache/response.models';
2220
import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
2321
import { MetadataField } from '../../../core/metadata/metadata-field.model';
2422
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
2523
import { VarDirective } from '../../../shared/utils/var.directive';
2624
import { PaginationService } from '../../../core/pagination/pagination.service';
2725
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
26+
import { RegistryServiceStub } from '../../../shared/testing/registry.service.stub';
2827

2928
describe('MetadataSchemaComponent', () => {
3029
let comp: MetadataSchemaComponent;
3130
let fixture: ComponentFixture<MetadataSchemaComponent>;
32-
let registryService: RegistryService;
33-
const mockSchemasList = [
31+
32+
let registryService: RegistryServiceStub;
33+
let activatedRoute: ActivatedRouteStub;
34+
let paginationService: PaginationServiceStub;
35+
36+
const mockSchemasList: MetadataSchema[] = [
3437
{
3538
id: 1,
3639
_links: {
@@ -51,8 +54,8 @@ describe('MetadataSchemaComponent', () => {
5154
prefix: 'mock',
5255
namespace: 'http://dspace.org/mockschema'
5356
}
54-
];
55-
const mockFieldsList = [
57+
] as MetadataSchema[];
58+
const mockFieldsList: MetadataField[] = [
5659
{
5760
id: 1,
5861
_links: {
@@ -101,47 +104,29 @@ describe('MetadataSchemaComponent', () => {
101104
scopeNote: null,
102105
schema: createSuccessfulRemoteDataObject$(mockSchemasList[1])
103106
}
104-
];
105-
const mockSchemas = createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockSchemasList));
106-
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
107-
const registryServiceStub = {
108-
getMetadataSchemas: () => mockSchemas,
109-
getMetadataFieldsBySchema: (schema: MetadataSchema) => createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockFieldsList.filter((value) => value.id === 3 || value.id === 4))),
110-
getMetadataSchemaByPrefix: (schemaName: string) => createSuccessfulRemoteDataObject$(mockSchemasList.filter((value) => value.prefix === schemaName)[0]),
111-
getActiveMetadataField: () => observableOf(undefined),
112-
getSelectedMetadataFields: () => observableOf([]),
113-
editMetadataField: (schema) => {
114-
},
115-
cancelEditMetadataField: () => {
116-
},
117-
deleteMetadataField: () => observableOf(new RestResponse(true, 200, 'OK')),
118-
deselectAllMetadataField: () => {
119-
},
120-
clearMetadataFieldRequests: () => observableOf(undefined)
121-
};
122-
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
107+
] as MetadataField[];
123108
const schemaNameParam = 'mock';
124-
const activatedRouteStub = Object.assign(new ActivatedRouteStub(), {
125-
params: observableOf({
126-
schemaName: schemaNameParam
127-
})
128-
});
129-
130-
const paginationService = new PaginationServiceStub();
131109

132110
beforeEach(waitForAsync(() => {
111+
activatedRoute = new ActivatedRouteStub({
112+
schemaName: schemaNameParam,
113+
});
114+
paginationService = new PaginationServiceStub();
115+
registryService = new RegistryServiceStub();
116+
spyOn(registryService, 'getMetadataFieldsBySchema').and.returnValue(createSuccessfulRemoteDataObject$(buildPaginatedList(null, mockFieldsList.filter((value) => value.id === 3 || value.id === 4))));
117+
spyOn(registryService, 'getMetadataSchemaByPrefix').and.callFake((schemaName) => createSuccessfulRemoteDataObject$(mockSchemasList.filter((value) => value.prefix === schemaName)[0]));
118+
133119
TestBed.configureTestingModule({
134120
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule],
135121
declarations: [MetadataSchemaComponent, PaginationComponent, EnumKeysPipe, VarDirective],
136122
providers: [
137-
{ provide: RegistryService, useValue: registryServiceStub },
138-
{ provide: ActivatedRoute, useValue: activatedRouteStub },
123+
{ provide: RegistryService, useValue: registryService },
124+
{ provide: ActivatedRoute, useValue: activatedRoute },
139125
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
140-
{ provide: Router, useValue: new RouterStub() },
141126
{ provide: PaginationService, useValue: paginationService },
142127
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }
143128
],
144-
schemas: [NO_ERRORS_SCHEMA]
129+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
145130
}).compileComponents();
146131
}));
147132

@@ -190,7 +175,7 @@ describe('MetadataSchemaComponent', () => {
190175
}));
191176

192177
it('should cancel editing the selected field when clicked again', waitForAsync(() => {
193-
spyOn(registryService, 'getActiveMetadataField').and.returnValue(observableOf(mockFieldsList[2] as MetadataField));
178+
comp.activeField$ = observableOf(mockFieldsList[2] as MetadataField);
194179
spyOn(registryService, 'cancelEditMetadataField');
195180
row.click();
196181
fixture.detectChanges();
@@ -205,7 +190,7 @@ describe('MetadataSchemaComponent', () => {
205190

206191
beforeEach(() => {
207192
spyOn(registryService, 'deleteMetadataField').and.callThrough();
208-
spyOn(registryService, 'getSelectedMetadataFields').and.returnValue(observableOf(selectedFields as MetadataField[]));
193+
comp.selectedMetadataFieldIDs$ = observableOf(selectedFields.map((metadataField: MetadataField) => metadataField.id));
209194
comp.deleteFields();
210195
fixture.detectChanges();
211196
});

0 commit comments

Comments
 (0)