Files
dspace-angular/src/app/item-page/simple/field-components/specific-field/geospatial/geospatial-item-page-field.component.spec.ts
Yury Bondarenko c147354ee1 Fix failing unit test
According to the Angular docs it should be possible to "trigger" the different states of the @defer block
https://angular.dev/guide/templates/defer#testing-defer-blocks
...but I wasn't able to get this example to work either.

This was the only case where we directly test an inner component's reflected inputs, so IMO it makes sense to "let it go".
2025-06-11 16:27:12 +02:00

78 lines
2.9 KiB
TypeScript

import {
ChangeDetectionStrategy,
NO_ERRORS_SCHEMA,
} from '@angular/core';
import {
ComponentFixture,
TestBed,
waitForAsync,
} from '@angular/core/testing';
import { Store } from '@ngrx/store';
import { MockStore } from '@ngrx/store/testing';
import {
TranslateLoader,
TranslateModule,
} from '@ngx-translate/core';
import {
APP_CONFIG,
APP_DATA_SERVICES_MAP,
} from '../../../../../../config/app-config.interface';
import { environment } from '../../../../../../environments/environment';
import { BrowseDefinitionDataService } from '../../../../../core/browse/browse-definition-data.service';
import { ITEM } from '../../../../../core/shared/item.resource-type';
import { BrowseDefinitionDataServiceStub } from '../../../../../shared/testing/browse-definition-data-service.stub';
import { TranslateLoaderMock } from '../../../../../shared/testing/translate-loader.mock';
import { MetadataValuesComponent } from '../../../../field-components/metadata-values/metadata-values.component';
import { mockItemWithMetadataFieldsAndValue } from '../item-page-field.component.spec';
import { GeospatialItemPageFieldComponent } from './geospatial-item-page-field.component';
let comp: GeospatialItemPageFieldComponent;
let fixture: ComponentFixture<GeospatialItemPageFieldComponent>;
const mockValue = 'Point ( +174.000000 -042.000000 )';
const mockField = 'dcterms.spatial';
const mockLabel = 'Test location';
const mockFields = [mockField];
const mockDataServiceMap: any = new Map([
[ITEM.value, () => import('../../../../../shared/testing/test-data-service.mock').then(m => m.TestDataService)],
]);
describe('GeospatialItemPageFieldComponent', () => {
beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({
imports: [GeospatialItemPageFieldComponent, MetadataValuesComponent, TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateLoaderMock,
},
})],
providers: [
{ provide: APP_CONFIG, useValue: environment },
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub },
{ provide: Store, useValue: MockStore },
{ provide: APP_DATA_SERVICES_MAP, useValue: mockDataServiceMap },
],
schemas: [NO_ERRORS_SCHEMA],
}).overrideComponent(GeospatialItemPageFieldComponent, {
set: { changeDetection: ChangeDetectionStrategy.OnPush },
}).compileComponents();
}));
beforeEach(waitForAsync(() => {
fixture = TestBed.createComponent(GeospatialItemPageFieldComponent);
comp = fixture.componentInstance;
comp.item = mockItemWithMetadataFieldsAndValue([mockField], mockValue);
comp.pointFields = mockFields;
comp.bboxFields = mockFields;
comp.label = mockLabel;
fixture.detectChanges();
}));
it('should initialize a map from passed points', () => {
expect(comp.bboxes).toContain(mockValue);
expect(comp.points).toContain(mockValue);
});
});