From 40a9b37f638de52638b161232868da55f84493ed Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Fri, 13 Sep 2024 14:30:55 -0400 Subject: [PATCH] workarounds for jasmine.ajax in unit tests --- .../services/document-list.service.spec.ts | 7 ++++++- .../src/lib/services/alfresco-api.service.ts | 2 +- lib/core/api/src/lib/adf-http-client.service.ts | 16 ++++++++++++++-- .../src/lib/app-config/app-config.service.ts | 9 +++------ .../lib/app-config/debug-app-config.service.ts | 6 ++---- .../create-process-attachment.component.spec.ts | 7 ++++++- .../lib/form/services/ecm-model.service.spec.ts | 7 ++++++- .../services/process-content.service.spec.ts | 7 ++++++- .../form/widgets/document/content.widget.spec.ts | 7 ++++++- .../people-search.component.spec.ts | 7 ++++++- .../components/people/people.component.spec.ts | 9 +++++++-- .../services/process-filter.service.spec.ts | 7 ++++++- .../lib/services/people-process.service.spec.ts | 7 ++++++- .../task-list/task-list.component.spec.ts | 5 ++++- 14 files changed, 79 insertions(+), 24 deletions(-) diff --git a/lib/content-services/src/lib/document-list/services/document-list.service.spec.ts b/lib/content-services/src/lib/document-list/services/document-list.service.spec.ts index 20d8d4c091..476dc9807c 100644 --- a/lib/content-services/src/lib/document-list/services/document-list.service.spec.ts +++ b/lib/content-services/src/lib/document-list/services/document-list.service.spec.ts @@ -18,6 +18,7 @@ import { DocumentListService } from './document-list.service'; import { fakeAsync, TestBed } from '@angular/core/testing'; import { ContentTestingModule } from '../../testing/content.testing.module'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -68,7 +69,11 @@ describe('DocumentListService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ContentTestingModule] + imports: [ContentTestingModule], + providers: [ + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); service = TestBed.inject(DocumentListService); jasmine.Ajax.install(); diff --git a/lib/content-services/src/lib/services/alfresco-api.service.ts b/lib/content-services/src/lib/services/alfresco-api.service.ts index 50eee00ec8..e4ff825708 100644 --- a/lib/content-services/src/lib/services/alfresco-api.service.ts +++ b/lib/content-services/src/lib/services/alfresco-api.service.ts @@ -31,7 +31,7 @@ export class AlfrescoApiService { protected appConfig = inject(AppConfigService); protected storageService = inject(StorageService); protected alfrescoApiFactory = inject(ALFRESCO_API_FACTORY, { optional: true }); - protected adfHttpClient = inject(AdfHttpClient); + protected adfHttpClient = inject(AdfHttpClient, { optional: true }); alfrescoApiInitialized: ReplaySubject = new ReplaySubject(1); diff --git a/lib/core/api/src/lib/adf-http-client.service.ts b/lib/core/api/src/lib/adf-http-client.service.ts index eade3e82cd..4dc23e5ed8 100644 --- a/lib/core/api/src/lib/adf-http-client.service.ts +++ b/lib/core/api/src/lib/adf-http-client.service.ts @@ -71,12 +71,23 @@ export class AdfHttpClient implements ee.Emitter, JsApiHttpClient { ee(this); } - /** @deprecated not used anywhere */ + /** + * Update the default security options + * + * @param options security options + * @deprecated not used anywhere + */ setDefaultSecurityOption(options: any) { this.defaultSecurityOptions = this.merge(this.defaultSecurityOptions, options); } - /** @deprecated not used anywhere */ + /** + * Merge objects + * + * @param objects objects to merge + * @deprecated not used anywhere + * @returns merged object + */ merge(...objects): any { const result = {}; @@ -228,6 +239,7 @@ export class AdfHttpClient implements ee.Emitter, JsApiHttpClient { ) .toPromise(); + /* eslint-disable @typescript-eslint/space-before-function-paren */ (promise as any).abort = function () { eventEmitter.emit('abort'); abort$.next(); diff --git a/lib/core/src/lib/app-config/app-config.service.ts b/lib/core/src/lib/app-config/app-config.service.ts index a2343d9b5c..55ec1c0f47 100644 --- a/lib/core/src/lib/app-config/app-config.service.ts +++ b/lib/core/src/lib/app-config/app-config.service.ts @@ -16,7 +16,7 @@ */ import { HttpClient } from '@angular/common/http'; -import { inject, Injectable } from '@angular/core'; +import { Injectable } from '@angular/core'; import { ObjectUtils } from '../common/utils/object-utils'; import { Observable, ReplaySubject } from 'rxjs'; import { map, distinctUntilChanged, take } from 'rxjs/operators'; @@ -76,17 +76,14 @@ export class AppConfigService { }; status: Status = Status.INIT; - protected onLoadSubject: ReplaySubject; - onLoad: Observable; + protected readonly onLoadSubject = new ReplaySubject(); + onLoad = this.onLoadSubject.asObservable(); get isLoaded() { return this.status === Status.LOADED; } constructor() { - this.onLoadSubject = new ReplaySubject(); - this.onLoad = this.onLoadSubject.asObservable(); - this.extensionService.setup$.subscribe((config) => { this.onExtensionsLoaded(config); }); diff --git a/lib/core/src/lib/app-config/debug-app-config.service.ts b/lib/core/src/lib/app-config/debug-app-config.service.ts index 56ace1ab36..a549538dba 100644 --- a/lib/core/src/lib/app-config/debug-app-config.service.ts +++ b/lib/core/src/lib/app-config/debug-app-config.service.ts @@ -15,15 +15,13 @@ * limitations under the License. */ -import { Injectable } from '@angular/core'; +import { inject, Injectable } from '@angular/core'; import { StorageService } from '../common/services/storage.service'; import { AppConfigService, AppConfigValues } from './app-config.service'; @Injectable() export class DebugAppConfigService extends AppConfigService { - constructor(private storage: StorageService) { - super(); - } + private storage = inject(StorageService); /** @override */ get(key: string, defaultValue?: T): T { diff --git a/lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.spec.ts b/lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.spec.ts index 334e50b3aa..4f3a39d6fd 100644 --- a/lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.spec.ts +++ b/lib/process-services/src/lib/attachment/create-process-attachment/create-process-attachment.component.spec.ts @@ -20,6 +20,7 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { CreateProcessAttachmentComponent } from './create-process-attachment.component'; import { ProcessTestingModule } from '../../testing/process.testing.module'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -49,7 +50,11 @@ describe('CreateProcessAttachmentComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [ProcessTestingModule, CreateProcessAttachmentComponent], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); fixture = TestBed.createComponent(CreateProcessAttachmentComponent); component = fixture.componentInstance; diff --git a/lib/process-services/src/lib/form/services/ecm-model.service.spec.ts b/lib/process-services/src/lib/form/services/ecm-model.service.spec.ts index ee674bbb63..f8afe4248c 100644 --- a/lib/process-services/src/lib/form/services/ecm-model.service.spec.ts +++ b/lib/process-services/src/lib/form/services/ecm-model.service.spec.ts @@ -20,6 +20,7 @@ import { FormModel, CoreTestingModule } from '@alfresco/adf-core'; import { EcmModelService } from './ecm-model.service'; import { TestBed } from '@angular/core/testing'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -29,7 +30,11 @@ describe('EcmModelService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [CoreTestingModule], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); service = TestBed.inject(EcmModelService); jasmine.Ajax.install(); diff --git a/lib/process-services/src/lib/form/services/process-content.service.spec.ts b/lib/process-services/src/lib/form/services/process-content.service.spec.ts index 3aa0fc1238..0d840c28d0 100644 --- a/lib/process-services/src/lib/form/services/process-content.service.spec.ts +++ b/lib/process-services/src/lib/form/services/process-content.service.spec.ts @@ -20,6 +20,7 @@ import { of } from 'rxjs'; import { ProcessContentService } from './process-content.service'; import { CoreTestingModule } from '@alfresco/adf-core'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -68,7 +69,11 @@ describe('ProcessContentService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [CoreTestingModule], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); service = TestBed.inject(ProcessContentService); }); diff --git a/lib/process-services/src/lib/form/widgets/document/content.widget.spec.ts b/lib/process-services/src/lib/form/widgets/document/content.widget.spec.ts index 6e5573ba0c..ff8649da2b 100644 --- a/lib/process-services/src/lib/form/widgets/document/content.widget.spec.ts +++ b/lib/process-services/src/lib/form/widgets/document/content.widget.spec.ts @@ -23,6 +23,7 @@ import { of } from 'rxjs'; import { ContentWidgetComponent } from './content.widget'; import { ProcessContentService } from '../../services/process-content.service'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -61,7 +62,11 @@ describe('ContentWidgetComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [CoreTestingModule, ContentWidgetComponent], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); downloadService = TestBed.inject(DownloadService); processContentService = TestBed.inject(ProcessContentService); diff --git a/lib/process-services/src/lib/people/components/people-search/people-search.component.spec.ts b/lib/process-services/src/lib/people/components/people-search/people-search.component.spec.ts index af421441f1..a57a24fbc3 100644 --- a/lib/process-services/src/lib/people/components/people-search/people-search.component.spec.ts +++ b/lib/process-services/src/lib/people/components/people-search/people-search.component.spec.ts @@ -20,6 +20,7 @@ import { of } from 'rxjs'; import { PeopleSearchComponent } from './people-search.component'; import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { LightUserRepresentation } from '@alfresco/js-api'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; const fakeUser: LightUserRepresentation = { id: 1, @@ -44,7 +45,11 @@ describe('PeopleSearchComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ProcessTestingModule, PeopleSearchComponent] + imports: [ProcessTestingModule, PeopleSearchComponent], + providers: [ + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); fixture = TestBed.createComponent(PeopleSearchComponent); peopleSearchComponent = fixture.componentInstance; diff --git a/lib/process-services/src/lib/people/components/people/people.component.spec.ts b/lib/process-services/src/lib/people/components/people/people.component.spec.ts index 12cf893d49..efc7ffd364 100644 --- a/lib/process-services/src/lib/people/components/people/people.component.spec.ts +++ b/lib/process-services/src/lib/people/components/people/people.component.spec.ts @@ -19,8 +19,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { PeopleComponent } from './people.component'; import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { LightUserRepresentation } from '@alfresco/js-api'; -import { PeopleProcessService } from '@alfresco/adf-process-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; import { of, throwError } from 'rxjs'; +import { PeopleProcessService } from '@alfresco/adf-process-services'; const fakeUser: LightUserRepresentation = { id: 0, @@ -45,7 +46,11 @@ describe('PeopleComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ProcessTestingModule, PeopleComponent] + imports: [ProcessTestingModule, PeopleComponent], + providers: [ + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); fixture = TestBed.createComponent(PeopleComponent); peopleProcessService = fixture.debugElement.injector.get(PeopleProcessService); diff --git a/lib/process-services/src/lib/process-list/services/process-filter.service.spec.ts b/lib/process-services/src/lib/process-list/services/process-filter.service.spec.ts index d3934dd9bf..2c27bdee9b 100644 --- a/lib/process-services/src/lib/process-list/services/process-filter.service.spec.ts +++ b/lib/process-services/src/lib/process-list/services/process-filter.service.spec.ts @@ -21,6 +21,7 @@ import { CoreTestingModule } from '@alfresco/adf-core'; import { ProcessInstanceFilterRepresentation, UserProcessInstanceFilterRepresentation } from '@alfresco/js-api'; import { of } from 'rxjs'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -51,7 +52,11 @@ describe('Process filter', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [CoreTestingModule], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); service = TestBed.inject(ProcessFilterService); }); diff --git a/lib/process-services/src/lib/services/people-process.service.spec.ts b/lib/process-services/src/lib/services/people-process.service.spec.ts index 03c35b9147..b29898fb03 100644 --- a/lib/process-services/src/lib/services/people-process.service.spec.ts +++ b/lib/process-services/src/lib/services/people-process.service.spec.ts @@ -20,6 +20,7 @@ import { PeopleProcessService } from './people-process.service'; import { CoreTestingModule } from '@alfresco/adf-core'; import { LightUserRepresentation } from '@alfresco/js-api'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -47,7 +48,11 @@ describe('PeopleProcessService', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [CoreTestingModule], - providers: [{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }] + providers: [ + { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } + ] }); service = TestBed.inject(PeopleProcessService); }); diff --git a/lib/process-services/src/lib/task-list/components/task-list/task-list.component.spec.ts b/lib/process-services/src/lib/task-list/components/task-list/task-list.component.spec.ts index f34b374fa8..b7e6aec5d4 100644 --- a/lib/process-services/src/lib/task-list/components/task-list/task-list.component.spec.ts +++ b/lib/process-services/src/lib/task-list/components/task-list/task-list.component.spec.ts @@ -44,6 +44,7 @@ import { MatMenuItemHarness } from '@angular/material/menu/testing'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services'; import { CommonModule } from '@angular/common'; +import { AdfHttpClient } from '@alfresco/adf-core/api'; declare let jasmine: any; @@ -112,7 +113,9 @@ describe('TaskListComponent', () => { providers: [ TaskListService, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, - { provide: AppConfigService, useClass: AppConfigServiceMock } + { provide: AppConfigService, useClass: AppConfigServiceMock }, + // TODO: remove this as soon as unit test not using jasmine.Ajax + { provide: AdfHttpClient, useValue: null } ] }); appConfig = TestBed.inject(AppConfigService);