diff --git a/src/app/access-control/group-registry/groups-registry.component.spec.ts b/src/app/access-control/group-registry/groups-registry.component.spec.ts index 6a6b9b4dab..9007b3ea69 100644 --- a/src/app/access-control/group-registry/groups-registry.component.spec.ts +++ b/src/app/access-control/group-registry/groups-registry.component.spec.ts @@ -37,6 +37,7 @@ import { DSONameServiceMock, UNDEFINED_NAME } from '../../shared/mocks/dso-name. import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { provideMockStore } from '@ngrx/store/testing'; import { ConfigurationDataService } from '../../core/data/configuration-data.service'; +import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface'; describe('GroupsRegistryComponent', () => { let component: GroupsRegistryComponent; @@ -191,6 +192,7 @@ describe('GroupsRegistryComponent', () => { { provide: AuthorizationDataService, useValue: authorizationService }, { provide: PaginationService, useValue: paginationService }, { provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeByHrefSubstring']) }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, provideMockStore(), ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.spec.ts b/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.spec.ts index f74ff68dab..13c9cf69f2 100644 --- a/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.spec.ts +++ b/src/app/admin/admin-registries/bitstream-formats/bitstream-formats.component.spec.ts @@ -30,6 +30,7 @@ import { GroupDataService } from '../../../core/eperson/group-data.service'; import { ConfigurationDataService } from '../../../core/data/configuration-data.service'; import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; describe('BitstreamFormatsComponent', () => { let comp: BitstreamFormatsComponent; @@ -120,6 +121,7 @@ describe('BitstreamFormatsComponent', () => { imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, BitstreamFormatsComponent, PaginationComponent, EnumKeysPipe], providers: [ provideMockStore(), + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, {provide: BitstreamFormatDataService, useValue: bitstreamFormatService}, {provide: HostWindowService, useValue: new HostWindowServiceStub(0)}, {provide: NotificationsService, useValue: notificationsServiceStub}, diff --git a/src/app/browse-by/browse-by-taxonomy-page/browse-by-taxonomy-page.component.ts b/src/app/browse-by/browse-by-taxonomy-page/browse-by-taxonomy-page.component.ts index e05ec22a13..5687822c89 100644 --- a/src/app/browse-by/browse-by-taxonomy-page/browse-by-taxonomy-page.component.ts +++ b/src/app/browse-by/browse-by-taxonomy-page/browse-by-taxonomy-page.component.ts @@ -1,13 +1,11 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core'; import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; import { ActivatedRoute, RouterLink } from '@angular/router'; import { Observable, Subscription } from 'rxjs'; import { BrowseDefinition } from '../../core/shared/browse-definition.model'; -import { GenericConstructor } from '../../core/shared/generic-constructor'; -import { BROWSE_BY_COMPONENT_FACTORY } from '../browse-by-switcher/browse-by-decorator'; import { map } from 'rxjs/operators'; -import { ThemeService } from 'src/app/shared/theme-support/theme.service'; +import { ThemeService } from '../../shared/theme-support/theme.service'; import { HierarchicalBrowseDefinition } from '../../core/shared/hierarchical-browse-definition.model'; import { VocabularyTreeviewComponent } from '../../shared/form/vocabulary-treeview/vocabulary-treeview.component'; import { TranslateModule } from '@ngx-translate/core'; @@ -69,14 +67,12 @@ export class BrowseByTaxonomyPageComponent implements OnInit, OnDestroy { browseByComponentSubs: Subscription[] = []; public constructor( protected route: ActivatedRoute, - protected themeService: ThemeService, - @Inject(BROWSE_BY_COMPONENT_FACTORY) private getComponentByBrowseByType: (browseByType, theme) => GenericConstructor) { + protected themeService: ThemeService) { } ngOnInit(): void { this.browseByComponent = this.route.data.pipe( map((data: { browseDefinition: BrowseDefinition }) => { - this.getComponentByBrowseByType(data.browseDefinition.getRenderType(), this.themeService.getThemeName()); return data.browseDefinition; }) ); diff --git a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts index 66d5909bbd..3f8f1ac5a2 100644 --- a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts @@ -12,12 +12,17 @@ import { Item } from '../../../core/shared/item.model'; import { ItemTemplateDataService } from '../../../core/data/item-template-data.service'; import { Collection } from '../../../core/shared/collection.model'; import { RequestService } from '../../../core/data/request.service'; -import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$ +} from '../../../shared/remote-data.utils'; import { getCollectionItemTemplateRoute } from '../../collection-page-routing-paths'; import { AuthServiceMock } from '../../../shared/mocks/auth.service.mock'; import { AuthService } from '../../../core/auth/auth.service'; import { CommunityDataService } from '../../../core/data/community-data.service'; import { ObjectCacheService } from '../../../core/cache/object-cache.service'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; describe('CollectionMetadataComponent', () => { let comp: CollectionMetadataComponent; @@ -73,6 +78,7 @@ describe('CollectionMetadataComponent', () => { { provide: AuthService, useValue: new AuthServiceMock() }, { provide: CommunityDataService, useValue: {} }, { provide: ObjectCacheService, useValue: {} }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ], schemas: [NO_ERRORS_SCHEMA] }).compileComponents(); diff --git a/src/app/core/cache/builders/link.service.spec.ts b/src/app/core/cache/builders/link.service.spec.ts index 65e327a9aa..00063a628f 100644 --- a/src/app/core/cache/builders/link.service.spec.ts +++ b/src/app/core/cache/builders/link.service.spec.ts @@ -11,6 +11,7 @@ import { isEmpty } from 'rxjs/operators'; import { FindListOptions } from '../../data/find-list-options.model'; import { DATA_SERVICE_FACTORY } from '../../data/base/data-service.decorator'; import { of } from 'rxjs'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; const TEST_MODEL = new ResourceType('authorization'); let result: any; @@ -48,6 +49,9 @@ let testDataService: TestDataService = new TestDataService(); let testModel: TestModel; +const mockMap = { + [TEST_MODEL.value]: () => new Promise((resolve) => resolve(TestDataService)) +}; describe('LinkService', () => { let service: LinkService; beforeEach(() => { @@ -95,7 +99,10 @@ describe('LinkService', () => { propertyName: 'successor', } ]), - }] + }, { + provide: APP_DATA_SERVICES_MAP, + useValue: mockMap + }] }); service = TestBed.inject(LinkService); testDataService = TestBed.inject(TestDataService); diff --git a/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts b/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts index 190bfbecf4..35b0e3cca2 100644 --- a/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts +++ b/src/app/item-page/simple/field-components/file-section/file-section.component.spec.ts @@ -13,17 +13,19 @@ import { of as observableOf } from 'rxjs'; import { MockBitstreamFormat1 } from '../../../../shared/mocks/item.mock'; import { FileSizePipe } from '../../../../shared/utils/file-size-pipe'; import { PageInfo } from '../../../../core/shared/page-info.model'; -import { MetadataFieldWrapperComponent } from '../../../../shared/metadata-field-wrapper/metadata-field-wrapper.component'; +import { + MetadataFieldWrapperComponent +} from '../../../../shared/metadata-field-wrapper/metadata-field-wrapper.component'; import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; -import { APP_CONFIG } from './../../../../../config/app-config.interface'; -import { environment } from './../.././../../../environments/environment'; -import { ThemeService } from './../.././../../shared/theme-support/theme.service'; -import { getMockThemeService } from './../.././../../shared/mocks/theme-service.mock'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface'; +import { environment } from '../../../../../environments/environment'; +import { ThemeService } from '../../../../shared/theme-support/theme.service'; +import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; import { provideMockStore } from '@ngrx/store/testing'; import { ActivatedRoute } from '@angular/router'; -import { ActivatedRouteStub } from './../.././../../shared/testing/active-router.stub'; +import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; describe('FileSectionComponent', () => { let comp: FileSectionComponent; @@ -70,6 +72,7 @@ describe('FileSectionComponent', () => { } }), BrowserAnimationsModule, FileSectionComponent, VarDirective, FileSizePipe], providers: [ + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, { provide: BitstreamDataService, useValue: bitstreamDataService }, { provide: NotificationsService, useValue: new NotificationsServiceStub() }, { provide: APP_CONFIG, useValue: environment }, diff --git a/src/app/login-page/login-page.component.spec.ts b/src/app/login-page/login-page.component.spec.ts index 02aa872b48..fea47a77be 100644 --- a/src/app/login-page/login-page.component.spec.ts +++ b/src/app/login-page/login-page.component.spec.ts @@ -1,5 +1,5 @@ import { NO_ERRORS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { TranslateModule } from '@ngx-translate/core'; @@ -10,6 +10,7 @@ import { ActivatedRouteStub } from '../shared/testing/active-router.stub'; import { AuthService } from '../core/auth/auth.service'; import { AuthServiceMock } from '../shared/mocks/auth.service.mock'; import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '../../config/app-config.interface'; describe('LoginPageComponent', () => { let comp: LoginPageComponent; @@ -27,6 +28,7 @@ describe('LoginPageComponent', () => { providers: [ { provide: ActivatedRoute, useValue: activatedRouteStub }, { provide: AuthService, useValue: new AuthServiceMock() }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, provideMockStore({}) ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/navbar/navbar.component.spec.ts b/src/app/navbar/navbar.component.spec.ts index a8f5f302f7..a25116dc14 100644 --- a/src/app/navbar/navbar.component.spec.ts +++ b/src/app/navbar/navbar.component.spec.ts @@ -29,7 +29,7 @@ import { EPersonMock } from '../shared/testing/eperson.mock'; import { FlatBrowseDefinition } from '../core/shared/flat-browse-definition.model'; import { ValueListBrowseDefinition } from '../core/shared/value-list-browse-definition.model'; import { HierarchicalBrowseDefinition } from '../core/shared/hierarchical-browse-definition.model'; -import { BrowseByDataType } from '../browse-by/browse-by-data-type'; +import { BrowseByDataType } from '../browse-by/browse-by-switcher/browse-by-data-type'; let comp: NavbarComponent; let fixture: ComponentFixture; diff --git a/src/app/shared/auth-nav-menu/auth-nav-menu.component.spec.ts b/src/app/shared/auth-nav-menu/auth-nav-menu.component.spec.ts index e42cc42c7a..9cc0ffd3cf 100644 --- a/src/app/shared/auth-nav-menu/auth-nav-menu.component.spec.ts +++ b/src/app/shared/auth-nav-menu/auth-nav-menu.component.spec.ts @@ -17,6 +17,7 @@ import { AuthService } from '../../core/auth/auth.service'; import { of } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; import { ActivatedRouteStub } from '../testing/active-router.stub'; +import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface'; describe('AuthNavMenuComponent', () => { @@ -68,26 +69,27 @@ describe('AuthNavMenuComponent', () => { // refine the test module by declaring the test component TestBed.configureTestingModule({ - imports: [ - NoopAnimationsModule, - StoreModule.forRoot(authReducer, { + imports: [ + NoopAnimationsModule, + StoreModule.forRoot(authReducer, { runtimeChecks: { - strictStateImmutability: false, - strictActionImmutability: false + strictStateImmutability: false, + strictActionImmutability: false } - }), - TranslateModule.forRoot(), - AuthNavMenuComponent - ], - providers: [ - { provide: HostWindowService, useValue: window }, - { provide: AuthService, useValue: authService }, - { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, - ], - schemas: [ - CUSTOM_ELEMENTS_SCHEMA - ] -}) + }), + TranslateModule.forRoot(), + AuthNavMenuComponent + ], + providers: [ + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: HostWindowService, useValue: window }, + { provide: AuthService, useValue: authService }, + { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, + ], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA + ] + }) .compileComponents(); })); @@ -260,26 +262,26 @@ describe('AuthNavMenuComponent', () => { // refine the test module by declaring the test component TestBed.configureTestingModule({ - imports: [ - NoopAnimationsModule, - StoreModule.forRoot(authReducer, { + imports: [ + NoopAnimationsModule, + StoreModule.forRoot(authReducer, { runtimeChecks: { - strictStateImmutability: false, - strictActionImmutability: false + strictStateImmutability: false, + strictActionImmutability: false } - }), - TranslateModule.forRoot(), - AuthNavMenuComponent - ], - providers: [ - { provide: HostWindowService, useValue: window }, - { provide: AuthService, useValue: authService }, - { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, - ], - schemas: [ - CUSTOM_ELEMENTS_SCHEMA - ] -}) + }), + TranslateModule.forRoot(), + AuthNavMenuComponent + ], + providers: [ + { provide: HostWindowService, useValue: window }, + { provide: AuthService, useValue: authService }, + { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, + ], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA + ] + }) .compileComponents(); })); diff --git a/src/app/shared/auth-nav-menu/user-menu/user-menu.component.spec.ts b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.spec.ts index 4fd4e6341e..18b2073a1a 100644 --- a/src/app/shared/auth-nav-menu/user-menu/user-menu.component.spec.ts +++ b/src/app/shared/auth-nav-menu/user-menu/user-menu.component.spec.ts @@ -16,6 +16,7 @@ import { AuthService } from '../../../core/auth/auth.service'; import { of } from 'rxjs'; import { ActivatedRoute } from '@angular/router'; import { ActivatedRouteStub } from '../../testing/active-router.stub'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; describe('UserMenuComponent', () => { @@ -74,6 +75,7 @@ describe('UserMenuComponent', () => { providers: [ { provide: AuthService, useValue: authService }, { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ], schemas: [ NO_ERRORS_SCHEMA diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts index 906b856008..a8b1f27288 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-container.component.spec.ts @@ -79,7 +79,11 @@ import { FormService } from '../../form.service'; import { SubmissionService } from '../../../../submission/submission.service'; import { FormBuilderService } from '../form-builder.service'; import { NgxMaskModule } from 'ngx-mask'; -import { APP_CONFIG } from '../../../../../config/app-config.interface'; +import { + APP_CONFIG, + APP_DATA_SERVICES_MAP, + APP_DYNAMIC_FORM_CONTROL_FN +} from '../../../../../config/app-config.interface'; import { environment } from '../../../../../environments/environment'; import { dsDynamicFormControlMapFn } from './ds-dynamic-form-control-map-fn'; @@ -235,7 +239,9 @@ describe('DsDynamicFormControlContainerComponent test suite', () => { } }, { provide: NgZone, useValue: new NgZone({}) }, - { provide: APP_CONFIG, useValue: environment } + { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }).compileComponents().then(() => { @@ -244,6 +250,7 @@ describe('DsDynamicFormControlContainerComponent test suite', () => { const ngZone = TestBed.inject(NgZone); + // eslint-disable-next-line @typescript-eslint/ban-types spyOn(ngZone, 'runOutsideAngular').and.callFake((fn: Function) => fn()); component = fixture.componentInstance; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts index 90336e5ede..425931cb99 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/models/relation-group/dynamic-relation-group.component.spec.ts @@ -25,10 +25,11 @@ import { FormRowModel } from '../../../../../../core/config/models/config-submis import { DsDynamicTypeBindRelationService } from '../../ds-dynamic-type-bind-relation.service'; import { SubmissionObjectDataService } from '../../../../../../core/submission/submission-object-data.service'; import { SubmissionService } from '../../../../../../submission/submission.service'; -import { APP_CONFIG } from 'src/config/app-config.interface'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP, APP_DYNAMIC_FORM_CONTROL_FN } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; import { AsyncPipe, NgClass, NgIf } from '@angular/common'; import { provideMockStore } from '@ngrx/store/testing'; +import { dsDynamicFormControlMapFn } from '../../ds-dynamic-form-control-map-fn'; export let FORM_GROUP_TEST_MODEL_CONFIG; @@ -150,6 +151,8 @@ describe('DsDynamicRelationGroupComponent test suite', () => { { provide: SubmissionObjectDataService, useValue: {}}, { provide: SubmissionService, useValue: {}}, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, ], schemas: [CUSTOM_ELEMENTS_SCHEMA] }) diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.spec.ts b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.spec.ts index c6e81c1469..4b0f881c99 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.spec.ts +++ b/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/dynamic-lookup-relation-modal.component.spec.ts @@ -25,6 +25,7 @@ import { WorkspaceItem } from '../../../../../core/submission/models/workspaceit import { Collection } from '../../../../../core/shared/collection.model'; import { By } from '@angular/platform-browser'; import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '../../../../../../config/app-config.interface'; describe('DsDynamicLookupRelationModalComponent', () => { let component: DsDynamicLookupRelationModalComponent; @@ -129,6 +130,7 @@ describe('DsDynamicLookupRelationModalComponent', () => { } }, { provide: NgZone, useValue: new NgZone({}) }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, NgbActiveModal, provideMockStore() ], diff --git a/src/app/shared/form/form.component.spec.ts b/src/app/shared/form/form.component.spec.ts index 93805a2014..34906bd65f 100644 --- a/src/app/shared/form/form.component.spec.ts +++ b/src/app/shared/form/form.component.spec.ts @@ -25,6 +25,7 @@ import { createTestComponent } from '../testing/utils.test'; import { BehaviorSubject } from 'rxjs'; import { storeModuleConfig } from '../../app.reducer'; import { DsDynamicFormComponent } from './builder/ds-dynamic-form-ui/ds-dynamic-form.component'; +import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface'; let TEST_FORM_MODEL; @@ -138,7 +139,7 @@ describe('FormComponent test suite', () => { init(); /* TODO make sure these files use mocks instead of real services/components https://github.com/DSpace/dspace-angular/issues/281 */ TestBed.configureTestingModule({ - imports: [ + imports: [ CommonModule, FormsModule, ReactiveFormsModule, @@ -147,16 +148,17 @@ describe('FormComponent test suite', () => { TranslateModule.forRoot(), FormComponent, TestComponent, - ], - providers: [ + ], + providers: [ + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ChangeDetectorRef, DynamicFormValidationService, FormBuilderService, FormComponent, FormService, { provide: Store, useClass: StoreMock } - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA] + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] }) .overrideComponent(FormComponent, { remove: { @@ -443,18 +445,18 @@ describe('FormComponent test suite', () => { // declare a test component @Component({ - exportAs: 'formComponent', - selector: 'ds-test-cmp', - template: ``, - standalone: true, - imports: [ - CommonModule, - FormComponent, - DsDynamicFormComponent, - FormsModule, - ReactiveFormsModule, - NgbModule, - DynamicFormsCoreModule] + exportAs: 'formComponent', + selector: 'ds-test-cmp', + template: ``, + standalone: true, + imports: [ + CommonModule, + FormComponent, + DsDynamicFormComponent, + FormsModule, + ReactiveFormsModule, + NgbModule, + DynamicFormsCoreModule] }) class TestComponent { diff --git a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.spec.ts b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.spec.ts index 3630c7ea0c..0377cee05f 100644 --- a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.spec.ts +++ b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.spec.ts @@ -1,4 +1,4 @@ - /* eslint-disable max-classes-per-file */ +/* eslint-disable max-classes-per-file */ import { getComponentByWorkflowTaskOption, rendersWorkflowTaskOption } from './claimed-task-actions-decorator'; describe('ClaimedTaskActions decorator function', () => { @@ -26,13 +26,13 @@ describe('ClaimedTaskActions decorator function', () => { describe('If there\'s an exact match', () => { it('should return the matching class', () => { const component = getComponentByWorkflowTaskOption(option1); - expect(component).toEqual(Test1Action); + expect(component).toEqual(Test1Action as any); const component2 = getComponentByWorkflowTaskOption(option2); - expect(component2).toEqual(Test2Action); + expect(component2).toEqual(Test2Action as any); const component3 = getComponentByWorkflowTaskOption(option3); - expect(component3).toEqual(Test3Action); + expect(component3).toEqual(Test3Action as any); }); }); diff --git a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts index f50d85449f..82ddf21193 100644 --- a/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts +++ b/src/app/shared/mydspace-actions/claimed-task/switcher/claimed-task-actions-decorator.ts @@ -89,13 +89,13 @@ export function rendersAdvancedWorkflowTaskOption(option: string) { /** * Get the component used for rendering a ClaimedTaskActions page by option type */ -export function getComponentByWorkflowTaskOption(option: string) { +export function getComponentByWorkflowTaskOption(option: string): WorkflowTaskOptionComponent { return WORKFLOW_TASK_OPTION_DECORATOR_MAP.get(option); } /** * Get the component used for rendering a AdvancedClaimedTaskActions page by option type */ -export function getAdvancedComponentByWorkflowTaskOption(option: string) { +export function getAdvancedComponentByWorkflowTaskOption(option: string): AdvancedWorkflowTaskOptionComponent { return ADVANCED_WORKFLOW_TASK_OPTION_DECORATOR_MAP.get(option); } diff --git a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts index 7a34c458d5..91456aba46 100644 --- a/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts +++ b/src/app/shared/object-collection/shared/listable-object/listable-object-component-loader.component.spec.ts @@ -13,7 +13,7 @@ import { TranslateModule } from '@ngx-translate/core'; import { By } from '@angular/platform-browser'; import { provideMockStore } from '@ngrx/store/testing'; import { ThemeService } from '../../../theme-support/theme.service'; -import { APP_CONFIG } from '../../../../../config/app-config.interface'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface'; import { ActivatedRoute } from '@angular/router'; import { of } from 'rxjs'; import { REQUEST } from '@nguniversal/express-engine/tokens'; @@ -65,7 +65,8 @@ describe('ListableObjectComponentLoaderComponent', () => { }, provideMockStore({}), { provide: ThemeService, useValue: getMockThemeService('dspace') }, - { provide: APP_CONFIG, useValue: { browseBy: { showThumbnails: true } } } + { provide: APP_CONFIG, useValue: { browseBy: { showThumbnails: true } } }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ] }).overrideComponent(ListableObjectComponentLoaderComponent, { set: { diff --git a/src/app/shared/resource-policies/form/resource-policy-form.component.spec.ts b/src/app/shared/resource-policies/form/resource-policy-form.component.spec.ts index 137f446b8f..ef50dd5ebe 100644 --- a/src/app/shared/resource-policies/form/resource-policy-form.component.spec.ts +++ b/src/app/shared/resource-policies/form/resource-policy-form.component.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, inject, TestBed, waitForAsync } from '@angular/core/testing'; import { Component, NO_ERRORS_SCHEMA } from '@angular/core'; import { By } from '@angular/platform-browser'; -import { CommonModule} from '@angular/common'; +import { CommonModule } from '@angular/common'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; @@ -37,13 +37,16 @@ import { RouterMock } from '../../mocks/router.mock'; import { PaginationServiceStub } from '../../testing/pagination-service.stub'; import { PaginationService } from '../../../core/pagination/pagination.service'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { DsDynamicTypeBindRelationService } from '../../form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; -import { SubmissionObjectDataService } from './../../../core/submission/submission-object-data.service'; -import { SubmissionService } from './../../../submission/submission.service'; -import { APP_CONFIG } from 'src/config/app-config.interface'; +import { + DsDynamicTypeBindRelationService +} from '../../form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; +import { SubmissionObjectDataService } from '../../../core/submission/submission-object-data.service'; +import { SubmissionService } from '../../../submission/submission.service'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP, APP_DYNAMIC_FORM_CONTROL_FN } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; import { NgxMaskModule } from 'ngx-mask'; import { provideMockStore } from '@ngrx/store/testing'; +import { dsDynamicFormControlMapFn } from '../../form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-map-fn'; export const mockResourcePolicyFormData = { name: [ @@ -208,6 +211,8 @@ describe('ResourcePolicyFormComponent test suite', () => { { provide: SubmissionObjectDataService, useValue: {} }, { provide: SubmissionService, useValue: {} }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, provideMockStore({}) ], schemas: [ diff --git a/src/app/shared/search/search.component.spec.ts b/src/app/shared/search/search.component.spec.ts index 8e48297ffa..a4b58ce673 100644 --- a/src/app/shared/search/search.component.spec.ts +++ b/src/app/shared/search/search.component.spec.ts @@ -39,6 +39,7 @@ import { ThemedSearchSidebarComponent } from './search-sidebar/themed-search-sid import { ThemedSearchFormComponent } from '../search-form/themed-search-form.component'; import { SearchLabelsComponent } from './search-labels/search-labels.component'; import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-configuration.service'; +import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface'; let comp: SearchComponent; let fixture: ComponentFixture; @@ -229,7 +230,8 @@ export function configureSearchComponentTestingModule(compType, additionalDeclar { provide: SEARCH_CONFIG_SERVICE, useValue: searchConfigurationServiceStub - } + }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ], schemas: [NO_ERRORS_SCHEMA] }).overrideComponent(compType, { diff --git a/src/app/submission/edit/submission-edit.component.spec.ts b/src/app/submission/edit/submission-edit.component.spec.ts index dd5240964c..54e413641a 100644 --- a/src/app/submission/edit/submission-edit.component.spec.ts +++ b/src/app/submission/edit/submission-edit.component.spec.ts @@ -1,4 +1,4 @@ -import { waitForAsync, ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing'; +import { ComponentFixture, fakeAsync, TestBed, waitForAsync } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { ActivatedRoute, Router } from '@angular/router'; import { NO_ERRORS_SCHEMA } from '@angular/core'; @@ -17,7 +17,9 @@ import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { mockSubmissionObject } from '../../shared/mocks/submission.mock'; import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { ItemDataService } from '../../core/data/item-data.service'; -import { SubmissionJsonPatchOperationsServiceStub } from '../../shared/testing/submission-json-patch-operations-service.stub'; +import { + SubmissionJsonPatchOperationsServiceStub +} from '../../shared/testing/submission-json-patch-operations-service.stub'; import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service'; import { AuthServiceStub } from '../../shared/testing/auth-service.stub'; import { AuthService } from '../../core/auth/auth.service'; @@ -27,6 +29,7 @@ import { SectionsServiceStub } from '../../shared/testing/sections-service.stub' import { ThemeService } from '../../shared/theme-support/theme.service'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; import { provideMockStore } from '@ngrx/store/testing'; +import { APP_DATA_SERVICES_MAP } from '../../../config/app-config.interface'; describe('SubmissionEditComponent Component', () => { @@ -73,6 +76,7 @@ describe('SubmissionEditComponent Component', () => { { provide: HALEndpointService, useValue: halService }, { provide: SectionsService, useValue: new SectionsServiceStub() }, { provide: ThemeService, useValue: themeService }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, provideMockStore() ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/submission/sections/accesses/section-accesses.component.spec.ts b/src/app/submission/sections/accesses/section-accesses.component.spec.ts index dccb449267..91f6401d34 100644 --- a/src/app/submission/sections/accesses/section-accesses.component.spec.ts +++ b/src/app/submission/sections/accesses/section-accesses.component.spec.ts @@ -39,12 +39,17 @@ import { getMockFormService } from '../../../shared/mocks/form-service.mock'; import { mockAccessesFormData } from '../../../shared/mocks/submission.mock'; import { accessConditionChangeEvent, checkboxChangeEvent } from '../../../shared/testing/form-event.stub'; import { provideMockStore } from '@ngrx/store/testing'; -import { DsDynamicTypeBindRelationService } from '../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; +import { + DsDynamicTypeBindRelationService +} from '../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; import { SubmissionObjectDataService } from '../../../core/submission/submission-object-data.service'; import { SubmissionService } from '../../submission.service'; -import { APP_CONFIG } from 'src/config/app-config.interface'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP, APP_DYNAMIC_FORM_CONTROL_FN } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; import { CommonModule } from '@angular/common'; +import { + dsDynamicFormControlMapFn +} from '../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-map-fn'; function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService { return jasmine.createSpyObj('DsDynamicTypeBindRelationService', { @@ -116,6 +121,8 @@ describe('SubmissionSectionAccessesComponent', () => { { provide: SubmissionObjectDataService, useValue: {} }, { provide: SubmissionService, useValue: {} }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, FormBuilderService, provideMockStore({}) ] @@ -134,7 +141,6 @@ describe('SubmissionSectionAccessesComponent', () => { fixture.detectChanges(); })); - it('should create', () => { expect(component).toBeTruthy(); }); @@ -187,8 +193,6 @@ describe('SubmissionSectionAccessesComponent', () => { describe('when canDescoverable is false', () => { - - beforeEach(async () => { formService = getMockFormService(); await TestBed.configureTestingModule({ @@ -213,6 +217,8 @@ describe('SubmissionSectionAccessesComponent', () => { { provide: SubmissionObjectDataService, useValue: {} }, { provide: SubmissionService, useValue: {} }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, FormBuilderService, provideMockStore({}) diff --git a/src/app/submission/sections/form/section-form-operations.service.spec.ts b/src/app/submission/sections/form/section-form-operations.service.spec.ts index 65ddbe0cb0..d8a2d33400 100644 --- a/src/app/submission/sections/form/section-form-operations.service.spec.ts +++ b/src/app/submission/sections/form/section-form-operations.service.spec.ts @@ -29,7 +29,10 @@ import { } from '../../../shared/mocks/form-models.mock'; import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; import { VocabularyEntry } from '../../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { DynamicRowArrayModel } from '../../../shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model'; +import { + DynamicRowArrayModel +} from '../../../shared/form/builder/ds-dynamic-form-ui/models/ds-dynamic-row-array-model'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; describe('SectionFormOperationsService test suite', () => { let formBuilderService: any; @@ -74,6 +77,7 @@ describe('SectionFormOperationsService test suite', () => { providers: [ { provide: FormBuilderService, useValue: getMockFormBuilderService() }, { provide: JsonPatchOperationsBuilder, useValue: jsonPatchOpBuilder }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, SectionFormOperationsService ] }).compileComponents().then(); diff --git a/src/app/submission/sections/license/section-license.component.spec.ts b/src/app/submission/sections/license/section-license.component.spec.ts index cef573cebb..83e8b87118 100644 --- a/src/app/submission/sections/license/section-license.component.spec.ts +++ b/src/app/submission/sections/license/section-license.component.spec.ts @@ -38,9 +38,14 @@ import { License } from '../../../core/shared/license.model'; import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; import { cold } from 'jasmine-marbles'; import { provideMockStore } from '@ngrx/store/testing'; -import { DsDynamicTypeBindRelationService } from 'src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; -import { APP_CONFIG } from 'src/config/app-config.interface'; +import { + DsDynamicTypeBindRelationService +} from 'src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP, APP_DYNAMIC_FORM_CONTROL_FN } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; +import { + dsDynamicFormControlMapFn +} from '../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-control-map-fn'; function getMockDsDynamicTypeBindRelationService(): DsDynamicTypeBindRelationService { return jasmine.createSpyObj('DsDynamicTypeBindRelationService', { @@ -158,6 +163,8 @@ describe('SubmissionSectionLicenseComponent test suite', () => { FormBuilderService, { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, + { provide: APP_DYNAMIC_FORM_CONTROL_FN, useValue: dsDynamicFormControlMapFn }, SubmissionSectionLicenseComponent ], schemas: [NO_ERRORS_SCHEMA] diff --git a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.spec.ts b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.spec.ts index b4c8244324..f03d48c65a 100644 --- a/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.spec.ts +++ b/src/app/submission/sections/sherpa-policies/section-sherpa-policies.component.spec.ts @@ -21,6 +21,7 @@ import { MetadataInformationComponent } from './metadata-information/metadata-in import { AlertComponent } from '../../../shared/alert/alert.component'; import { PublisherPolicyComponent } from './publisher-policy/publisher-policy.component'; import { PublicationInformationComponent } from './publication-information/publication-information.component'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; describe('SubmissionSectionSherpaPoliciesComponent', () => { let component: SubmissionSectionSherpaPoliciesComponent; @@ -74,6 +75,7 @@ describe('SubmissionSectionSherpaPoliciesComponent', () => { { provide: Store, useValue: storeStub }, { provide: 'sectionDataProvider', useValue: sectionData }, { provide: 'submissionIdProvider', useValue: '1508' }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ] }) .overrideComponent(SubmissionSectionSherpaPoliciesComponent, { diff --git a/src/app/submission/sections/upload/file/edit/section-upload-file-edit.component.spec.ts b/src/app/submission/sections/upload/file/edit/section-upload-file-edit.component.spec.ts index 563840a904..5c6032be81 100644 --- a/src/app/submission/sections/upload/file/edit/section-upload-file-edit.component.spec.ts +++ b/src/app/submission/sections/upload/file/edit/section-upload-file-edit.component.spec.ts @@ -49,7 +49,7 @@ import { provideMockStore } from '@ngrx/store/testing'; import { DsDynamicTypeBindRelationService } from '../../../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-type-bind-relation.service'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; +import { APP_CONFIG, APP_DATA_SERVICES_MAP } from '../../../../../../config/app-config.interface'; import { environment } from '../../../../../../environments/environment.test'; import { NgxMaskModule } from 'ngx-mask'; import { POLICY_DEFAULT_WITH_LIST } from '../../section-upload-constants'; @@ -140,6 +140,7 @@ describe('SubmissionSectionUploadFileEditComponent test suite', () => { NgbActiveModal, { provide: DsDynamicTypeBindRelationService, useValue: getMockDsDynamicTypeBindRelationService() }, { provide: APP_CONFIG, useValue: environment }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ], schemas: [NO_ERRORS_SCHEMA] }).compileComponents().then(); diff --git a/src/app/submission/sections/upload/file/section-upload-file.component.spec.ts b/src/app/submission/sections/upload/file/section-upload-file.component.spec.ts index 83479955c2..e23d7473e6 100644 --- a/src/app/submission/sections/upload/file/section-upload-file.component.spec.ts +++ b/src/app/submission/sections/upload/file/section-upload-file.component.spec.ts @@ -12,8 +12,12 @@ import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service import { HALEndpointServiceStub } from '../../../../shared/testing/hal-endpoint-service.stub'; import { NgbModal, NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { JsonPatchOperationsBuilder } from '../../../../core/json-patch/builder/json-patch-operations-builder'; -import { SubmissionJsonPatchOperationsServiceStub } from '../../../../shared/testing/submission-json-patch-operations-service.stub'; -import { SubmissionJsonPatchOperationsService } from '../../../../core/submission/submission-json-patch-operations.service'; +import { + SubmissionJsonPatchOperationsServiceStub +} from '../../../../shared/testing/submission-json-patch-operations-service.stub'; +import { + SubmissionJsonPatchOperationsService +} from '../../../../core/submission/submission-json-patch-operations.service'; import { SubmissionSectionUploadFileComponent } from './section-upload-file.component'; import { SubmissionServiceStub } from '../../../../shared/testing/submission-service.stub'; import { @@ -35,7 +39,7 @@ import { SubmissionSectionUploadFileViewComponent } from './view/section-upload- import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; import { POLICY_DEFAULT_WITH_LIST } from '../section-upload-constants'; - +import { APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface'; const configMetadataFormMock = { @@ -97,6 +101,7 @@ describe('SubmissionSectionUploadFileComponent test suite', () => { { provide: SubmissionService, useClass: SubmissionServiceStub }, { provide: SectionUploadService, useValue: getMockSectionUploadService() }, { provide: ThemeService, useValue: getMockThemeService() }, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ChangeDetectorRef, NgbModal, SubmissionSectionUploadFileComponent, diff --git a/src/app/submission/sections/upload/section-upload.component.spec.ts b/src/app/submission/sections/upload/section-upload.component.spec.ts index 301231bd5c..efd5f928e1 100644 --- a/src/app/submission/sections/upload/section-upload.component.spec.ts +++ b/src/app/submission/sections/upload/section-upload.component.spec.ts @@ -41,6 +41,7 @@ import { PageInfo } from '../../../core/shared/page-info.model'; import { AlertComponent } from '../../../shared/alert/alert.component'; import { ThemeService } from '../../../shared/theme-support/theme.service'; import { getMockThemeService } from '../../../shared/mocks/theme-service.mock'; +import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; function getMockSubmissionUploadsConfigService(): SubmissionFormsConfigDataService { return jasmine.createSpyObj('SubmissionUploadsConfigService', { @@ -182,6 +183,7 @@ describe('SubmissionSectionUploadComponent test suite', () => { { provide: 'sectionDataProvider', useValue: sectionObject }, { provide: 'submissionIdProvider', useValue: submissionId }, { provide: ThemeService, useValue: getMockThemeService()}, + { provide: APP_DATA_SERVICES_MAP, useValue: {} }, ChangeDetectorRef, SubmissionSectionUploadComponent ],