ACS-8652: Noop Translation Module for better unit testing ergonomics (#10118)

This commit is contained in:
Denys Vuika 2024-08-29 11:02:12 -04:00 committed by GitHub
parent f6e72f8a6f
commit 54ab9575d3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
68 changed files with 369 additions and 528 deletions

View File

@ -26,6 +26,8 @@ import { ContentService } from '@alfresco/adf-content-services';
import { ContentTestingModule } from 'lib/content-services/src/lib/testing/content.testing.module'; import { ContentTestingModule } from 'lib/content-services/src/lib/testing/content.testing.module';
@Component({ @Component({
standalone: true,
imports: [FolderCreateDirective],
template: ` <div [adf-create-folder]="parentNode" (success)="success($event)" title="create-title" [nodeType]="'cm:my-little-pony'"></div>` template: ` <div [adf-create-folder]="parentNode" (success)="success($event)" title="create-title" [nodeType]="'cm:my-little-pony'"></div>`
}) })
class TestTypeComponent { class TestTypeComponent {
@ -38,6 +40,8 @@ class TestTypeComponent {
} }
@Component({ @Component({
standalone: true,
imports: [FolderCreateDirective],
template: `<div [adf-create-folder]="parentNode"></div>` template: `<div [adf-create-folder]="parentNode"></div>`
}) })
class TestComponent { class TestComponent {
@ -56,8 +60,7 @@ describe('FolderCreateDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ContentTestingModule], imports: [ContentTestingModule, TestTypeComponent, TestComponent]
declarations: [TestTypeComponent, TestComponent]
}); });
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
element = fixture.debugElement.query(By.directive(FolderCreateDirective)); element = fixture.debugElement.query(By.directive(FolderCreateDirective));

View File

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { AppConfigService, TranslationMock, TranslationService, UserPreferencesService } from '@alfresco/adf-core'; import { AppConfigService, NoopTranslateModule, UserPreferencesService } from '@alfresco/adf-core';
import { import {
CategoryBody, CategoryBody,
CategoryEntry, CategoryEntry,
@ -30,8 +30,6 @@ import {
} from '@alfresco/js-api'; } from '@alfresco/js-api';
import { fakeAsync, TestBed } from '@angular/core/testing'; import { fakeAsync, TestBed } from '@angular/core/testing';
import { CategoryService } from './category.service'; import { CategoryService } from './category.service';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
describe('CategoryService', () => { describe('CategoryService', () => {
let categoryService: CategoryService; let categoryService: CategoryService;
@ -47,8 +45,7 @@ describe('CategoryService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, TranslateModule.forRoot()], imports: [NoopTranslateModule]
providers: [CategoryService, UserPreferencesService, { provide: TranslationService, useClass: TranslationMock }]
}); });
categoryService = TestBed.inject(CategoryService); categoryService = TestBed.inject(CategoryService);

View File

@ -21,14 +21,12 @@ import { Node } from '@alfresco/js-api';
import { ContentMetadataCardComponent } from './content-metadata-card.component'; import { ContentMetadataCardComponent } from './content-metadata-card.component';
import { ContentMetadataComponent } from '../content-metadata/content-metadata.component'; import { ContentMetadataComponent } from '../content-metadata/content-metadata.component';
import { APP_INITIALIZER, SimpleChange } from '@angular/core'; import { APP_INITIALIZER, SimpleChange } from '@angular/core';
import { TranslateModule } from '@ngx-translate/core';
import { NodeAspectService } from '../../../aspect-list/services/node-aspect.service'; import { NodeAspectService } from '../../../aspect-list/services/node-aspect.service';
import { ContentMetadataService } from '../../services/content-metadata.service'; import { ContentMetadataService } from '../../services/content-metadata.service';
import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { AlfrescoApiService, AlfrescoApiServiceMock, AuthModule, TranslationMock, TranslationService } from '@alfresco/adf-core'; import { AlfrescoApiService, AlfrescoApiServiceMock, AuthModule, NoopTranslateModule } from '@alfresco/adf-core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { versionCompatibilityFactory } from '../../../version-compatibility/version-compatibility-factory'; import { versionCompatibilityFactory } from '../../../version-compatibility/version-compatibility-factory';
import { VersionCompatibilityService } from '../../../version-compatibility'; import { VersionCompatibilityService } from '../../../version-compatibility';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
@ -53,17 +51,15 @@ describe('ContentMetadataCardComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(),
NoopAnimationsModule, NoopAnimationsModule,
NoopTranslateModule,
AuthModule.forRoot({ useHash: true }), AuthModule.forRoot({ useHash: true }),
HttpClientModule,
MatDialogModule, MatDialogModule,
MatSnackBarModule, MatSnackBarModule,
ContentMetadataCardComponent ContentMetadataCardComponent
], ],
providers: [ providers: [
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ {
provide: APP_INITIALIZER, provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory, useFactory: versionCompatibilityFactory,

View File

@ -26,14 +26,12 @@ import {
AuthModule, AuthModule,
CardViewBaseItemModel, CardViewBaseItemModel,
CardViewComponent, CardViewComponent,
NoopTranslateModule,
NotificationService, NotificationService,
TranslationMock,
TranslationService,
UpdateNotification UpdateNotification
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { NodesApiService } from '../../../common/services/nodes-api.service'; import { NodesApiService } from '../../../common/services/nodes-api.service';
import { EMPTY, of, throwError } from 'rxjs'; import { EMPTY, of, throwError } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core';
import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service'; import { CardViewContentUpdateService } from '../../../common/services/card-view-content-update.service';
import { PropertyGroup } from '../../interfaces/property-group.interface'; import { PropertyGroup } from '../../interfaces/property-group.interface';
import { PropertyDescriptorsService } from '../../services/property-descriptors.service'; import { PropertyDescriptorsService } from '../../services/property-descriptors.service';
@ -47,7 +45,6 @@ import {
} from '@alfresco/adf-content-services'; } from '@alfresco/adf-content-services';
import { MatExpansionPanel } from '@angular/material/expansion'; import { MatExpansionPanel } from '@angular/material/expansion';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
@ -184,16 +181,14 @@ describe('ContentMetadataComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(),
NoopAnimationsModule, NoopAnimationsModule,
NoopTranslateModule,
AuthModule.forRoot({ useHash: true }), AuthModule.forRoot({ useHash: true }),
HttpClientModule,
MatDialogModule, MatDialogModule,
MatSnackBarModule, MatSnackBarModule,
ContentMetadataComponent ContentMetadataComponent
], ],
providers: [ providers: [
{ provide: TranslationService, useClass: TranslationMock },
{ {
provide: TagService, provide: TagService,
useValue: { useValue: {

View File

@ -21,12 +21,9 @@ import { Subject } from 'rxjs';
import { Category } from '@alfresco/js-api'; import { Category } from '@alfresco/js-api';
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core'; import { AppConfigService, AppConfigServiceMock, NoopTranslateModule } from '@alfresco/adf-core';
import { AppConfigService, AppConfigServiceMock, TranslationMock, TranslationService } from '@alfresco/adf-core';
import { CategoriesManagementComponent } from '../../category';
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('Category selector dialog component', () => { describe('CategorySelectorDialogComponent', () => {
let fixture: ComponentFixture<CategorySelectorDialogComponent>; let fixture: ComponentFixture<CategorySelectorDialogComponent>;
let component: CategorySelectorDialogComponent; let component: CategorySelectorDialogComponent;
let selectButton: HTMLButtonElement; let selectButton: HTMLButtonElement;
@ -51,18 +48,11 @@ describe('Category selector dialog component', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [NoopTranslateModule, MatDialogModule, CategorySelectorDialogComponent],
TranslateModule.forRoot(),
MatDialogModule,
HttpClientTestingModule,
CategoriesManagementComponent,
CategorySelectorDialogComponent
],
providers: [ providers: [
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: MatDialogRef, useValue: dialogRef }, { provide: MatDialogRef, useValue: dialogRef },
{ provide: MAT_DIALOG_DATA, useValue: options }, { provide: MAT_DIALOG_DATA, useValue: options }
{ provide: TranslationService, useClass: TranslationMock }
] ]
}); });
dialogRef.close.calls.reset(); dialogRef.close.calls.reset();

View File

@ -21,9 +21,7 @@ import { DownloadZipDialogComponent } from './download-zip.dialog';
import { DownloadZipService } from './services/download-zip.service'; import { DownloadZipService } from './services/download-zip.service';
import { DownloadEntry, FileDownloadStatus } from '@alfresco/js-api'; import { DownloadEntry, FileDownloadStatus } from '@alfresco/js-api';
import { EMPTY, Observable, of } from 'rxjs'; import { EMPTY, Observable, of } from 'rxjs';
import { AlfrescoApiService, AlfrescoApiServiceMock, RedirectAuthService, TranslationMock, TranslationService } from '@alfresco/adf-core'; import { AlfrescoApiService, AlfrescoApiServiceMock, NoopTranslateModule, RedirectAuthService } from '@alfresco/adf-core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('DownloadZipDialogComponent', () => { describe('DownloadZipDialogComponent', () => {
@ -41,11 +39,10 @@ describe('DownloadZipDialogComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, TranslateModule.forRoot(), MatDialogModule, NoopAnimationsModule], imports: [NoopTranslateModule, MatDialogModule, NoopAnimationsModule],
providers: [ providers: [
DownloadZipService, DownloadZipService,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ provide: MatDialogRef, useValue: dialogRef }, { provide: MatDialogRef, useValue: dialogRef },
{ provide: MAT_DIALOG_DATA, useValue: dataMock }, { provide: MAT_DIALOG_DATA, useValue: dataMock },
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } } { provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }

View File

@ -19,7 +19,7 @@ import { Component } from '@angular/core';
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { AutoFocusDirective } from './auto-focus.directive'; import { AutoFocusDirective } from './auto-focus.directive';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
@Component({ @Component({
standalone: true, standalone: true,
@ -33,7 +33,7 @@ describe('AutoFocusDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AutoFocusDirective, AutoFocusTestComponent] imports: [NoopTranslateModule, AutoFocusDirective, AutoFocusTestComponent]
}); });
fixture = TestBed.createComponent(AutoFocusTestComponent); fixture = TestBed.createComponent(AutoFocusTestComponent);
}); });

View File

@ -19,7 +19,7 @@ import { Component } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NodeCounterDirective, NodeCounterComponent } from './node-counter.directive'; import { NodeCounterDirective, NodeCounterComponent } from './node-counter.directive';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
@Component({ @Component({
standalone: true, standalone: true,
@ -35,7 +35,7 @@ describe('NodeCounterDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NodeCounterDirective, NodeCounterComponent, TestComponent] imports: [NoopTranslateModule, NodeCounterDirective, NodeCounterComponent, TestComponent]
}); });
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
fixture.detectChanges(); fixture.detectChanges();

View File

@ -19,9 +19,7 @@ import { Component, DebugElement, ViewChild } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { NodeDeleteDirective } from './node-delete.directive'; import { NodeDeleteDirective } from './node-delete.directive';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule, RedirectAuthService } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
import { RedirectAuthService, TranslationMock, TranslationService } from '@alfresco/adf-core';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
import { CheckAllowableOperationDirective } from './check-allowable-operation.directive'; import { CheckAllowableOperationDirective } from './check-allowable-operation.directive';
@ -85,11 +83,8 @@ describe('NodeDeleteDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, TranslateModule.forRoot(), TestComponent, TestWithPermissionsComponent, TestDeletePermanentComponent], imports: [NoopTranslateModule, TestComponent, TestWithPermissionsComponent, TestDeletePermanentComponent],
providers: [ providers: [{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }]
{ provide: TranslationService, useClass: TranslationMock },
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }
]
}); });
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
fixtureWithPermissions = TestBed.createComponent(TestWithPermissionsComponent); fixtureWithPermissions = TestBed.createComponent(TestWithPermissionsComponent);

View File

@ -19,9 +19,7 @@ import { Component, DebugElement } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { NodeRestoreDirective } from './node-restore.directive'; import { NodeRestoreDirective } from './node-restore.directive';
import { TranslationMock, TranslationService } from '@alfresco/adf-core'; import { NoopTranslateModule, TranslationService } from '@alfresco/adf-core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
import { TrashcanApi } from '@alfresco/js-api'; import { TrashcanApi } from '@alfresco/js-api';
@Component({ @Component({
@ -46,8 +44,7 @@ describe('NodeRestoreDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [HttpClientTestingModule, TranslateModule.forRoot(), TestComponent], imports: [NoopTranslateModule, TestComponent]
providers: [{ provide: TranslationService, useClass: TranslationMock }]
}); });
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@ -20,11 +20,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { FileAutoDownloadComponent } from './file-auto-download.component'; import { FileAutoDownloadComponent } from './file-auto-download.component';
import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { TranslationMock, TranslationService } from '@alfresco/adf-core';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { NodeDownloadDirective } from '../../../directives/node-download.directive'; import { NodeDownloadDirective } from '../../../directives/node-download.directive';
import { HttpClientTestingModule } from '@angular/common/http/testing';
const mockDialog = { const mockDialog = {
close: jasmine.createSpy('close') close: jasmine.createSpy('close')
@ -37,18 +35,10 @@ describe('FileAutoDownloadComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [NoopTranslateModule, MatDialogModule, MatButtonModule, NodeDownloadDirective, FileAutoDownloadComponent],
HttpClientTestingModule,
TranslateModule.forRoot(),
MatDialogModule,
MatButtonModule,
NodeDownloadDirective,
FileAutoDownloadComponent
],
providers: [ providers: [
{ provide: MatDialogRef, useValue: mockDialog }, { provide: MatDialogRef, useValue: mockDialog },
{ provide: MAT_DIALOG_DATA, useValue: null }, { provide: MAT_DIALOG_DATA, useValue: null }
{ provide: TranslationService, useClass: TranslationMock }
] ]
}); });

View File

@ -21,8 +21,7 @@ import { fakeAuthorityClearanceApiResponse } from './mock/security-authorities.m
import { fakeGroupsApiResponse, createNewSecurityGroupMock } from './mock/security-groups.mock'; import { fakeGroupsApiResponse, createNewSecurityGroupMock } from './mock/security-groups.mock';
import { fakeMarksApiResponse, createNewSecurityMarkMock } from './mock/security-marks.mock'; import { fakeMarksApiResponse, createNewSecurityMarkMock } from './mock/security-marks.mock';
import { SecurityGroupBody, SecurityMarkBody, SecurityMarkEntry } from '@alfresco/js-api'; import { SecurityGroupBody, SecurityMarkBody, SecurityMarkEntry } from '@alfresco/js-api';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
describe('SecurityControlsService', () => { describe('SecurityControlsService', () => {
let service: SecurityControlsService; let service: SecurityControlsService;
@ -39,7 +38,7 @@ describe('SecurityControlsService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule] imports: [NoopTranslateModule]
}); });
service = TestBed.inject(SecurityControlsService); service = TestBed.inject(SecurityControlsService);

View File

@ -17,9 +17,8 @@
import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing'; import { ComponentFixture, discardPeriodicTasks, fakeAsync, flush, TestBed, tick } from '@angular/core/testing';
import { TagsCreatorComponent } from './tags-creator.component'; import { TagsCreatorComponent } from './tags-creator.component';
import { NotificationService } from '@alfresco/adf-core'; import { NoopTranslateModule, NotificationService } from '@alfresco/adf-core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core';
import { MatError } from '@angular/material/form-field'; import { MatError } from '@angular/material/form-field';
import { TagsCreatorMode, TagService } from '@alfresco/adf-content-services'; import { TagsCreatorMode, TagService } from '@alfresco/adf-content-services';
import { EMPTY, of, throwError } from 'rxjs'; import { EMPTY, of, throwError } from 'rxjs';
@ -39,7 +38,7 @@ describe('TagsCreatorComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, TranslateModule.forRoot(), TagsCreatorComponent], imports: [NoopAnimationsModule, NoopTranslateModule, TagsCreatorComponent],
providers: [ providers: [
{ {
provide: TagService, provide: TagService,

View File

@ -22,16 +22,14 @@ import {
CoreModule, CoreModule,
AlfrescoApiService, AlfrescoApiService,
AppConfigService, AppConfigService,
TranslationService,
CookieService, CookieService,
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
AppConfigServiceMock, AppConfigServiceMock,
TranslationMock,
CookieServiceMock, CookieServiceMock,
AuthModule AuthModule,
NoopTranslateModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { ContentModule } from '../content.module'; import { ContentModule } from '../content.module';
import { TranslateModule } from '@ngx-translate/core';
import { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory'; import { versionCompatibilityFactory } from '../version-compatibility/version-compatibility-factory';
import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service'; import { VersionCompatibilityService } from '../version-compatibility/version-compatibility.service';
import { MatIconTestingModule } from '@angular/material/icon/testing'; import { MatIconTestingModule } from '@angular/material/icon/testing';
@ -41,15 +39,14 @@ import { MatIconTestingModule } from '@angular/material/icon/testing';
AuthModule.forRoot({ useHash: true }), AuthModule.forRoot({ useHash: true }),
NoopAnimationsModule, NoopAnimationsModule,
RouterTestingModule, RouterTestingModule,
TranslateModule.forRoot(),
CoreModule, CoreModule,
NoopTranslateModule,
ContentModule, ContentModule,
MatIconTestingModule MatIconTestingModule
], ],
providers: [ providers: [
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ provide: CookieService, useClass: CookieServiceMock }, { provide: CookieService, useClass: CookieServiceMock },
{ {
provide: APP_INITIALIZER, provide: APP_INITIALIZER,
@ -58,6 +55,6 @@ import { MatIconTestingModule } from '@angular/material/icon/testing';
multi: true multi: true
} }
], ],
exports: [NoopAnimationsModule, TranslateModule, CoreModule, ContentModule] exports: [NoopAnimationsModule, CoreModule, ContentModule]
}) })
export class ContentTestingModule {} export class ContentTestingModule {}

View File

@ -17,7 +17,7 @@
import { TreeComponent } from './tree.component'; import { TreeComponent } from './tree.component';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { ContextMenuDirective, UserPreferencesService } from '@alfresco/adf-core'; import { ContextMenuDirective, NoopTranslateModule, UserPreferencesService } from '@alfresco/adf-core';
import { TreeNode, TreeNodeType } from '../models/tree-node.interface'; import { TreeNode, TreeNodeType } from '../models/tree-node.interface';
import { singleNode, treeNodesChildrenMockExpanded, treeNodesMock, treeNodesMockExpanded, treeNodesNoChildrenMock } from '../mock/tree-node.mock'; import { singleNode, treeNodesChildrenMockExpanded, treeNodesMock, treeNodesMockExpanded, treeNodesNoChildrenMock } from '../mock/tree-node.mock';
import { of, Subject } from 'rxjs'; import { of, Subject } from 'rxjs';
@ -30,8 +30,6 @@ import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing'; import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';
import { MatCheckboxHarness } from '@angular/material/checkbox/testing'; import { MatCheckboxHarness } from '@angular/material/checkbox/testing';
import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('TreeComponent', () => { describe('TreeComponent', () => {
@ -64,7 +62,7 @@ describe('TreeComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, HttpClientTestingModule, TranslateModule.forRoot(), TreeComponent], imports: [NoopAnimationsModule, NoopTranslateModule, TreeComponent],
providers: [UserPreferencesService, { provide: TreeService, useClass: TreeServiceMock }] providers: [UserPreferencesService, { provide: TreeService, useClass: TreeServiceMock }]
}); });

View File

@ -15,15 +15,14 @@
* limitations under the License. * limitations under the License.
*/ */
import { TranslationMock } from '@alfresco/adf-core'; import { NoopTranslationService } from '@alfresco/adf-core';
import { FileUploadErrorPipe } from './file-upload-error.pipe'; import { FileUploadErrorPipe } from './file-upload-error.pipe';
describe('FileUploadErrorPipe', () => { describe('FileUploadErrorPipe', () => {
let pipe: FileUploadErrorPipe; let pipe: FileUploadErrorPipe;
beforeEach(() => { beforeEach(() => {
pipe = new FileUploadErrorPipe(new TranslationMock()); pipe = new FileUploadErrorPipe(new NoopTranslationService());
}); });
it('should return generic message when error code is null', () => { it('should return generic message when error code is null', () => {

View File

@ -20,8 +20,6 @@ import { SpyLocation } from '@angular/common/testing';
import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing'; import { ComponentFixture, fakeAsync, TestBed, tick } from '@angular/core/testing';
import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { AppExtensionService, ViewerExtensionRef } from '@alfresco/adf-extensions'; import { AppExtensionService, ViewerExtensionRef } from '@alfresco/adf-extensions';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { ContentInfo, Node, NodeEntry, VersionEntry } from '@alfresco/js-api'; import { ContentInfo, Node, NodeEntry, VersionEntry } from '@alfresco/js-api';
import { AlfrescoViewerComponent, ContentService, NodeActionsService, RenditionService } from '@alfresco/adf-content-services'; import { AlfrescoViewerComponent, ContentService, NodeActionsService, RenditionService } from '@alfresco/adf-content-services';
import { import {
@ -30,12 +28,11 @@ import {
AuthModule, AuthModule,
CloseButtonPosition, CloseButtonPosition,
EventMock, EventMock,
TranslationMock,
TranslationService,
ViewUtilService, ViewUtilService,
ViewerComponent, ViewerComponent,
VIEWER_DIRECTIVES, VIEWER_DIRECTIVES,
ViewerSidebarComponent ViewerSidebarComponent,
NoopTranslateModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { NodesApiService } from '../../common/services/nodes-api.service'; import { NodesApiService } from '../../common/services/nodes-api.service';
import { UploadService } from '../../common/services/upload.service'; import { UploadService } from '../../common/services/upload.service';
@ -44,8 +41,6 @@ import { throwError } from 'rxjs';
import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ESCAPE } from '@angular/cdk/keycodes'; import { ESCAPE } from '@angular/cdk/keycodes';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
@Component({ @Component({
selector: 'adf-viewer-container-toolbar', selector: 'adf-viewer-container-toolbar',
@ -100,7 +95,7 @@ class DummyDialogComponent {}
<mat-icon>dialpad</mat-icon> <mat-icon>dialpad</mat-icon>
<span>Option 1</span> <span>Option 1</span>
</button> </button>
<button mat-menu-item disabled> <button mat-menu-item [disabled]="true">
<mat-icon>voicemail</mat-icon> <mat-icon>voicemail</mat-icon>
<span>Option 2</span> <span>Option 2</span>
</button> </button>
@ -123,7 +118,7 @@ class ViewerWithCustomOpenWithComponent {}
<mat-icon>dialpad</mat-icon> <mat-icon>dialpad</mat-icon>
<span>Action One</span> <span>Action One</span>
</button> </button>
<button mat-menu-item disabled> <button mat-menu-item [disabled]="true">
<mat-icon>voicemail</mat-icon> <mat-icon>voicemail</mat-icon>
<span>Action Two</span> <span>Action Two</span>
</button> </button>
@ -152,15 +147,7 @@ describe('AlfrescoViewerComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [AuthModule.forRoot({ useHash: true }), MatDialogModule, NoopTranslateModule, ...VIEWER_DIRECTIVES],
AuthModule.forRoot({ useHash: true }),
TranslateModule.forRoot(),
MatButtonModule,
MatIconModule,
MatDialogModule,
HttpClientTestingModule,
...VIEWER_DIRECTIVES
],
declarations: [ declarations: [
ViewerWithCustomToolbarComponent, ViewerWithCustomToolbarComponent,
ViewerWithCustomSidebarComponent, ViewerWithCustomSidebarComponent,
@ -171,7 +158,6 @@ describe('AlfrescoViewerComponent', () => {
providers: [ providers: [
ContentService, ContentService,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ {
provide: RenditionService, provide: RenditionService,
useValue: { useValue: {

View File

@ -17,13 +17,12 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule } from '@ngx-translate/core';
import { FlagsComponent } from './flags.component'; import { FlagsComponent } from './flags.component';
import { FeaturesDirective } from '../../directives/features.directive'; import { FeaturesDirective } from '../../directives/features.directive';
import { WritableFeaturesServiceToken } from '../../interfaces/features.interface'; import { WritableFeaturesServiceToken } from '../../interfaces/features.interface';
import { provideMockFeatureFlags } from '../../mocks/features-service-mock.factory'; import { provideMockFeatureFlags } from '../../mocks/features-service-mock.factory';
import { StorageFeaturesService } from '../../services/storage-features.service'; import { StorageFeaturesService } from '../../services/storage-features.service';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('FlagsComponent', () => { describe('FlagsComponent', () => {
let component: FlagsComponent; let component: FlagsComponent;
@ -31,7 +30,7 @@ describe('FlagsComponent', () => {
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [FlagsComponent, TranslateModule.forRoot(), FeaturesDirective, NoopAnimationsModule], imports: [FlagsComponent, NoopTranslateModule, FeaturesDirective, NoopAnimationsModule],
providers: [ providers: [
{ provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService }, { provide: WritableFeaturesServiceToken, useClass: StorageFeaturesService },
provideMockFeatureFlags({ provideMockFeatureFlags({

View File

@ -18,9 +18,8 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { AboutServerSettingsComponent } from './about-server-settings.component'; import { AboutServerSettingsComponent } from './about-server-settings.component';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { AppConfigServiceMock } from '../../common'; import { AppConfigServiceMock } from '../../common';
import { NoopTranslateModule } from '@alfresco/adf-core';
const aboutGithubDetails = { const aboutGithubDetails = {
url: 'https://github.com/componany/repository/commits/', url: 'https://github.com/componany/repository/commits/',
@ -38,7 +37,7 @@ describe('AboutServerSettingsComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [{ provide: AppConfigService, useClass: AppConfigServiceMock }] providers: [{ provide: AppConfigService, useClass: AppConfigServiceMock }]
}); });
fixture = TestBed.createComponent(AboutServerSettingsComponent); fixture = TestBed.createComponent(AboutServerSettingsComponent);

View File

@ -21,12 +21,11 @@ import { AuthGuardBpm } from './auth-guard-bpm.service';
import { AuthenticationService } from '../services/authentication.service'; import { AuthenticationService } from '../services/authentication.service';
import { RouterStateSnapshot, Router } from '@angular/router'; import { RouterStateSnapshot, Router } from '@angular/router';
import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { TranslateModule } from '@ngx-translate/core';
import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service'; import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { RedirectAuthService } from '../oidc/redirect-auth.service'; import { RedirectAuthService } from '../oidc/redirect-auth.service';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
import { OidcAuthenticationService } from '../oidc/oidc-authentication.service'; import { OidcAuthenticationService } from '../oidc/oidc-authentication.service';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('AuthGuardService BPM', () => { describe('AuthGuardService BPM', () => {
let authGuard: AuthGuardBpm; let authGuard: AuthGuardBpm;
@ -39,7 +38,7 @@ describe('AuthGuardService BPM', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatDialogModule], imports: [NoopTranslateModule, MatDialogModule],
providers: [ providers: [
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }, { provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } },
{ {

View File

@ -21,13 +21,12 @@ import { AuthGuardEcm } from './auth-guard-ecm.service';
import { AuthenticationService } from '../services/authentication.service'; import { AuthenticationService } from '../services/authentication.service';
import { RouterStateSnapshot, Router } from '@angular/router'; import { RouterStateSnapshot, Router } from '@angular/router';
import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { TranslateModule } from '@ngx-translate/core';
import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service'; import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { RedirectAuthService } from '../oidc/redirect-auth.service'; import { RedirectAuthService } from '../oidc/redirect-auth.service';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
import { OidcAuthenticationService } from '../oidc/oidc-authentication.service'; import { OidcAuthenticationService } from '../oidc/oidc-authentication.service';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('AuthGuardService ECM', () => { describe('AuthGuardService ECM', () => {
let authGuard: AuthGuardEcm; let authGuard: AuthGuardEcm;
@ -39,7 +38,7 @@ describe('AuthGuardService ECM', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, RouterTestingModule, MatDialogModule], imports: [NoopTranslateModule, RouterTestingModule, MatDialogModule],
providers: [ providers: [
BasicAlfrescoAuthService, BasicAlfrescoAuthService,
AppConfigService, AppConfigService,

View File

@ -20,8 +20,7 @@ import { ActivatedRouteSnapshot, Router } from '@angular/router';
import { AuthGuardSsoRoleService } from './auth-guard-sso-role.service'; import { AuthGuardSsoRoleService } from './auth-guard-sso-role.service';
import { JwtHelperService } from '../services/jwt-helper.service'; import { JwtHelperService } from '../services/jwt-helper.service';
import { MatDialog, MatDialogModule } from '@angular/material/dialog'; import { MatDialog, MatDialogModule } from '@angular/material/dialog';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('Auth Guard SSO role service', () => { describe('Auth Guard SSO role service', () => {
let authGuard: AuthGuardSsoRoleService; let authGuard: AuthGuardSsoRoleService;
@ -30,7 +29,7 @@ describe('Auth Guard SSO role service', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatDialogModule] imports: [NoopTranslateModule, MatDialogModule]
}); });
localStorage.clear(); localStorage.clear();
authGuard = TestBed.inject(AuthGuardSsoRoleService); authGuard = TestBed.inject(AuthGuardSsoRoleService);

View File

@ -20,15 +20,14 @@ import { Router, RouterStateSnapshot } from '@angular/router';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { AuthGuard } from './auth-guard.service'; import { AuthGuard } from './auth-guard.service';
import { AuthenticationService } from '../services/authentication.service'; import { AuthenticationService } from '../services/authentication.service';
import { TranslateModule } from '@ngx-translate/core';
import { StorageService } from '../../common/services/storage.service'; import { StorageService } from '../../common/services/storage.service';
import { OidcAuthenticationService } from '../oidc/oidc-authentication.service'; import { OidcAuthenticationService } from '../oidc/oidc-authentication.service';
import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service'; import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';
import { RedirectAuthService } from '../oidc/redirect-auth.service'; import { RedirectAuthService } from '../oidc/redirect-auth.service';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatDialogModule } from '@angular/material/dialog'; import { MatDialogModule } from '@angular/material/dialog';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('AuthGuardService', () => { describe('AuthGuardService', () => {
let state; let state;
@ -42,7 +41,7 @@ describe('AuthGuardService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatDialogModule, RouterTestingModule], imports: [NoopTranslateModule, MatDialogModule, RouterTestingModule],
providers: [ providers: [
AppConfigService, AppConfigService,
StorageService, StorageService,

View File

@ -19,7 +19,6 @@ import { fakeAsync, TestBed } from '@angular/core/testing';
import { AuthenticationService } from './authentication.service'; import { AuthenticationService } from './authentication.service';
import { CookieService } from '../../common/services/cookie.service'; import { CookieService } from '../../common/services/cookie.service';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { TranslateModule } from '@ngx-translate/core';
import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service'; import { BasicAlfrescoAuthService } from '../basic-auth/basic-alfresco-auth.service';
import { AuthModule } from '../oidc/auth.module'; import { AuthModule } from '../oidc/auth.module';
import { HttpClientModule } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
@ -30,6 +29,7 @@ import { OAuthEvent } from 'angular-oauth2-oidc';
import { Subject } from 'rxjs'; import { Subject } from 'rxjs';
import { RedirectAuthService } from '../oidc/redirect-auth.service'; import { RedirectAuthService } from '../oidc/redirect-auth.service';
import { Injector } from '@angular/core'; import { Injector } from '@angular/core';
import { NoopTranslateModule } from '@alfresco/adf-core';
declare let jasmine: any; declare let jasmine: any;
// eslint-disable-next-line // eslint-disable-next-line
@ -42,7 +42,7 @@ xdescribe('AuthenticationService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AuthModule.forRoot({ useHash: true }), HttpClientModule], imports: [NoopTranslateModule, AuthModule.forRoot({ useHash: true }), HttpClientModule],
providers: [ providers: [
{ {
provide: CookieService, provide: CookieService,

View File

@ -27,9 +27,8 @@ import {
mockIdentityGroups, mockIdentityGroups,
roleMappingMock roleMappingMock
} from '../mock/identity-group.mock'; } from '../mock/identity-group.mock';
import { TranslateModule } from '@ngx-translate/core';
import { AdfHttpClient } from '../../../../api/src'; import { AdfHttpClient } from '../../../../api/src';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('IdentityGroupService', () => { describe('IdentityGroupService', () => {
let service: IdentityGroupService; let service: IdentityGroupService;
@ -38,7 +37,7 @@ describe('IdentityGroupService', () => {
beforeEach(fakeAsync(() => { beforeEach(fakeAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [AdfHttpClient] providers: [AdfHttpClient]
}); });
service = TestBed.inject(IdentityGroupService); service = TestBed.inject(IdentityGroupService);

View File

@ -32,10 +32,9 @@ import { IdentityUserService } from './identity-user.service';
import { JwtHelperService } from './jwt-helper.service'; import { JwtHelperService } from './jwt-helper.service';
import { mockToken } from '../mock/jwt-helper.service.spec'; import { mockToken } from '../mock/jwt-helper.service.spec';
import { IdentityRoleModel } from '../models/identity-role.model'; import { IdentityRoleModel } from '../models/identity-role.model';
import { TranslateModule } from '@ngx-translate/core';
import { AdfHttpClient } from '../../../../api/src'; import { AdfHttpClient } from '../../../../api/src';
import { StorageService } from '../../common/services/storage.service'; import { StorageService } from '../../common/services/storage.service';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('IdentityUserService', () => { describe('IdentityUserService', () => {
const mockRoles = [ const mockRoles = [
@ -53,7 +52,7 @@ describe('IdentityUserService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [StorageService, AdfHttpClient] providers: [StorageService, AdfHttpClient]
}); });
storageService = TestBed.inject(StorageService); storageService = TestBed.inject(StorageService);

View File

@ -21,7 +21,7 @@ import { MatCheckbox, MatCheckboxChange } from '@angular/material/checkbox';
import { CardViewUpdateService } from '../../services/card-view-update.service'; import { CardViewUpdateService } from '../../services/card-view-update.service';
import { CardViewBoolItemComponent } from './card-view-boolitem.component'; import { CardViewBoolItemComponent } from './card-view-boolitem.component';
import { CardViewBoolItemModel } from '../../models/card-view-boolitem.model'; import { CardViewBoolItemModel } from '../../models/card-view-boolitem.model';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('CardViewBoolItemComponent', () => { describe('CardViewBoolItemComponent', () => {
let fixture: ComponentFixture<CardViewBoolItemComponent>; let fixture: ComponentFixture<CardViewBoolItemComponent>;
@ -29,7 +29,7 @@ describe('CardViewBoolItemComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()] imports: [NoopTranslateModule]
}); });
fixture = TestBed.createComponent(CardViewBoolItemComponent); fixture = TestBed.createComponent(CardViewBoolItemComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@ -16,10 +16,10 @@
*/ */
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core';
import { SelectFilterInputComponent } from './select-filter-input.component'; import { SelectFilterInputComponent } from './select-filter-input.component';
import { MatSelect, MatSelectModule } from '@angular/material/select'; import { MatSelect, MatSelectModule } from '@angular/material/select';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('SelectFilterInputComponent', () => { describe('SelectFilterInputComponent', () => {
let fixture: ComponentFixture<SelectFilterInputComponent>; let fixture: ComponentFixture<SelectFilterInputComponent>;
@ -28,7 +28,7 @@ describe('SelectFilterInputComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, TranslateModule.forRoot(), MatSelectModule], imports: [NoopAnimationsModule, NoopTranslateModule, MatSelectModule],
providers: [MatSelect] providers: [MatSelect]
}); });

View File

@ -19,12 +19,8 @@ import { Component, ViewChild } from '@angular/core';
import { ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; import { ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing';
import { ClipboardService } from './clipboard.service'; import { ClipboardService } from './clipboard.service';
import { ClipboardDirective } from './clipboard.directive'; import { ClipboardDirective } from './clipboard.directive';
import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TranslationService } from '../translation'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { TranslationMock } from '../mock';
import { MatButtonModule } from '@angular/material/button';
@Component({ @Component({
selector: 'adf-test-component', selector: 'adf-test-component',
@ -42,8 +38,7 @@ describe('ClipboardDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule, MatButtonModule, ClipboardDirective], imports: [NoopTranslateModule, MatSnackBarModule, ClipboardDirective],
providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }],
declarations: [TestTargetClipboardComponent] declarations: [TestTargetClipboardComponent]
}); });
fixture = TestBed.createComponent(TestTargetClipboardComponent); fixture = TestBed.createComponent(TestTargetClipboardComponent);
@ -86,8 +81,7 @@ describe('CopyClipboardDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule, ClipboardDirective], imports: [NoopTranslateModule, MatSnackBarModule, ClipboardDirective],
providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }],
declarations: [TestCopyClipboardComponent] declarations: [TestCopyClipboardComponent]
}); });
fixture = TestBed.createComponent(TestCopyClipboardComponent); fixture = TestBed.createComponent(TestCopyClipboardComponent);

View File

@ -19,20 +19,16 @@ import { NotificationService } from '../notifications/services/notification.serv
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { ClipboardService } from './clipboard.service'; import { ClipboardService } from './clipboard.service';
import { MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSnackBarModule } from '@angular/material/snack-bar';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslationService } from '../translation';
import { TranslationMock } from '../mock';
describe('ClipboardService', () => { describe('ClipboardService', () => {
let clipboardService: ClipboardService; let clipboardService: ClipboardService;
let notificationService: NotificationService; let notificationService: NotificationService;
let inputElement; let inputElement: HTMLInputElement;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule, MatSnackBarModule], imports: [NoopTranslateModule, MatSnackBarModule]
providers: [ClipboardService, { provide: TranslationService, useClass: TranslationMock }]
}); });
clipboardService = TestBed.inject(ClipboardService); clipboardService = TestBed.inject(ClipboardService);
notificationService = TestBed.inject(NotificationService); notificationService = TestBed.inject(NotificationService);

View File

@ -19,11 +19,10 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CommentModel } from '../../models/comment.model'; import { CommentModel } from '../../models/comment.model';
import { CommentListComponent } from './comment-list.component'; import { CommentListComponent } from './comment-list.component';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { TranslateModule } from '@ngx-translate/core';
import { commentUserNoPictureDefined, commentUserPictureDefined, mockCommentOne, testUser } from './mocks/comment-list.mock'; import { commentUserNoPictureDefined, commentUserPictureDefined, mockCommentOne, testUser } from './mocks/comment-list.mock';
import { CommentListServiceMock } from './mocks/comment-list.service.mock'; import { CommentListServiceMock } from './mocks/comment-list.service.mock';
import { ADF_COMMENTS_SERVICE } from '../interfaces/comments.token'; import { ADF_COMMENTS_SERVICE } from '../interfaces/comments.token';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('CommentListComponent', () => { describe('CommentListComponent', () => {
let commentList: CommentListComponent; let commentList: CommentListComponent;
@ -32,7 +31,7 @@ describe('CommentListComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [ providers: [
{ {
provide: ADF_COMMENTS_SERVICE, provide: ADF_COMMENTS_SERVICE,

View File

@ -18,13 +18,12 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { CommentsComponent } from './comments.component'; import { CommentsComponent } from './comments.component';
import { TranslateModule } from '@ngx-translate/core';
import { CommentsServiceMock, commentsResponseMock } from './mocks/comments.service.mock'; import { CommentsServiceMock, commentsResponseMock } from './mocks/comments.service.mock';
import { of, throwError } from 'rxjs'; import { of, throwError } from 'rxjs';
import { ADF_COMMENTS_SERVICE } from './interfaces/comments.token'; import { ADF_COMMENTS_SERVICE } from './interfaces/comments.token';
import { CommentsService } from './interfaces/comments-service.interface'; import { CommentsService } from './interfaces/comments-service.interface';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('CommentsComponent', () => { describe('CommentsComponent', () => {
let component: CommentsComponent; let component: CommentsComponent;
@ -35,7 +34,7 @@ describe('CommentsComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, HttpClientTestingModule, TranslateModule.forRoot(), CommentsComponent], imports: [NoopAnimationsModule, NoopTranslateModule, CommentsComponent],
providers: [ providers: [
{ {
provide: ADF_COMMENTS_SERVICE, provide: ADF_COMMENTS_SERVICE,

View File

@ -17,18 +17,17 @@
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { UserPreferencesService } from './user-preferences.service'; import { UserPreferencesService } from './user-preferences.service';
import { TranslateModule } from '@ngx-translate/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { DirectionalityConfigService } from './directionality-config.service'; import { DirectionalityConfigService } from './directionality-config.service';
import { directionalityConfigFactory } from './directionality-config-factory'; import { directionalityConfigFactory } from './directionality-config-factory';
import { APP_INITIALIZER } from '@angular/core'; import { APP_INITIALIZER } from '@angular/core';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('DirectionalityConfigService', () => { describe('DirectionalityConfigService', () => {
let userPreferencesService: UserPreferencesService; let userPreferencesService: UserPreferencesService;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [ providers: [
UserPreferencesService, UserPreferencesService,
{ {

View File

@ -16,15 +16,14 @@
*/ */
import { TestBed } from '@angular/core/testing'; import { TestBed } from '@angular/core/testing';
import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { AppConfigService } from '../../app-config/app-config.service'; import { AppConfigService } from '../../app-config/app-config.service';
import { StorageService } from '../../common/services/storage.service'; import { StorageService } from '../../common/services/storage.service';
import { UserPreferencesService, UserPreferenceValues } from '../../common/services/user-preferences.service'; import { UserPreferencesService, UserPreferenceValues } from '../../common/services/user-preferences.service';
import { AppConfigServiceMock } from '../mock/app-config.service.mock'; import { AppConfigServiceMock } from '../mock/app-config.service.mock';
import { AlfrescoApiService } from '../../services/alfresco-api.service'; import { AlfrescoApiService } from '../../services/alfresco-api.service';
import { AlfrescoApiServiceMock, TranslationMock } from '../../mock'; import { AlfrescoApiServiceMock } from '../../mock';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { TranslationService } from '../../translation';
describe('UserPreferencesService', () => { describe('UserPreferencesService', () => {
const supportedPaginationSize = [5, 10, 15, 20]; const supportedPaginationSize = [5, 10, 15, 20];
@ -36,11 +35,8 @@ describe('UserPreferencesService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), HttpClientTestingModule], imports: [NoopTranslateModule],
providers: [ providers: [
UserPreferencesService,
StorageService,
{ provide: TranslationService, useClass: TranslationMock },
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock } { provide: AppConfigService, useClass: AppConfigServiceMock }
] ]

View File

@ -20,11 +20,10 @@ import { DateCellComponent } from './date-cell.component';
import { DataColumn, DateConfig } from '../../data/data-column.model'; import { DataColumn, DateConfig } from '../../data/data-column.model';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject } from 'rxjs';
import { AppConfigService } from '../../../app-config'; import { AppConfigService } from '../../../app-config';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
import { LOCALE_ID } from '@angular/core'; import { LOCALE_ID } from '@angular/core';
import { registerLocaleData } from '@angular/common'; import { registerLocaleData } from '@angular/common';
import localePL from '@angular/common/locales/pl'; import localePL from '@angular/common/locales/pl';
import { NoopTranslateModule } from '@alfresco/adf-core';
let component: DateCellComponent; let component: DateCellComponent;
let appConfigService: AppConfigService; let appConfigService: AppConfigService;
@ -62,11 +61,7 @@ const checkDisplayedTooltip = (expectedTooltip: string) => {
const configureTestingModule = (providers: any[]) => { const configureTestingModule = (providers: any[]) => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [DateCellComponent, NoopTranslateModule],
DateCellComponent,
HttpClientTestingModule,
TranslateModule.forRoot()
],
providers providers
}); });
fixture = TestBed.createComponent(DateCellComponent); fixture = TestBed.createComponent(DateCellComponent);

View File

@ -20,7 +20,7 @@ import { MatDialogRef, MAT_DIALOG_DATA, MatDialogModule } from '@angular/materia
import { ConfirmDialogComponent } from './confirm.dialog'; import { ConfirmDialogComponent } from './confirm.dialog';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('Confirm Dialog Component', () => { describe('Confirm Dialog Component', () => {
let fixture: ComponentFixture<ConfirmDialogComponent>; let fixture: ComponentFixture<ConfirmDialogComponent>;
@ -39,7 +39,7 @@ describe('Confirm Dialog Component', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [MatDialogModule, NoopAnimationsModule, TranslateModule.forRoot()], imports: [MatDialogModule, NoopAnimationsModule, NoopTranslateModule],
providers: [ providers: [
{ provide: MatDialogRef, useValue: dialogRef }, { provide: MatDialogRef, useValue: dialogRef },
{ provide: MAT_DIALOG_DATA, useValue: data } { provide: MAT_DIALOG_DATA, useValue: data }

View File

@ -16,7 +16,7 @@
*/ */
import { JsonPipe, NgClass, NgForOf, NgIf, NgStyle, NgTemplateOutlet, UpperCasePipe } from '@angular/common'; import { JsonPipe, NgClass, NgForOf, NgIf, NgStyle, NgTemplateOutlet, UpperCasePipe } from '@angular/common';
import { Component, Inject, Injector, Input, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; import { Component, Inject, Injector, Input, OnDestroy, OnInit, Optional, ViewEncapsulation } from '@angular/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { MatButtonModule } from '@angular/material/button'; import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon'; import { MatIconModule } from '@angular/material/icon';
@ -77,8 +77,9 @@ export class FormRendererComponent<T> implements OnInit, OnDestroy {
constructor( constructor(
public formService: FormService, public formService: FormService,
private formRulesManager: FormRulesManager<T>, private formRulesManager: FormRulesManager<T>,
@Optional()
@Inject(FORM_FIELD_MODEL_RENDER_MIDDLEWARE) @Inject(FORM_FIELD_MODEL_RENDER_MIDDLEWARE)
private middlewareServices: FormFieldModelRenderMiddleware[] private middlewareServices?: FormFieldModelRenderMiddleware[]
) {} ) {}
ngOnInit(): void { ngOnInit(): void {
@ -161,14 +162,16 @@ export class FormRendererComponent<T> implements OnInit, OnDestroy {
} }
private runMiddlewareServices(): void { private runMiddlewareServices(): void {
const formFields = this.formDefinition.getFormFields(); if (this.middlewareServices && this.middlewareServices.length > 0) {
const formFields = this.formDefinition.getFormFields();
formFields.forEach((field) => { formFields.forEach((field) => {
this.middlewareServices.forEach((middlewareService) => { this.middlewareServices.forEach((middlewareService) => {
if (middlewareService.type === field.type) { if (middlewareService.type === field.type) {
field = middlewareService.getParsedField(field); field = middlewareService.getParsedField(field);
} }
});
}); });
}); }
} }
} }

View File

@ -20,13 +20,13 @@ import { FormFieldModel } from '../core/form-field.model';
import { AmountWidgetComponent, ADF_AMOUNT_SETTINGS } from './amount.widget'; import { AmountWidgetComponent, ADF_AMOUNT_SETTINGS } from './amount.widget';
import { FormBaseModule } from '../../../form-base.module'; import { FormBaseModule } from '../../../form-base.module';
import { FormFieldTypes } from '../core/form-field-types'; import { FormFieldTypes } from '../core/form-field-types';
import { TranslateModule } from '@ngx-translate/core';
import { FormModel } from '../core/form.model'; import { FormModel } from '../core/form.model';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatInputHarness } from '@angular/material/input/testing'; import { MatInputHarness } from '@angular/material/input/testing';
import { MatFormFieldHarness } from '@angular/material/form-field/testing'; import { MatFormFieldHarness } from '@angular/material/form-field/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('AmountWidgetComponent', () => { describe('AmountWidgetComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@ -36,7 +36,7 @@ describe('AmountWidgetComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormBaseModule] imports: [NoopTranslateModule, NoopAnimationsModule, FormBaseModule]
}); });
fixture = TestBed.createComponent(AmountWidgetComponent); fixture = TestBed.createComponent(AmountWidgetComponent);
widget = fixture.componentInstance; widget = fixture.componentInstance;
@ -135,7 +135,7 @@ describe('AmountWidgetComponent - rendering', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormBaseModule] imports: [NoopTranslateModule, NoopAnimationsModule, FormBaseModule]
}); });
fixture = TestBed.createComponent(AmountWidgetComponent); fixture = TestBed.createComponent(AmountWidgetComponent);
widget = fixture.componentInstance; widget = fixture.componentInstance;
@ -331,7 +331,7 @@ describe('AmountWidgetComponent settings', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormBaseModule], imports: [NoopTranslateModule, NoopAnimationsModule, FormBaseModule],
providers: [ providers: [
{ {
provide: ADF_AMOUNT_SETTINGS, provide: ADF_AMOUNT_SETTINGS,

View File

@ -19,7 +19,6 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { FormFieldModel } from '../core/form-field.model'; import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model'; import { FormModel } from '../core/form.model';
import { DateTimeWidgetComponent } from './date-time.widget'; import { DateTimeWidgetComponent } from './date-time.widget';
import { TranslateModule } from '@ngx-translate/core';
import { FormFieldTypes } from '../core/form-field-types'; import { FormFieldTypes } from '../core/form-field-types';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
@ -29,7 +28,7 @@ import { MatDialogModule } from '@angular/material/dialog';
import { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core'; import { MatDatetimepickerModule, MatNativeDatetimeModule } from '@mat-datetimepicker/core';
import { MatDatepickerModule } from '@angular/material/datepicker'; import { MatDatepickerModule } from '@angular/material/datepicker';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { NoopTranslateModule } from '@alfresco/adf-core';
describe('DateTimeWidgetComponent', () => { describe('DateTimeWidgetComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@ -41,8 +40,7 @@ describe('DateTimeWidgetComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(), NoopTranslateModule,
HttpClientTestingModule,
NoopAnimationsModule, NoopAnimationsModule,
MatDialogModule, MatDialogModule,
MatNativeDatetimeModule, MatNativeDatetimeModule,

View File

@ -23,10 +23,8 @@ import { FormModel } from '../core/form.model';
import { FormFieldModel } from '../core/form-field.model'; import { FormFieldModel } from '../core/form-field.model';
import { FormFieldTypes } from '../core/form-field-types'; import { FormFieldTypes } from '../core/form-field-types';
import { MultilineTextWidgetComponentComponent } from './multiline-text.widget'; import { MultilineTextWidgetComponentComponent } from './multiline-text.widget';
import { ComponentFixture, getTestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { TranslationService } from '../../../../translation/translation.service';
import { TranslationMock } from '../../../../mock/translation.service.mock';
describe('MultilineTextWidgetComponentComponent', () => { describe('MultilineTextWidgetComponentComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@ -35,11 +33,10 @@ describe('MultilineTextWidgetComponentComponent', () => {
let element: HTMLElement; let element: HTMLElement;
beforeEach(() => { beforeEach(() => {
getTestBed().configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule], imports: [NoopTranslateModule, NoopAnimationsModule, MultilineTextWidgetComponentComponent]
providers: [{ provide: TranslationService, useClass: TranslationMock }]
}); });
fixture = getTestBed().createComponent(MultilineTextWidgetComponentComponent); fixture = TestBed.createComponent(MultilineTextWidgetComponentComponent);
widget = fixture.componentInstance; widget = fixture.componentInstance;
element = fixture.nativeElement; element = fixture.nativeElement;
loader = TestbedHarnessEnvironment.loader(fixture); loader = TestbedHarnessEnvironment.loader(fixture);

View File

@ -20,11 +20,11 @@ import { FormFieldTypes } from '../core/form-field-types';
import { FormFieldModel } from '../core/form-field.model'; import { FormFieldModel } from '../core/form-field.model';
import { FormModel } from '../core/form.model'; import { FormModel } from '../core/form.model';
import { TextWidgetComponent } from './text.widget'; import { TextWidgetComponent } from './text.widget';
import { TranslateModule } from '@ngx-translate/core';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatInputHarness } from '@angular/material/input/testing'; import { MatInputHarness } from '@angular/material/input/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NoopTranslateModule } from '@alfresco/adf-core';
describe('TextWidgetComponent', () => { describe('TextWidgetComponent', () => {
const form = new FormModel({ taskId: 'fake-task-id' }); const form = new FormModel({ taskId: 'fake-task-id' });
@ -37,7 +37,7 @@ describe('TextWidgetComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, TextWidgetComponent] imports: [NoopTranslateModule, NoopAnimationsModule, TextWidgetComponent]
}); });
fixture = TestBed.createComponent(TextWidgetComponent); fixture = TestBed.createComponent(TextWidgetComponent);
widget = fixture.componentInstance; widget = fixture.componentInstance;

View File

@ -24,9 +24,9 @@ export interface LangChangeEvent {
translations: any; translations: any;
} }
/** @deprecated use `NoopTranslateModule` instead */
@Injectable() @Injectable()
export class TranslationMock implements TranslationService { export class TranslationMock implements TranslationService {
defaultLang: string = 'en'; defaultLang: string = 'en';
userLang: string; userLang: string;
customLoader: any; customLoader: any;
@ -50,5 +50,4 @@ export class TranslationMock implements TranslationService {
instant(key: string | Array<string>): string | any { instant(key: string | Array<string>): string | any {
return key; return key;
} }
} }

View File

@ -20,14 +20,12 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatSnackBarConfig, MatSnackBarModule } from '@angular/material/snack-bar'; import { MatSnackBarConfig, MatSnackBarModule } from '@angular/material/snack-bar';
import { NotificationService } from './notification.service'; import { NotificationService } from './notification.service';
import { TranslationService } from '../../translation/translation.service'; import { TranslationService } from '../../translation/translation.service';
import { TranslateModule } from '@ngx-translate/core';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatIconHarness } from '@angular/material/icon/testing'; import { MatIconHarness } from '@angular/material/icon/testing';
import {MatSnackBarHarness} from '@angular/material/snack-bar/testing'; import { MatSnackBarHarness } from '@angular/material/snack-bar/testing';
import { HttpClientModule } from '@angular/common/http';
import { TranslationMock } from '../../mock';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NoopTranslateModule } from '@alfresco/adf-core';
@Component({ @Component({
template: '', template: '',
@ -94,10 +92,8 @@ describe('NotificationService', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, HttpClientModule, MatSnackBarModule], imports: [NoopTranslateModule, NoopAnimationsModule, MatSnackBarModule],
declarations: [ProvidesNotificationServiceComponent], declarations: [ProvidesNotificationServiceComponent]
providers:[
{ provide: TranslationService, useClass: TranslationMock }]
}); });
translationService = TestBed.inject(TranslationService); translationService = TestBed.inject(TranslationService);
fixture = TestBed.createComponent(ProvidesNotificationServiceComponent); fixture = TestBed.createComponent(ProvidesNotificationServiceComponent);

View File

@ -19,13 +19,9 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { PaginationComponent } from './pagination.component'; import { PaginationComponent } from './pagination.component';
import { PaginatedComponent } from './paginated-component.interface'; import { PaginatedComponent } from './paginated-component.interface';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject } from 'rxjs';
import { TranslateFakeLoader, TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { PaginationModel } from '../models/pagination.model'; import { PaginationModel } from '../models/pagination.model';
import { TranslationService } from '../translation/translation.service';
import { TranslationMock } from '../mock/translation.service.mock';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientModule } from '@angular/common/http'; import { NoopTranslateModule } from '@alfresco/adf-core';
import { MatMenuModule } from '@angular/material/menu';
class FakePaginationInput implements PaginationModel { class FakePaginationInput implements PaginationModel {
count = 25; count = 25;
@ -46,17 +42,7 @@ describe('PaginationComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [NoopAnimationsModule, NoopTranslateModule, PaginationComponent]
NoopAnimationsModule,
HttpClientModule,
MatMenuModule,
TranslateModule.forRoot({
loader: {provide: TranslateLoader, useClass: TranslateFakeLoader}
})
],
providers:[
{ provide: TranslationService, useClass: TranslationMock }
]
}); });
fixture = TestBed.createComponent(PaginationComponent); fixture = TestBed.createComponent(PaginationComponent);
component = fixture.componentInstance; component = fixture.componentInstance;
@ -68,7 +54,7 @@ describe('PaginationComponent', () => {
}); });
it('should have an "empty" class if no items present', async () => { it('should have an "empty" class if no items present', async () => {
fixture.detectChanges(); fixture.detectChanges();
await fixture.whenStable(); await fixture.whenStable();
expect(fixture.nativeElement.classList.contains('adf-pagination__empty')).toBeTruthy(); expect(fixture.nativeElement.classList.contains('adf-pagination__empty')).toBeTruthy();

View File

@ -18,14 +18,11 @@
import { NgModule, APP_INITIALIZER } from '@angular/core'; import { NgModule, APP_INITIALIZER } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { TranslateModule } from '@ngx-translate/core';
import { CoreModule } from '../core.module'; import { CoreModule } from '../core.module';
import { AlfrescoApiService } from '../services/alfresco-api.service'; import { AlfrescoApiService } from '../services/alfresco-api.service';
import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock'; import { AlfrescoApiServiceMock } from '../mock/alfresco-api.service.mock';
import { AppConfigService } from '../app-config/app-config.service'; import { AppConfigService } from '../app-config/app-config.service';
import { AppConfigServiceMock } from '../common/mock/app-config.service.mock'; import { AppConfigServiceMock } from '../common/mock/app-config.service.mock';
import { TranslationService } from '../translation/translation.service';
import { TranslationMock } from '../mock/translation.service.mock';
import { DatePipe } from '@angular/common'; import { DatePipe } from '@angular/common';
import { CookieService } from '../common/services/cookie.service'; import { CookieService } from '../common/services/cookie.service';
import { CookieServiceMock } from '../mock/cookie.service.mock'; import { CookieServiceMock } from '../mock/cookie.service.mock';
@ -34,6 +31,7 @@ import { directionalityConfigFactory } from '../common/services/directionality-c
import { DirectionalityConfigService } from '../common/services/directionality-config.service'; import { DirectionalityConfigService } from '../common/services/directionality-config.service';
import { AuthModule, RedirectAuthService } from '../auth'; import { AuthModule, RedirectAuthService } from '../auth';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
import { NoopTranslateModule } from './noop-translate.module';
@NgModule({ @NgModule({
imports: [ imports: [
@ -41,14 +39,13 @@ import { EMPTY, of } from 'rxjs';
NoopAnimationsModule, NoopAnimationsModule,
RouterTestingModule, RouterTestingModule,
HttpClientModule, HttpClientModule,
TranslateModule.forRoot(), CoreModule.forRoot(),
CoreModule.forRoot() NoopTranslateModule
], ],
providers: [ providers: [
DatePipe, DatePipe,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
{ provide: CookieService, useClass: CookieServiceMock }, { provide: CookieService, useClass: CookieServiceMock },
{ {
provide: APP_INITIALIZER, provide: APP_INITIALIZER,
@ -58,6 +55,6 @@ import { EMPTY, of } from 'rxjs';
}, },
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, init: () => {}, onTokenReceived: of() } } { provide: RedirectAuthService, useValue: { onLogin: EMPTY, init: () => {}, onTokenReceived: of() } }
], ],
exports: [NoopAnimationsModule, CoreModule, TranslateModule, RouterTestingModule] exports: [NoopAnimationsModule, CoreModule, RouterTestingModule]
}) })
export class CoreTestingModule {} export class CoreTestingModule {}

View File

@ -18,3 +18,4 @@
export * from './setup-test-bed'; export * from './setup-test-bed';
export * from './core.testing.module'; export * from './core.testing.module';
export * from './core.story.module'; export * from './core.story.module';
export * from './noop-translate.module';

View File

@ -0,0 +1,53 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { EventEmitter, NgModule } from '@angular/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { TranslateModule } from '@ngx-translate/core';
import { TranslationService } from '../translation/translation.service';
import { LangChangeEvent } from '../mock';
import { Observable, of } from 'rxjs';
export class NoopTranslationService implements TranslationService {
defaultLang: string = 'en';
userLang: string;
customLoader: any;
translate: any = {
onLangChange: new EventEmitter<LangChangeEvent>()
};
addTranslationFolder() {}
onTranslationChanged() {}
use(): any {}
loadTranslation() {}
get(key: string | Array<string>): Observable<string | any> {
return of(key);
}
instant(key: string | Array<string>): string | any {
return key;
}
}
@NgModule({
imports: [HttpClientTestingModule, TranslateModule.forRoot()],
providers: [{ provide: TranslationService, useClass: NoopTranslationService }],
exports: [TranslateModule]
})
export class NoopTranslateModule {}

View File

@ -19,6 +19,8 @@ import { SimpleChange } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { TxtViewerComponent } from './txt-viewer.component'; import { TxtViewerComponent } from './txt-viewer.component';
import { CoreTestingModule } from '../../../testing'; import { CoreTestingModule } from '../../../testing';
import { HttpClient } from '@angular/common/http';
import { of } from 'rxjs';
describe('Text View component', () => { describe('Text View component', () => {
let component: TxtViewerComponent; let component: TxtViewerComponent;
@ -27,41 +29,42 @@ describe('Text View component', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CoreTestingModule] imports: [CoreTestingModule, TxtViewerComponent]
}); });
fixture = TestBed.createComponent(TxtViewerComponent); fixture = TestBed.createComponent(TxtViewerComponent);
const httpClient = TestBed.inject(HttpClient);
spyOn(httpClient, 'get').and.returnValue(of('example'));
element = fixture.nativeElement; element = fixture.nativeElement;
component = fixture.componentInstance; component = fixture.componentInstance;
}); });
describe('View', () => { describe('View', () => {
it('Should text container be present with urlFile', (done) => { it('Should text container be present with urlFile', async () => {
fixture.detectChanges(); fixture.detectChanges();
const urlFile = './fake-test-file.txt'; const urlFile = './fake-test-file.txt';
const change = new SimpleChange(null, urlFile, true); const change = new SimpleChange(null, urlFile, true);
component.ngOnChanges({ urlFile: change }).then(() => { await component.ngOnChanges({ urlFile: change });
fixture.detectChanges();
fixture.whenStable().then(() => { fixture.detectChanges();
expect(element.querySelector('.adf-txt-viewer-content').textContent).toContain('example'); await fixture.whenStable();
done();
}); expect(element.querySelector('.adf-txt-viewer-content').textContent).toContain('example');
});
}); });
it('Should text container be present with Blob file', (done) => { it('Should text container be present with Blob file', async () => {
const blobFile = new Blob(['text example'], { type: 'text/txt' }); const blobFile = new Blob(['text example'], { type: 'text/txt' });
const change = new SimpleChange(null, blobFile, true); const change = new SimpleChange(null, blobFile, true);
component.ngOnChanges({ blobFile: change }).then(() => { await component.ngOnChanges({ blobFile: change });
fixture.detectChanges();
fixture.whenStable().then(() => { fixture.detectChanges();
expect(element.querySelector('.adf-txt-viewer-content').textContent).toContain('example'); await fixture.whenStable();
done();
}); expect(element.querySelector('.adf-txt-viewer-content').textContent).toContain('example');
});
}); });
}); });
}); });

View File

@ -17,25 +17,21 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule } from '@ngx-translate/core';
import { import {
AlfrescoApiService, AlfrescoApiService,
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
AppConfigService, AppConfigService,
AppConfigServiceMock, AppConfigServiceMock,
TranslationService, AuthModule,
TranslationMock, NoopTranslateModule
AuthModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
@NgModule({ @NgModule({
imports: [AuthModule.forRoot({ useHash: true }), NoopAnimationsModule, HttpClientTestingModule, TranslateModule.forRoot()], imports: [AuthModule.forRoot({ useHash: true }), NoopAnimationsModule, NoopTranslateModule],
providers: [ providers: [
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock }
{ provide: TranslationService, useClass: TranslationMock }
], ],
exports: [NoopAnimationsModule, TranslateModule] exports: [NoopAnimationsModule]
}) })
export class InsightsTestingModule {} export class InsightsTestingModule {}

View File

@ -16,9 +16,7 @@
*/ */
import { Component, ViewEncapsulation, Input, Inject, OnDestroy } from '@angular/core'; import { Component, ViewEncapsulation, Input, Inject, OnDestroy } from '@angular/core';
import { import { AppConfigService, UserPreferencesService } from '@alfresco/adf-core';
AppConfigService, UserPreferencesService
} from '@alfresco/adf-core';
import { ServiceTaskQueryCloudRequestModel } from '../models/service-task-cloud.model'; import { ServiceTaskQueryCloudRequestModel } from '../models/service-task-cloud.model';
import { BaseTaskListCloudComponent } from './base-task-list-cloud.component'; import { BaseTaskListCloudComponent } from './base-task-list-cloud.component';
import { ServiceTaskListCloudService } from '../services/service-task-list-cloud.service'; import { ServiceTaskListCloudService } from '../services/service-task-list-cloud.service';
@ -42,19 +40,17 @@ export class ServiceTaskListCloudComponent extends BaseTaskListCloudComponent im
private onDestroyServiceTaskList$ = new Subject<boolean>(); private onDestroyServiceTaskList$ = new Subject<boolean>();
private isReloadingSubject$ = new BehaviorSubject<boolean>(false); private isReloadingSubject$ = new BehaviorSubject<boolean>(false);
isLoading$ = combineLatest([ isLoading$ = combineLatest([this.isLoadingPreferences$, this.isReloadingSubject$]).pipe(
this.isLoadingPreferences$,
this.isReloadingSubject$
]).pipe(
map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading) map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading)
); );
constructor(private serviceTaskListCloudService: ServiceTaskListCloudService, constructor(
appConfigService: AppConfigService, private serviceTaskListCloudService: ServiceTaskListCloudService,
taskCloudService: TaskCloudService, appConfigService: AppConfigService,
userPreferences: UserPreferencesService, taskCloudService: TaskCloudService,
@Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface userPreferences: UserPreferencesService,
) { @Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface
) {
super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService); super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService);
} }
@ -69,22 +65,20 @@ export class ServiceTaskListCloudComponent extends BaseTaskListCloudComponent im
this.requestNode = this.createRequestNode(); this.requestNode = this.createRequestNode();
if (this.requestNode.appName || this.requestNode.appName === '') { if (this.requestNode.appName || this.requestNode.appName === '') {
combineLatest([this.serviceTaskListCloudService.getServiceTaskByRequest(this.requestNode), this.isColumnSchemaCreated$])
combineLatest([ .pipe(takeUntil(this.onDestroyServiceTaskList$))
this.serviceTaskListCloudService.getServiceTaskByRequest(this.requestNode), .subscribe(
this.isColumnSchemaCreated$ ([tasks]) => {
]).pipe( this.rows = tasks.list.entries;
takeUntil(this.onDestroyServiceTaskList$) this.success.emit(tasks);
).subscribe( this.pagination.next(tasks.list.pagination);
([tasks]) => { this.isReloadingSubject$.next(false);
this.rows = tasks.list.entries; },
this.success.emit(tasks); (error) => {
this.pagination.next(tasks.list.pagination); this.error.emit(error);
this.isReloadingSubject$.next(false); this.isReloadingSubject$.next(false);
}, (error) => { }
this.error.emit(error); );
this.isReloadingSubject$.next(false);
});
} else { } else {
this.rows = []; this.rows = [];
} }

View File

@ -151,20 +151,18 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent<ProcessLi
dataAdapter: TasksListDatatableAdapter | undefined; dataAdapter: TasksListDatatableAdapter | undefined;
private isReloadingSubject$ = new BehaviorSubject<boolean>(false); private isReloadingSubject$ = new BehaviorSubject<boolean>(false);
isLoading$ = combineLatest([ isLoading$ = combineLatest([this.isLoadingPreferences$, this.isReloadingSubject$]).pipe(
this.isLoadingPreferences$,
this.isReloadingSubject$
]).pipe(
map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading) map(([isLoadingPreferences, isReloading]) => isLoadingPreferences || isReloading)
); );
constructor(@Inject(TASK_LIST_CLOUD_TOKEN) public taskListCloudService: TaskListCloudServiceInterface, constructor(
appConfigService: AppConfigService, @Inject(TASK_LIST_CLOUD_TOKEN) public taskListCloudService: TaskListCloudServiceInterface,
taskCloudService: TaskCloudService, appConfigService: AppConfigService,
userPreferences: UserPreferencesService, taskCloudService: TaskCloudService,
@Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface, userPreferences: UserPreferencesService,
private viewModelCreator: VariableMapperService @Inject(TASK_LIST_PREFERENCES_SERVICE_TOKEN) cloudPreferenceService: PreferenceCloudServiceInterface,
) { private viewModelCreator: VariableMapperService
) {
super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService); super(appConfigService, taskCloudService, userPreferences, PRESET_KEY, cloudPreferenceService);
} }
@ -176,31 +174,33 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent<ProcessLi
reload() { reload() {
this.isReloadingSubject$.next(true); this.isReloadingSubject$.next(true);
this.isColumnSchemaCreated$.pipe( this.isColumnSchemaCreated$
switchMap(() => of(this.createRequestNode())), .pipe(
tap((requestNode) => this.requestNode = requestNode), switchMap(() => of(this.createRequestNode())),
switchMap((requestNode) => this.taskListCloudService.getTaskByRequest(requestNode)), tap((requestNode) => (this.requestNode = requestNode)),
takeUntil(this.onDestroyTaskList$) switchMap((requestNode) => this.taskListCloudService.getTaskByRequest(requestNode)),
).subscribe((tasks: { list: PaginatedEntries<TaskCloudModel> }) => { takeUntil(this.onDestroyTaskList$)
const tasksWithVariables = tasks.list.entries.map((task) => ({ )
...task, .subscribe(
variables: task.processVariables (tasks: { list: PaginatedEntries<TaskCloudModel> }) => {
})); const tasksWithVariables = tasks.list.entries.map((task) => ({
...task,
variables: task.processVariables
}));
this.rows = this.viewModelCreator.mapVariablesByColumnTitle( this.rows = this.viewModelCreator.mapVariablesByColumnTitle(tasksWithVariables, this.columns);
tasksWithVariables,
this.columns this.dataAdapter = new TasksListDatatableAdapter(this.rows, this.columns);
this.success.emit(tasks);
this.isReloadingSubject$.next(false);
this.pagination.next(tasks.list.pagination);
},
(error) => {
this.error.emit(error);
this.isReloadingSubject$.next(false);
}
); );
this.dataAdapter = new TasksListDatatableAdapter(this.rows, this.columns);
this.success.emit(tasks);
this.isReloadingSubject$.next(false);
this.pagination.next(tasks.list.pagination);
}, (error) => {
this.error.emit(error);
this.isReloadingSubject$.next(false);
});
} }
createRequestNode(): TaskQueryCloudRequestModel { createRequestNode(): TaskQueryCloudRequestModel {
@ -242,11 +242,8 @@ export class TaskListCloudComponent extends BaseTaskListCloudComponent<ProcessLi
private getRequestNodeVariables(): string[] | undefined { private getRequestNodeVariables(): string[] | undefined {
const displayedVariableColumns: string[] = (this.columns ?? []) const displayedVariableColumns: string[] = (this.columns ?? [])
.filter(column => .filter((column) => column.customData?.columnType === 'process-variable-column' && column.isHidden !== true)
column.customData?.columnType === 'process-variable-column' && .map((column) => {
column.isHidden !== true
)
.map(column => {
const variableDefinitionsPayload = column.customData.variableDefinitionsPayload; const variableDefinitionsPayload = column.customData.variableDefinitionsPayload;
return variableDefinitionsPayload; return variableDefinitionsPayload;
}) })

View File

@ -1,30 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { TaskListCloudModule } from './task-list-cloud.module';
describe('TaskListCloudModule', () => {
let taskListCloudModule: TaskListCloudModule;
beforeEach(() => {
taskListCloudModule = new TaskListCloudModule();
});
it('should create an instance', () => {
expect(taskListCloudModule).toBeTruthy();
});
});

View File

@ -26,19 +26,9 @@ import { TaskListCloudService } from './services/task-list-cloud.service';
import { LocalPreferenceCloudService } from '../../services/local-preference-cloud.service'; import { LocalPreferenceCloudService } from '../../services/local-preference-cloud.service';
@NgModule({ @NgModule({
imports: [ imports: [CommonModule, MaterialModule, CoreModule],
CommonModule, declarations: [TaskListCloudComponent, ServiceTaskListCloudComponent],
MaterialModule, exports: [TaskListCloudComponent, ServiceTaskListCloudComponent],
CoreModule
],
declarations: [
TaskListCloudComponent,
ServiceTaskListCloudComponent
],
exports: [
TaskListCloudComponent,
ServiceTaskListCloudComponent
],
providers: [ providers: [
{ {
provide: TASK_LIST_CLOUD_TOKEN, provide: TASK_LIST_CLOUD_TOKEN,
@ -50,4 +40,4 @@ import { LocalPreferenceCloudService } from '../../services/local-preference-clo
} }
] ]
}) })
export class TaskListCloudModule { } export class TaskListCloudModule {}

View File

@ -25,7 +25,8 @@ import {
AppConfigServiceMock, AppConfigServiceMock,
TranslationService, TranslationService,
TranslationMock, TranslationMock,
CoreModule, AuthModule CoreModule,
AuthModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { ProcessServicesCloudModule } from '../process-services-cloud.module'; import { ProcessServicesCloudModule } from '../process-services-cloud.module';
@ -46,11 +47,6 @@ import { RouterTestingModule } from '@angular/router/testing';
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: TranslationService, useClass: TranslationMock } { provide: TranslationService, useClass: TranslationMock }
], ],
exports: [ exports: [NoopAnimationsModule, TranslateModule, CoreModule, ProcessServicesCloudModule]
NoopAnimationsModule,
TranslateModule,
CoreModule,
ProcessServicesCloudModule
]
}) })
export class ProcessServiceCloudTestingModule {} export class ProcessServiceCloudTestingModule {}

View File

@ -27,6 +27,7 @@ import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing'; import { MatProgressSpinnerHarness } from '@angular/material/progress-spinner/testing';
import { AppDefinitionRepresentation } from '@alfresco/js-api'; import { AppDefinitionRepresentation } from '@alfresco/js-api';
import { CustomEmptyContentTemplateDirective } from '@alfresco/adf-core';
describe('AppsListComponent', () => { describe('AppsListComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@ -37,6 +38,8 @@ describe('AppsListComponent', () => {
let getAppsSpy: jasmine.Spy; let getAppsSpy: jasmine.Spy;
@Component({ @Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, AppsListComponent],
template: ` template: `
<adf-apps> <adf-apps>
<adf-custom-empty-content-template> <adf-custom-empty-content-template>
@ -49,8 +52,7 @@ describe('AppsListComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, CustomEmptyAppListTemplateComponent]
declarations: [CustomEmptyAppListTemplateComponent]
}); });
fixture = TestBed.createComponent(AppsListComponent); fixture = TestBed.createComponent(AppsListComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@ -27,6 +27,7 @@ import { ProcessTestingModule } from '../../testing/process.testing.module';
@Component({ @Component({
selector: 'adf-dialog-test', selector: 'adf-dialog-test',
standalone: true,
template: '' template: ''
}) })
export class DialogSelectAppTestComponent { export class DialogSelectAppTestComponent {
@ -57,8 +58,7 @@ describe('Select app dialog', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, DialogSelectAppTestComponent],
declarations: [DialogSelectAppTestComponent],
providers: [ providers: [
{ {
provide: OverlayContainer, provide: OverlayContainer,

View File

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { SimpleChange, Component, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { SimpleChange, Component } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { of, throwError } from 'rxjs'; import { of, throwError } from 'rxjs';
@ -26,6 +26,7 @@ import { ProcessContentService } from '../../form/services/process-content.servi
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatMenuHarness } from '@angular/material/menu/testing'; import { MatMenuHarness } from '@angular/material/menu/testing';
import { EmptyListComponent, EmptyListHeaderDirective } from '@alfresco/adf-core';
describe('ProcessAttachmentListComponent', () => { describe('ProcessAttachmentListComponent', () => {
let loader: HarnessLoader; let loader: HarnessLoader;
@ -239,6 +240,8 @@ describe('ProcessAttachmentListComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [EmptyListHeaderDirective, EmptyListComponent, ProcessAttachmentListComponent],
template: ` template: `
<adf-process-attachment-list> <adf-process-attachment-list>
<adf-empty-list> <adf-empty-list>
@ -254,9 +257,7 @@ describe('Custom CustomEmptyTemplateComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, CustomEmptyTemplateComponent]
declarations: [CustomEmptyTemplateComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
}); });
fixture = TestBed.createComponent(CustomEmptyTemplateComponent); fixture = TestBed.createComponent(CustomEmptyTemplateComponent);
fixture.detectChanges(); fixture.detectChanges();

View File

@ -39,6 +39,8 @@ import { TaskFormService } from './services/task-form.service';
import { TaskService } from './services/task.service'; import { TaskService } from './services/task.service';
import { EditorService } from './services/editor.service'; import { EditorService } from './services/editor.service';
import { ModelService } from './services/model.service'; import { ModelService } from './services/model.service';
import { FormCustomOutcomesComponent } from '@alfresco/adf-process-services';
import { MatButtonModule } from '@angular/material/button';
describe('FormComponent', () => { describe('FormComponent', () => {
let fixture: ComponentFixture<FormComponent>; let fixture: ComponentFixture<FormComponent>;
@ -981,6 +983,8 @@ describe('FormComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [FormCustomOutcomesComponent, MatButtonModule, FormComponent],
selector: 'adf-form-with-custom-outcomes', selector: 'adf-form-with-custom-outcomes',
template: ` <adf-form #adfForm> template: ` <adf-form #adfForm>
<adf-form-custom-outcomes> <adf-form-custom-outcomes>
@ -1005,8 +1009,7 @@ describe('FormWithCustomOutComesComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, FormWithCustomOutComesComponent]
declarations: [FormWithCustomOutComesComponent]
}); });
fixture = TestBed.createComponent(FormWithCustomOutComesComponent); fixture = TestBed.createComponent(FormWithCustomOutComesComponent);
customComponent = fixture.componentInstance; customComponent = fixture.componentInstance;

View File

@ -17,18 +17,8 @@
import { FileViewerWidgetComponent } from './file-viewer.widget'; import { FileViewerWidgetComponent } from './file-viewer.widget';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { import { FormModel, FormService, FormFieldModel, RedirectAuthService, NoopTranslateModule } from '@alfresco/adf-core';
FormModel,
FormService,
FormFieldModel,
TranslationService,
TranslationMock,
AuthenticationService,
RedirectAuthService
} from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { EMPTY, of } from 'rxjs'; import { EMPTY, of } from 'rxjs';
describe('FileViewerWidgetComponent', () => { describe('FileViewerWidgetComponent', () => {
@ -54,11 +44,9 @@ describe('FileViewerWidgetComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), FileViewerWidgetComponent, HttpClientTestingModule], imports: [NoopTranslateModule, FileViewerWidgetComponent],
providers: [ providers: [
{ provide: FormService, useValue: formServiceStub }, { provide: FormService, useValue: formServiceStub },
{ provide: TranslationService, useClass: TranslationMock },
AuthenticationService,
{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } } { provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]

View File

@ -24,26 +24,18 @@ import {
FormFieldOption, FormFieldOption,
FormFieldModel, FormFieldModel,
FormModel, FormModel,
ErrorWidgetComponent,
TranslationMock,
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
AppConfigServiceMock, AppConfigServiceMock,
AppConfigService, AppConfigService,
AlfrescoApiService, AlfrescoApiService,
TranslationService NoopTranslateModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { RadioButtonsWidgetComponent } from './radio-buttons.widget'; import { RadioButtonsWidgetComponent } from './radio-buttons.widget';
import { MatIconModule } from '@angular/material/icon';
import { MatRadioModule } from '@angular/material/radio';
import { FormsModule } from '@angular/forms';
import { TranslateModule } from '@ngx-translate/core';
import { TaskFormService } from '../../services/task-form.service'; import { TaskFormService } from '../../services/task-form.service';
import { ProcessDefinitionService } from '../../services/process-definition.service'; import { ProcessDefinitionService } from '../../services/process-definition.service';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatRadioButtonHarness, MatRadioGroupHarness } from '@angular/material/radio/testing'; import { MatRadioButtonHarness, MatRadioGroupHarness } from '@angular/material/radio/testing';
import { MatButtonModule } from '@angular/material/button';
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('RadioButtonsWidgetComponent', () => { describe('RadioButtonsWidgetComponent', () => {
let formService: FormService; let formService: FormService;
@ -53,18 +45,8 @@ describe('RadioButtonsWidgetComponent', () => {
beforeEach(() => { beforeEach(() => {
getTestBed().configureTestingModule({ getTestBed().configureTestingModule({
imports: [ imports: [NoopTranslateModule, RadioButtonsWidgetComponent],
TranslateModule.forRoot(),
MatRadioModule,
MatButtonModule,
FormsModule,
HttpClientTestingModule,
MatIconModule,
ErrorWidgetComponent,
RadioButtonsWidgetComponent
],
providers: [ providers: [
{ provide: TranslationService, useClass: TranslationMock },
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock } { provide: AppConfigService, useClass: AppConfigServiceMock }
] ]

View File

@ -22,9 +22,12 @@ import { ProcessService } from '../../services/process.service';
import { DownloadService } from '@alfresco/adf-core'; import { DownloadService } from '@alfresco/adf-core';
import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { ProcessInstanceAuditInfoRepresentation } from '@alfresco/js-api'; import { ProcessInstanceAuditInfoRepresentation } from '@alfresco/js-api';
import { ProcessAuditDirective } from '@alfresco/adf-process-services';
@Component({ @Component({
selector: 'adf-basic-button', selector: 'adf-basic-button',
standalone: true,
imports: [ProcessAuditDirective],
template: ` <button template: ` <button
id="auditButton" id="auditButton"
adf-process-audit adf-process-audit
@ -79,8 +82,7 @@ describe('ProcessAuditDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, BasicButtonComponent]
declarations: [BasicButtonComponent]
}); });
fixture = TestBed.createComponent(BasicButtonComponent); fixture = TestBed.createComponent(BasicButtonComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@ -28,7 +28,11 @@ import {
ObjectDataRow, ObjectDataRow,
ObjectDataTableAdapter, ObjectDataTableAdapter,
DataCellEvent, DataCellEvent,
ObjectDataColumn ObjectDataColumn,
DataColumnComponent,
DataColumnListComponent,
FullNamePipe,
CustomEmptyContentTemplateDirective
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { fakeProcessInstance, fakeProcessInstancesWithNoName, fakeProcessInstancesEmpty, fakeProcessColumnSchema } from '../../../testing/mock'; import { fakeProcessInstance, fakeProcessInstancesWithNoName, fakeProcessInstancesEmpty, fakeProcessColumnSchema } from '../../../testing/mock';
import { ProcessService } from '../../services/process.service'; import { ProcessService } from '../../services/process.service';
@ -438,6 +442,8 @@ describe('ProcessInstanceListComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [ProcessInstanceListComponent, DataColumnListComponent, DataColumnComponent, FullNamePipe],
template: ` <adf-process-instance-list #processListComponentInstance> template: ` <adf-process-instance-list #processListComponentInstance>
<data-columns> <data-columns>
<data-column key="name" title="ADF_PROCESS_LIST.PROPERTIES.NAME" class="adf-full-width adf-name-column" [order]="3"></data-column> <data-column key="name" title="ADF_PROCESS_LIST.PROPERTIES.NAME" class="adf-full-width adf-name-column" [order]="3"></data-column>
@ -461,8 +467,7 @@ describe('CustomProcessListComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, CustomProcessListComponent]
declarations: [CustomProcessListComponent]
}); });
fixture = TestBed.createComponent(CustomProcessListComponent); fixture = TestBed.createComponent(CustomProcessListComponent);
fixture.detectChanges(); fixture.detectChanges();
@ -480,6 +485,8 @@ describe('CustomProcessListComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, ProcessInstanceListComponent],
template: ` template: `
<adf-process-instance-list [appId]="1"> <adf-process-instance-list [appId]="1">
<adf-custom-empty-content-template> <adf-custom-empty-content-template>
@ -489,14 +496,14 @@ describe('CustomProcessListComponent', () => {
` `
}) })
class EmptyTemplateComponent {} class EmptyTemplateComponent {}
describe('Process List: Custom EmptyTemplateComponent', () => { describe('Process List: Custom EmptyTemplateComponent', () => {
let fixture: ComponentFixture<EmptyTemplateComponent>; let fixture: ComponentFixture<EmptyTemplateComponent>;
let processService: ProcessService; let processService: ProcessService;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, EmptyTemplateComponent]
declarations: [EmptyTemplateComponent]
}); });
fixture = TestBed.createComponent(EmptyTemplateComponent); fixture = TestBed.createComponent(EmptyTemplateComponent);
processService = TestBed.inject(ProcessService); processService = TestBed.inject(ProcessService);
@ -521,6 +528,8 @@ describe('Process List: Custom EmptyTemplateComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [ProcessInstanceListComponent, DataColumnComponent, DataColumnListComponent, FullNamePipe],
template: ` <adf-process-instance-list template: ` <adf-process-instance-list
[appId]="appId" [appId]="appId"
[showContextMenu]="true" [showContextMenu]="true"
@ -591,8 +600,7 @@ describe('ProcessListContextMenuComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, ProcessListContextMenuComponent]
declarations: [ProcessListContextMenuComponent]
}); });
fixture = TestBed.createComponent(ProcessListContextMenuComponent); fixture = TestBed.createComponent(ProcessListContextMenuComponent);
customComponent = fixture.componentInstance; customComponent = fixture.componentInstance;

View File

@ -17,14 +17,7 @@
import { SimpleChange } from '@angular/core'; import { SimpleChange } from '@angular/core';
import { ComponentFixture, getTestBed } from '@angular/core/testing'; import { ComponentFixture, getTestBed } from '@angular/core/testing';
import { import { AppConfigService, AppConfigServiceMock, FormRenderingService, LocalizedDatePipe, NoopTranslateModule } from '@alfresco/adf-core';
AppConfigService,
AppConfigServiceMock,
FormRenderingService,
LocalizedDatePipe,
TranslationMock,
TranslationService
} from '@alfresco/adf-core';
import { of, throwError } from 'rxjs'; import { of, throwError } from 'rxjs';
import { MatSelectChange } from '@angular/material/select'; import { MatSelectChange } from '@angular/material/select';
import { ProcessService } from '../../services/process.service'; import { ProcessService } from '../../services/process.service';
@ -37,19 +30,15 @@ import {
testProcessDefinitions testProcessDefinitions
} from '../../../testing/mock'; } from '../../../testing/mock';
import { StartProcessInstanceComponent } from './start-process.component'; import { StartProcessInstanceComponent } from './start-process.component';
import { TranslateModule } from '@ngx-translate/core';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { MatFormFieldHarness } from '@angular/material/form-field/testing'; import { MatFormFieldHarness } from '@angular/material/form-field/testing';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing'; import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientTestingModule } from '@angular/common/http/testing';
import { RestVariable } from '@alfresco/js-api'; import { RestVariable } from '@alfresco/js-api';
import { ActivitiContentService } from '../../../form/services/activiti-alfresco.service'; import { ActivitiContentService } from '../../../form/services/activiti-alfresco.service';
import { AppsProcessService } from '../../../services/apps-process.service'; import { AppsProcessService } from '../../../services/apps-process.service';
import { ProcessFormRenderingService } from '../../../form'; import { ProcessFormRenderingService } from '../../../form';
import { FORM_FIELD_MODEL_RENDER_MIDDLEWARE } from 'lib/core/src/lib/form/components/middlewares/middleware';
import { deployedApps } from '../../../testing/mock/apps-list.mock'; import { deployedApps } from '../../../testing/mock/apps-list.mock';
describe('StartProcessComponent', () => { describe('StartProcessComponent', () => {
@ -68,17 +57,11 @@ describe('StartProcessComponent', () => {
beforeEach(() => { beforeEach(() => {
getTestBed().configureTestingModule({ getTestBed().configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, HttpClientTestingModule, StartProcessInstanceComponent], imports: [NoopTranslateModule, NoopAnimationsModule, StartProcessInstanceComponent],
providers: [ providers: [
LocalizedDatePipe, LocalizedDatePipe,
ActivitiContentService,
ProcessService,
AppsProcessService,
FormRenderingService,
{ provide: FormRenderingService, useClass: ProcessFormRenderingService }, { provide: FormRenderingService, useClass: ProcessFormRenderingService },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock }
{ provide: TranslationService, useClass: TranslationMock },
{ provide: FORM_FIELD_MODEL_RENDER_MIDDLEWARE, useValue: [] }
] ]
}); });
}); });

View File

@ -20,12 +20,15 @@ import { ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { TaskListService } from '../../services/tasklist.service'; import { TaskListService } from '../../services/tasklist.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { TaskAuditDirective } from '@alfresco/adf-process-services';
declare let jasmine: any; declare let jasmine: any;
describe('TaskAuditDirective', () => { describe('TaskAuditDirective', () => {
@Component({ @Component({
selector: 'adf-basic-button', selector: 'adf-basic-button',
standalone: true,
imports: [TaskAuditDirective],
template: ` <button template: ` <button
id="auditButton" id="auditButton"
adf-task-audit adf-task-audit
@ -71,8 +74,7 @@ describe('TaskAuditDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, BasicButtonComponent]
declarations: [BasicButtonComponent]
}); });
fixture = TestBed.createComponent(BasicButtonComponent); fixture = TestBed.createComponent(BasicButtonComponent);
component = fixture.componentInstance; component = fixture.componentInstance;

View File

@ -20,11 +20,13 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { TaskListService } from '../../services/tasklist.service'; import { TaskListService } from '../../services/tasklist.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { ClaimTaskDirective } from '@alfresco/adf-process-services';
describe('ClaimTaskDirective', () => { describe('ClaimTaskDirective', () => {
@Component({ @Component({
selector: 'adf-claim-test-component', standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-test-component',
template: '<button adf-claim-task [taskId]="taskId" (success)="onClaim($event)">Claim</button>' template: '<button adf-claim-task [taskId]="taskId" (success)="onClaim($event)">Claim</button>'
}) })
class TestComponent { class TestComponent {
@ -43,12 +45,7 @@ describe('ClaimTaskDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [ProcessTestingModule, TestComponent]
ProcessTestingModule
],
declarations: [
TestComponent
]
}); });
taskListService = TestBed.inject(TaskListService); taskListService = TestBed.inject(TaskListService);
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
@ -78,30 +75,27 @@ describe('ClaimTaskDirective', () => {
}); });
describe('Claim Task Directive validation errors', () => { describe('Claim Task Directive validation errors', () => {
@Component({ @Component({
selector: 'adf-claim-no-fields-validation-component', standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-no-fields-validation-component',
template: '<button adf-claim-task></button>' template: '<button adf-claim-task></button>'
}) })
class ClaimTestMissingInputDirectiveComponent { } class ClaimTestMissingInputDirectiveComponent {}
@Component({ @Component({
selector: 'adf-claim-no-taskid-validation-component', standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-no-taskid-validation-component',
template: '<button adf-claim-task [taskId]=""></button>' template: '<button adf-claim-task [taskId]=""></button>'
}) })
class ClaimTestMissingTaskIdDirectiveComponent { } class ClaimTestMissingTaskIdDirectiveComponent {}
let fixture: ComponentFixture<any>; let fixture: ComponentFixture<any>;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [ProcessTestingModule, ClaimTestMissingTaskIdDirectiveComponent, ClaimTestMissingInputDirectiveComponent]
ProcessTestingModule
],
declarations: [
ClaimTestMissingTaskIdDirectiveComponent,
ClaimTestMissingInputDirectiveComponent
]
}); });
fixture = TestBed.createComponent(ClaimTestMissingInputDirectiveComponent); fixture = TestBed.createComponent(ClaimTestMissingInputDirectiveComponent);
}); });
@ -115,6 +109,6 @@ describe('Claim Task Directive validation errors', () => {
it('should throw error when taskId is not set', () => { it('should throw error when taskId is not set', () => {
fixture = TestBed.createComponent(ClaimTestMissingTaskIdDirectiveComponent); fixture = TestBed.createComponent(ClaimTestMissingTaskIdDirectiveComponent);
expect( () => fixture.detectChanges()).toThrowError('Attribute taskId is required'); expect(() => fixture.detectChanges()).toThrowError('Attribute taskId is required');
}); });
}); });

View File

@ -20,11 +20,13 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { TaskListService } from '../../services/tasklist.service'; import { TaskListService } from '../../services/tasklist.service';
import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { UnclaimTaskDirective } from '@alfresco/adf-process-services';
describe('UnclaimTaskDirective', () => { describe('UnclaimTaskDirective', () => {
@Component({ @Component({
selector: 'adf-unclaim-test-component', standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-unclaim-test-component',
template: '<button adf-unclaim-task [taskId]="taskId" (success)="onUnclaim($event)">Unclaim</button>' template: '<button adf-unclaim-task [taskId]="taskId" (success)="onUnclaim($event)">Unclaim</button>'
}) })
class TestComponent { class TestComponent {
@ -43,12 +45,7 @@ describe('UnclaimTaskDirective', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [ProcessTestingModule, TestComponent]
ProcessTestingModule
],
declarations: [
TestComponent
]
}); });
taskListService = TestBed.inject(TaskListService); taskListService = TestBed.inject(TaskListService);
fixture = TestBed.createComponent(TestComponent); fixture = TestBed.createComponent(TestComponent);
@ -78,34 +75,27 @@ describe('UnclaimTaskDirective', () => {
}); });
describe('Claim Task Directive validation errors', () => { describe('Claim Task Directive validation errors', () => {
@Component({ @Component({
selector: 'adf-unclaim-no-fields-validation-component', standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-unclaim-no-fields-validation-component',
template: '<button adf-unclaim-task></button>' template: '<button adf-unclaim-task></button>'
}) })
class ClaimTestMissingInputDirectiveComponent { class ClaimTestMissingInputDirectiveComponent {}
}
@Component({ @Component({
selector: 'adf-claim-no-taskid-validation-component', standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-claim-no-taskid-validation-component',
template: '<button adf-unclaim-task [taskId]=""></button>' template: '<button adf-unclaim-task [taskId]=""></button>'
}) })
class ClaimTestMissingTaskIdDirectiveComponent { class ClaimTestMissingTaskIdDirectiveComponent {}
}
let fixture: ComponentFixture<any>; let fixture: ComponentFixture<any>;
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [ProcessTestingModule, ClaimTestMissingTaskIdDirectiveComponent, ClaimTestMissingInputDirectiveComponent]
ProcessTestingModule
],
declarations: [
ClaimTestMissingTaskIdDirectiveComponent,
ClaimTestMissingInputDirectiveComponent
]
}); });
fixture = TestBed.createComponent(ClaimTestMissingInputDirectiveComponent); fixture = TestBed.createComponent(ClaimTestMissingInputDirectiveComponent);
}); });
@ -119,6 +109,6 @@ describe('Claim Task Directive validation errors', () => {
it('should throw error when taskId is not set', () => { it('should throw error when taskId is not set', () => {
fixture = TestBed.createComponent(ClaimTestMissingTaskIdDirectiveComponent); fixture = TestBed.createComponent(ClaimTestMissingTaskIdDirectiveComponent);
expect( () => fixture.detectChanges()).toThrowError('Attribute taskId is required'); expect(() => fixture.detectChanges()).toThrowError('Attribute taskId is required');
}); });
}); });

View File

@ -26,21 +26,25 @@ import {
ObjectDataColumn, ObjectDataColumn,
AppConfigServiceMock, AppConfigServiceMock,
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
AlfrescoApiService AlfrescoApiService,
DataColumnComponent,
DataColumnListComponent,
FullNamePipe,
NoopTranslateModule,
CustomEmptyContentTemplateDirective
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { TaskListService } from '../../services/tasklist.service'; import { TaskListService } from '../../services/tasklist.service';
import { TaskListComponent } from './task-list.component'; import { TaskListComponent } from './task-list.component';
import { ProcessTestingModule } from '../../../testing/process.testing.module'; import { ProcessTestingModule } from '../../../testing/process.testing.module';
import { fakeGlobalTask, fakeEmptyTask, paginatedTask, fakeColumnSchema, fakeCustomSchema } from '../../../testing/mock'; import { fakeGlobalTask, fakeEmptyTask, paginatedTask, fakeColumnSchema, fakeCustomSchema } from '../../../testing/mock';
import { TranslateModule, TranslateService } from '@ngx-translate/core'; import { TranslateService } from '@ngx-translate/core';
import { of, Subject } from 'rxjs'; import { of, Subject } from 'rxjs';
import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { HarnessLoader } from '@angular/cdk/testing'; import { HarnessLoader } from '@angular/cdk/testing';
import { MatCheckboxHarness } from '@angular/material/checkbox/testing'; import { MatCheckboxHarness } from '@angular/material/checkbox/testing';
import { MatMenuItemHarness } from '@angular/material/menu/testing'; import { MatMenuItemHarness } from '@angular/material/menu/testing';
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { CommonModule } from '@angular/common';
declare let jasmine: any; declare let jasmine: any;
@ -105,7 +109,7 @@ describe('TaskListComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, MatProgressSpinnerModule, HttpClientTestingModule, TaskListComponent], imports: [NoopTranslateModule, NoopAnimationsModule, TaskListComponent],
providers: [ providers: [
TaskListService, TaskListService,
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
@ -644,6 +648,8 @@ describe('TaskListComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [DataColumnComponent, DataColumnListComponent, TaskListComponent, FullNamePipe],
template: ` <adf-tasklist #taskList> template: ` <adf-tasklist #taskList>
<data-columns> <data-columns>
<data-column key="name" title="ADF_TASK_LIST.PROPERTIES.NAME" class="full-width name-column" [order]="3"></data-column> <data-column key="name" title="ADF_TASK_LIST.PROPERTIES.NAME" class="full-width name-column" [order]="3"></data-column>
@ -667,8 +673,7 @@ describe('CustomTaskListComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, CustomTaskListComponent, CustomTaskListComponent]
declarations: [CustomTaskListComponent]
}); });
fixture = TestBed.createComponent(CustomTaskListComponent); fixture = TestBed.createComponent(CustomTaskListComponent);
fixture.detectChanges(); fixture.detectChanges();
@ -690,6 +695,8 @@ describe('CustomTaskListComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, TaskListComponent],
template: ` template: `
<adf-tasklist [appId]="1"> <adf-tasklist [appId]="1">
<adf-custom-empty-content-template> <adf-custom-empty-content-template>
@ -707,8 +714,7 @@ describe('Task List: Custom EmptyTemplateComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProcessTestingModule], imports: [ProcessTestingModule, EmptyTemplateComponent]
declarations: [EmptyTemplateComponent]
}); });
translateService = TestBed.inject(TranslateService); translateService = TestBed.inject(TranslateService);
taskListService = TestBed.inject(TaskListService); taskListService = TestBed.inject(TaskListService);
@ -733,6 +739,8 @@ describe('Task List: Custom EmptyTemplateComponent', () => {
}); });
@Component({ @Component({
standalone: true,
imports: [CommonModule, TaskListComponent, DataColumnComponent, DataColumnListComponent, FullNamePipe],
template: ` <adf-tasklist [showContextMenu]="true" (showRowContextMenu)="onShowRowContextMenu($event)" #taskList> template: ` <adf-tasklist [showContextMenu]="true" (showRowContextMenu)="onShowRowContextMenu($event)" #taskList>
<data-columns> <data-columns>
<data-column key="name" title="ADF_TASK_LIST.PROPERTIES.NAME" class="full-width name-column"></data-column> <data-column key="name" title="ADF_TASK_LIST.PROPERTIES.NAME" class="full-width name-column"></data-column>
@ -795,8 +803,7 @@ describe('TaskListContextMenuComponent', () => {
beforeEach(() => { beforeEach(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), MatProgressSpinnerModule, ProcessTestingModule], imports: [ProcessTestingModule, TaskListContextMenuComponent]
declarations: [TaskListContextMenuComponent]
}); });
fixture = TestBed.createComponent(TaskListContextMenuComponent); fixture = TestBed.createComponent(TaskListContextMenuComponent);
customComponent = fixture.componentInstance; customComponent = fixture.componentInstance;

View File

@ -23,34 +23,29 @@ import {
AlfrescoApiServiceMock, AlfrescoApiServiceMock,
AppConfigService, AppConfigService,
AppConfigServiceMock, AppConfigServiceMock,
TranslationService,
TranslationMock,
CoreModule, CoreModule,
FormRenderingService, FormRenderingService,
AuthModule AuthModule,
NoopTranslateModule
} from '@alfresco/adf-core'; } from '@alfresco/adf-core';
import { TranslateModule } from '@ngx-translate/core';
import { ProcessFormRenderingService } from '../form/process-form-rendering.service'; import { ProcessFormRenderingService } from '../form/process-form-rendering.service';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { HttpClientTestingModule } from '@angular/common/http/testing';
@NgModule({ @NgModule({
imports: [ imports: [
AuthModule.forRoot({ useHash: true }), AuthModule.forRoot({ useHash: true }),
NoopAnimationsModule, NoopAnimationsModule,
HttpClientTestingModule,
TranslateModule.forRoot(),
CoreModule.forRoot(), CoreModule.forRoot(),
ProcessModule.forRoot(), ProcessModule.forRoot(),
RouterTestingModule RouterTestingModule,
NoopTranslateModule
], ],
providers: [ providers: [
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
{ provide: AppConfigService, useClass: AppConfigServiceMock }, { provide: AppConfigService, useClass: AppConfigServiceMock },
{ provide: TranslationService, useClass: TranslationMock },
FormRenderingService, FormRenderingService,
{ provide: FormRenderingService, useClass: ProcessFormRenderingService } { provide: FormRenderingService, useClass: ProcessFormRenderingService }
], ],
exports: [NoopAnimationsModule, TranslateModule, CoreModule, ProcessModule] exports: [NoopAnimationsModule, CoreModule, ProcessModule]
}) })
export class ProcessTestingModule {} export class ProcessTestingModule {}