Unit test fixes

This commit is contained in:
Alisa Ismailati
2023-11-01 09:32:11 +01:00
parent 3cf3cc8850
commit d4d0fe0cbe
180 changed files with 2567 additions and 1101 deletions

View File

@@ -11,6 +11,8 @@ import { SelectableObject } from '../../../shared/object-list/selectable-list/se
import { PageInfo } from '../../../core/shared/page-info.model'; import { PageInfo } from '../../../core/shared/page-info.model';
import { buildPaginatedList } from '../../../core/data/paginated-list.model'; import { buildPaginatedList } from '../../../core/data/paginated-list.model';
import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils';
import { ThemeService } from '../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../shared/mocks/theme-service.mock';
describe('BulkAccessBrowseComponent', () => { describe('BulkAccessBrowseComponent', () => {
let component: BulkAccessBrowseComponent; let component: BulkAccessBrowseComponent;
@@ -23,22 +25,25 @@ describe('BulkAccessBrowseComponent', () => {
const selected1 = new SelectableObject(value1); const selected1 = new SelectableObject(value1);
const selected2 = new SelectableObject(value2); const selected2 = new SelectableObject(value2);
const testSelection = { id: listID1, selection: [selected1, selected2] } ; const testSelection = { id: listID1, selection: [selected1, selected2] };
const selectableListService = jasmine.createSpyObj('SelectableListService', ['getSelectableList', 'deselectAll']); const selectableListService = jasmine.createSpyObj('SelectableListService', ['getSelectableList', 'deselectAll']);
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
NgbAccordionModule, NgbAccordionModule,
NgbNavModule, NgbNavModule,
TranslateModule.forRoot(), TranslateModule.forRoot(),
BulkAccessBrowseComponent BulkAccessBrowseComponent
], ],
providers: [{ provide: SelectableListService, useValue: selectableListService },], providers: [
schemas: [ { provide: SelectableListService, useValue: selectableListService },
{ provide: ThemeService, useValue: getMockThemeService() },
],
schemas: [
NO_ERRORS_SCHEMA NO_ERRORS_SCHEMA
] ]
}).compileComponents(); }).compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
@@ -73,7 +78,7 @@ describe('BulkAccessBrowseComponent', () => {
'totalElements': 2, 'totalElements': 2,
'totalPages': 1, 'totalPages': 1,
'currentPage': 1 'currentPage': 1
}), [selected1, selected2]) ; }), [selected1, selected2]);
const rd = createSuccessfulRemoteDataObject(list); const rd = createSuccessfulRemoteDataObject(list);
expect(component.objectsSelected$.value).toEqual(rd); expect(component.objectsSelected$.value).toEqual(rd);

View File

@@ -13,6 +13,9 @@ import { Process } from '../../process-page/processes/process.model';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { NotificationsService } from '../../shared/notifications/notifications.service'; import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { BulkAccessSettingsComponent } from './settings/bulk-access-settings.component';
describe('BulkAccessComponent', () => { describe('BulkAccessComponent', () => {
let component: BulkAccessComponent; let component: BulkAccessComponent;
@@ -69,18 +72,26 @@ describe('BulkAccessComponent', () => {
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [ imports: [
RouterTestingModule, RouterTestingModule,
TranslateModule.forRoot(), TranslateModule.forRoot(),
BulkAccessComponent BulkAccessComponent
], ],
providers: [ providers: [
{ provide: BulkAccessControlService, useValue: bulkAccessControlServiceMock }, { provide: BulkAccessControlService, useValue: bulkAccessControlServiceMock },
{ provide: NotificationsService, useValue: NotificationsServiceStub }, { provide: NotificationsService, useValue: NotificationsServiceStub },
{ provide: SelectableListService, useValue: selectableListServiceMock } { provide: SelectableListService, useValue: selectableListServiceMock },
], { provide: ThemeService, useValue: getMockThemeService() }
schemas: [NO_ERRORS_SCHEMA] ],
}) schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(BulkAccessComponent, {
remove: {
imports: [
BulkAccessSettingsComponent,
]
}
})
.compileComponents(); .compileComponents();
}); });

View File

@@ -3,7 +3,7 @@ import { DebugElement, NO_ERRORS_SCHEMA } from '@angular/core';
import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick, waitForAsync } from '@angular/core/testing';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserModule, By } from '@angular/platform-browser'; import { BrowserModule, By } from '@angular/platform-browser';
import { Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
import { Observable, of as observableOf } from 'rxjs'; import { Observable, of as observableOf } from 'rxjs';
@@ -30,6 +30,9 @@ import { PaginationService } from '../../../../core/pagination/pagination.servic
import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { PaginationComponent } from '../../../../shared/pagination/pagination.component';
import { ContextHelpDirective } from '../../../../shared/context-help.directive';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
describe('MembersListComponent', () => { describe('MembersListComponent', () => {
let component: MembersListComponent; let component: MembersListComponent;
@@ -136,9 +139,16 @@ describe('MembersListComponent', () => {
{ provide: Router, useValue: new RouterMock() }, { provide: Router, useValue: new RouterMock() },
{ provide: PaginationService, useValue: paginationService }, { provide: PaginationService, useValue: paginationService },
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(MembersListComponent, {
remove: {
imports: [PaginationComponent, ContextHelpDirective]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -3,7 +3,7 @@ import { NO_ERRORS_SCHEMA, DebugElement } from '@angular/core';
import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { ComponentFixture, fakeAsync, flush, inject, TestBed, tick, waitForAsync } from '@angular/core/testing';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { BrowserModule, By } from '@angular/platform-browser'; import { BrowserModule, By } from '@angular/platform-browser';
import { Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
import { Observable, of as observableOf, BehaviorSubject } from 'rxjs'; import { Observable, of as observableOf, BehaviorSubject } from 'rxjs';
@@ -31,6 +31,9 @@ import { PaginationService } from '../../../../core/pagination/pagination.servic
import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { ContextHelpDirective } from '../../../../shared/context-help.directive';
import { PaginationComponent } from '../../../../shared/pagination/pagination.component';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
describe('SubgroupsListComponent', () => { describe('SubgroupsListComponent', () => {
let component: SubgroupsListComponent; let component: SubgroupsListComponent;
@@ -59,23 +62,36 @@ describe('SubgroupsListComponent', () => {
getSubgroups(): Group { getSubgroups(): Group {
return this.activeGroup; return this.activeGroup;
}, },
findListByHref(_href: string): Observable<RemoteData<PaginatedList<Group>>> { findListByHref(
_href: string
): Observable<RemoteData<PaginatedList<Group>>> {
return this.subgroups$.pipe( return this.subgroups$.pipe(
map((currentGroups: Group[]) => { map((currentGroups: Group[]) => {
return createSuccessfulRemoteDataObject(buildPaginatedList<Group>(new PageInfo(), currentGroups)); return createSuccessfulRemoteDataObject(
buildPaginatedList<Group>(new PageInfo(), currentGroups)
);
}) })
); );
}, },
getGroupEditPageRouterLink(group: Group): string { getGroupEditPageRouterLink(group: Group): string {
return '/access-control/groups/' + group.id; return '/access-control/groups/' + group.id;
}, },
searchGroups(query: string): Observable<RemoteData<PaginatedList<Group>>> { searchGroups(
query: string
): Observable<RemoteData<PaginatedList<Group>>> {
if (query === '') { if (query === '') {
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), allGroups)); return createSuccessfulRemoteDataObject$(
buildPaginatedList(new PageInfo(), allGroups)
);
} }
return createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])); return createSuccessfulRemoteDataObject$(
buildPaginatedList(new PageInfo(), [])
);
}, },
addSubGroupToGroup(parentGroup, subgroup: Group): Observable<RestResponse> { addSubGroupToGroup(
parentGroup,
subgroup: Group
): Observable<RestResponse> {
this.subgroups$.next([...this.subgroups$.getValue(), subgroup]); this.subgroups$.next([...this.subgroups$.getValue(), subgroup]);
return observableOf(new RestResponse(true, 200, 'Success')); return observableOf(new RestResponse(true, 200, 'Success'));
}, },
@@ -85,38 +101,61 @@ describe('SubgroupsListComponent', () => {
clearGroupLinkRequests() { clearGroupLinkRequests() {
// empty // empty
}, },
deleteSubGroupFromGroup(parentGroup, subgroup: Group): Observable<RestResponse> { deleteSubGroupFromGroup(
this.subgroups$.next(this.subgroups$.getValue().filter((group: Group) => { parentGroup,
if (group.id !== subgroup.id) { subgroup: Group
return group; ): Observable<RestResponse> {
} this.subgroups$.next(
})); this.subgroups$.getValue().filter((group: Group) => {
if (group.id !== subgroup.id) {
return group;
}
})
);
return observableOf(new RestResponse(true, 200, 'Success')); return observableOf(new RestResponse(true, 200, 'Success'));
} },
}; };
routerStub = new RouterMock(); routerStub = new RouterMock();
builderService = getMockFormBuilderService(); builderService = getMockFormBuilderService();
translateService = getMockTranslateService(); translateService = getMockTranslateService();
paginationService = new PaginationServiceStub(); paginationService = new PaginationServiceStub();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule, imports: [
CommonModule,
NgbModule,
FormsModule,
ReactiveFormsModule,
BrowserModule,
// ContextHelpDirective,
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock,
} },
}), SubgroupsListComponent], }),
providers: [SubgroupsListComponent, SubgroupsListComponent,
],
providers: [
SubgroupsListComponent,
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: GroupDataService, useValue: groupsDataServiceStub }, { provide: GroupDataService, useValue: groupsDataServiceStub },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }, {
provide: NotificationsService,
useValue: new NotificationsServiceStub(),
},
{ provide: FormBuilderService, useValue: builderService }, { provide: FormBuilderService, useValue: builderService },
{ provide: Router, useValue: routerStub }, { provide: Router, useValue: routerStub },
{ provide: PaginationService, useValue: paginationService }, { provide: PaginationService, useValue: paginationService },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [NO_ERRORS_SCHEMA] ],
}).compileComponents(); schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(SubgroupsListComponent, {
remove: {
imports: [ContextHelpDirective, PaginationComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -19,9 +19,9 @@ import { NoContent } from '../../../../core/shared/NoContent.model';
import { PaginationService } from '../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../core/pagination/pagination.service';
import { followLink } from '../../../../shared/utils/follow-link-config.model'; import { followLink } from '../../../../shared/utils/follow-link-config.model';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { AsyncPipe, NgForOf, NgIf } from "@angular/common"; import { AsyncPipe, NgForOf, NgIf } from '@angular/common';
import { ContextHelpDirective } from "../../../../shared/context-help.directive"; import { ContextHelpDirective } from '../../../../shared/context-help.directive';
import { PaginationComponent } from "../../../../shared/pagination/pagination.component"; import { PaginationComponent } from '../../../../shared/pagination/pagination.component';
/** /**
* Keys to keep track of specific subscriptions * Keys to keep track of specific subscriptions

View File

@@ -2,6 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { AdminCurationTasksComponent } from './admin-curation-tasks.component'; import { AdminCurationTasksComponent } from './admin-curation-tasks.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { CurationFormComponent } from '../../curation-form/curation-form.component';
describe('AdminCurationTasksComponent', () => { describe('AdminCurationTasksComponent', () => {
let comp: AdminCurationTasksComponent; let comp: AdminCurationTasksComponent;
@@ -9,9 +10,15 @@ describe('AdminCurationTasksComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AdminCurationTasksComponent], imports: [TranslateModule.forRoot(), AdminCurationTasksComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(AdminCurationTasksComponent, {
remove: {
imports: [CurationFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -1,6 +1,6 @@
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { CurationFormComponent } from "../../curation-form/curation-form.component"; import { CurationFormComponent } from '../../curation-form/curation-form.component';
import { TranslateModule } from "@ngx-translate/core"; import { TranslateModule } from '@ngx-translate/core';
/** /**
* Component responsible for rendering the system wide Curation Task UI * Component responsible for rendering the system wide Curation Task UI

View File

@@ -14,6 +14,10 @@ import { NotificationsServiceStub } from '../../../../shared/testing/notificatio
import { RouterStub } from '../../../../shared/testing/router.stub'; import { RouterStub } from '../../../../shared/testing/router.stub';
import { AddBitstreamFormatComponent } from './add-bitstream-format.component'; import { AddBitstreamFormatComponent } from './add-bitstream-format.component';
import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils';
import { FormService } from '../../../../shared/form/form.service';
import { getMockFormService } from '../../../../shared/mocks/form-service.mock';
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
import { FormatFormComponent } from '../format-form/format-form.component';
describe('AddBitstreamFormatComponent', () => { describe('AddBitstreamFormatComponent', () => {
let comp: AddBitstreamFormatComponent; let comp: AddBitstreamFormatComponent;
@@ -33,6 +37,15 @@ describe('AddBitstreamFormatComponent', () => {
let notificationService: NotificationsServiceStub; let notificationService: NotificationsServiceStub;
let bitstreamFormatDataService: BitstreamFormatDataService; let bitstreamFormatDataService: BitstreamFormatDataService;
const formBuilderServiceStub = {
createFormGroup: () => {
return {
patchValue: () => { },
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void { },
};
}
};
const initAsync = () => { const initAsync = () => {
router = new RouterStub(); router = new RouterStub();
notificationService = new NotificationsServiceStub(); notificationService = new NotificationsServiceStub();
@@ -42,14 +55,22 @@ describe('AddBitstreamFormatComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, AddBitstreamFormatComponent], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, AddBitstreamFormatComponent],
providers: [ providers: [
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
{ provide: NotificationsService, useValue: notificationService }, { provide: NotificationsService, useValue: notificationService },
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService }, { provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
], { provide: FormService, useValue: getMockFormService() },
schemas: [CUSTOM_ELEMENTS_SCHEMA] { provide: FormBuilderService, useValue: formBuilderServiceStub },
}).compileComponents(); ],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.overrideComponent(AddBitstreamFormatComponent, {
remove: {
imports: [FormatFormComponent]
}
})
.compileComponents();
}; };
const initBeforeEach = () => { const initBeforeEach = () => {
@@ -81,14 +102,22 @@ describe('AddBitstreamFormatComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, AddBitstreamFormatComponent], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, AddBitstreamFormatComponent],
providers: [ providers: [
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
{ provide: NotificationsService, useValue: notificationService }, { provide: NotificationsService, useValue: notificationService },
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService }, { provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
], { provide: FormService, useValue: getMockFormService() },
schemas: [CUSTOM_ELEMENTS_SCHEMA] { provide: FormBuilderService, useValue: formBuilderServiceStub },
}).compileComponents(); ],
schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.overrideComponent(AddBitstreamFormatComponent, {
remove: {
imports: [FormatFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(initBeforeEach); beforeEach(initBeforeEach);
it('should send the updated form to the service, show a notification and navigate to ', () => { it('should send the updated form to the service, show a notification and navigate to ', () => {

View File

@@ -19,6 +19,7 @@ import {
createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$ createSuccessfulRemoteDataObject$
} from '../../../../shared/remote-data.utils'; } from '../../../../shared/remote-data.utils';
import { FormatFormComponent } from '../format-form/format-form.component';
describe('EditBitstreamFormatComponent', () => { describe('EditBitstreamFormatComponent', () => {
let comp: EditBitstreamFormatComponent; let comp: EditBitstreamFormatComponent;
@@ -52,15 +53,22 @@ describe('EditBitstreamFormatComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, EditBitstreamFormatComponent], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, EditBitstreamFormatComponent],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
{ provide: NotificationsService, useValue: notificationService }, { provide: NotificationsService, useValue: notificationService },
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService }, { provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
],
schemas: [CUSTOM_ELEMENTS_SCHEMA] ],
}).compileComponents(); schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
.overrideComponent(EditBitstreamFormatComponent, {
remove: {
imports: [FormatFormComponent]
}
})
.compileComponents();
}; };
const initBeforeEach = () => { const initBeforeEach = () => {
@@ -102,15 +110,21 @@ describe('EditBitstreamFormatComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, EditBitstreamFormatComponent], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, EditBitstreamFormatComponent],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
{ provide: NotificationsService, useValue: notificationService }, { provide: NotificationsService, useValue: notificationService },
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService }, { provide: BitstreamFormatDataService, useValue: bitstreamFormatDataService },
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(EditBitstreamFormatComponent, {
remove: {
imports: [FormatFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(initBeforeEach); beforeEach(initBeforeEach);
it('should send the updated form to the service, show a notification and navigate to ', () => { it('should send the updated form to the service, show a notification and navigate to ', () => {

View File

@@ -12,6 +12,7 @@ import { BitstreamFormatSupportLevel } from '../../../../core/shared/bitstream-f
import { DynamicCheckboxModel, DynamicFormArrayModel, DynamicInputModel } from '@ng-dynamic-forms/core'; import { DynamicCheckboxModel, DynamicFormArrayModel, DynamicInputModel } from '@ng-dynamic-forms/core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { isEmpty } from '../../../../shared/empty.util'; import { isEmpty } from '../../../../shared/empty.util';
import { FormComponent } from '../../../../shared/form/form.component';
describe('FormatFormComponent', () => { describe('FormatFormComponent', () => {
let comp: FormatFormComponent; let comp: FormatFormComponent;
@@ -40,12 +41,24 @@ describe('FormatFormComponent', () => {
const initAsync = () => { const initAsync = () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), ReactiveFormsModule, FormsModule, TranslateModule.forRoot(), NgbModule, FormatFormComponent], imports: [
providers: [ CommonModule,
{ provide: Router, useValue: router }, RouterTestingModule.withRoutes([]),
], ReactiveFormsModule,
schemas: [CUSTOM_ELEMENTS_SCHEMA] FormsModule,
}).compileComponents(); TranslateModule.forRoot(),
NgbModule,
FormatFormComponent,
],
providers: [{ provide: Router, useValue: router }],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.overrideComponent(FormatFormComponent, {
remove: {
imports: [FormComponent],
},
})
.compileComponents();
}; };
const initBeforeEach = () => { const initBeforeEach = () => {

View File

@@ -6,14 +6,12 @@ import {
DynamicFormArrayModel, DynamicFormArrayModel,
DynamicFormControlLayout, DynamicFormControlLayout,
DynamicFormControlModel, DynamicFormControlModel,
DynamicFormService,
DynamicInputModel, DynamicInputModel,
DynamicSelectModel, DynamicSelectModel,
DynamicTextAreaModel DynamicTextAreaModel
} from '@ng-dynamic-forms/core'; } from '@ng-dynamic-forms/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { hasValue, isEmpty } from '../../../../shared/empty.util'; import { hasValue, isEmpty } from '../../../../shared/empty.util';
import { TranslateService } from '@ngx-translate/core';
import { getBitstreamFormatsModuleRoute } from '../../admin-registries-routing-paths'; import { getBitstreamFormatsModuleRoute } from '../../admin-registries-routing-paths';
import { environment } from '../../../../../environments/environment'; import { environment } from '../../../../../environments/environment';
import { FormComponent } from '../../../../shared/form/form.component'; import { FormComponent } from '../../../../shared/form/form.component';
@@ -129,9 +127,7 @@ export class FormatFormComponent implements OnInit {
}, this.arrayElementLayout), }, this.arrayElementLayout),
]; ];
constructor(private dynamicFormService: DynamicFormService, constructor(private router: Router) {
private translateService: TranslateService,
private router: Router) {
} }

View File

@@ -20,6 +20,16 @@ import { MetadataSchema } from '../../../core/metadata/metadata-schema.model';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
import { getMockFormService } from '../../../shared/mocks/form-service.mock';
import { FormService } from '../../../shared/form/form.service';
import { GroupDataService } from '../../../core/eperson/group-data.service';
import { ConfigurationDataService } from '../../../core/data/configuration-data.service';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
import { SearchConfigurationServiceStub } from '../../../shared/testing/search-configuration-service.stub';
import { ConfigurationProperty } from '../../../core/shared/configuration-property.model';
import { FormBuilderService } from 'src/app/shared/form/builder/form-builder.service';
import { MetadataSchemaFormComponent } from './metadata-schema-form/metadata-schema-form.component';
import { RouterLink } from '@angular/router';
describe('MetadataRegistryComponent', () => { describe('MetadataRegistryComponent', () => {
let comp: MetadataRegistryComponent; let comp: MetadataRegistryComponent;
@@ -67,19 +77,76 @@ describe('MetadataRegistryComponent', () => {
paginationService = new PaginationServiceStub(); paginationService = new PaginationServiceStub();
const configurationDataService = jasmine.createSpyObj('configurationDataService', {
findByPropertyName: createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(), {
name: 'test',
values: [
'org.dspace.ctask.general.ProfileFormats = test'
]
}))
});
const formBuilderServiceStub = {
createFormGroup: () => {
return {
patchValue: () => { },
reset(_value?: any, _options?: { onlySelf?: boolean; emitEvent?: boolean; }): void { },
};
}
};
const mockGroupService = jasmine.createSpyObj('groupService',
{
// findByHref: jasmine.createSpy('findByHref'),
// findAll: jasmine.createSpy('findAll'),
// searchGroups: jasmine.createSpy('searchGroups'),
getUUIDFromString: jasmine.createSpy('getUUIDFromString'),
},
{
linkPath: 'groups'
}
);
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, MetadataRegistryComponent, PaginationComponent, EnumKeysPipe], imports: [
providers: [ CommonModule,
RouterTestingModule.withRoutes([]),
TranslateModule.forRoot(),
NgbModule,
MetadataRegistryComponent,
PaginationComponent,
EnumKeysPipe,
],
providers: [
{ provide: RegistryService, useValue: registryServiceStub }, { provide: RegistryService, useValue: registryServiceStub },
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) }, { provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
{ provide: PaginationService, useValue: paginationService }, { provide: PaginationService, useValue: paginationService },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() } {
], provide: NotificationsService,
schemas: [NO_ERRORS_SCHEMA] useValue: new NotificationsServiceStub(),
}).overrideComponent(MetadataRegistryComponent, { },
set: { changeDetection: ChangeDetectionStrategy.Default } { provide: FormService, useValue: getMockFormService() },
}).compileComponents(); { provide: GroupDataService, useValue: mockGroupService },
{
provide: ConfigurationDataService,
useValue: configurationDataService,
},
{
provide: SearchConfigurationService,
useValue: new SearchConfigurationServiceStub(),
},
{ provide: FormBuilderService, useValue: formBuilderServiceStub },
],
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(MetadataRegistryComponent, {
remove: {
imports: [MetadataSchemaFormComponent, RouterLink]
},
add: { changeDetection: ChangeDetectionStrategy.Default },
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -10,6 +10,7 @@ import { RegistryService } from '../../../../core/registry/registry.service';
import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model'; import { MetadataSchema } from '../../../../core/metadata/metadata-schema.model';
import { FormComponent } from '../../../../shared/form/form.component';
describe('MetadataSchemaFormComponent', () => { describe('MetadataSchemaFormComponent', () => {
let component: MetadataSchemaFormComponent; let component: MetadataSchemaFormComponent;
@@ -38,13 +39,19 @@ describe('MetadataSchemaFormComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
return TestBed.configureTestingModule({ return TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, MetadataSchemaFormComponent, EnumKeysPipe], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, MetadataSchemaFormComponent, EnumKeysPipe],
providers: [ providers: [
{ provide: RegistryService, useValue: registryServiceStub }, { provide: RegistryService, useValue: registryServiceStub },
{ provide: FormBuilderService, useValue: formBuilderServiceStub } { provide: FormBuilderService, useValue: formBuilderServiceStub }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(MetadataSchemaFormComponent, {
remove: {
imports: [FormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -25,6 +25,13 @@ import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.u
import { VarDirective } from '../../../shared/utils/var.directive'; import { VarDirective } from '../../../shared/utils/var.directive';
import { PaginationService } from '../../../core/pagination/pagination.service'; import { PaginationService } from '../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
import { MetadataFieldFormComponent } from './metadata-field-form/metadata-field-form.component';
import { GroupDataService } from '../../../core/eperson/group-data.service';
import { ConfigurationDataService } from '../../../core/data/configuration-data.service';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
import { SearchConfigurationServiceStub } from '../../../shared/testing/search-configuration-service.stub';
import { ConfigurationProperty } from '../../../core/shared/configuration-property.model';
import { createPaginatedList } from '../../../shared/testing/utils.test';
describe('MetadataSchemaComponent', () => { describe('MetadataSchemaComponent', () => {
let comp: MetadataSchemaComponent; let comp: MetadataSchemaComponent;
@@ -129,19 +136,56 @@ describe('MetadataSchemaComponent', () => {
const paginationService = new PaginationServiceStub(); const paginationService = new PaginationServiceStub();
const configurationDataService = jasmine.createSpyObj('configurationDataService', {
findByPropertyName: createSuccessfulRemoteDataObject$(Object.assign(new ConfigurationProperty(), {
name: 'test',
values: [
'org.dspace.ctask.general.ProfileFormats = test'
]
}))
});
const groupDataService = jasmine.createSpyObj('groupsDataService', {
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
getGroupRegistryRouterLink: '',
getUUIDFromString: '',
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, MetadataSchemaComponent, PaginationComponent, EnumKeysPipe, VarDirective], imports: [
providers: [ CommonModule,
RouterTestingModule.withRoutes([]),
TranslateModule.forRoot(),
NgbModule,
MetadataSchemaComponent,
PaginationComponent,
EnumKeysPipe,
VarDirective,
],
providers: [
{ provide: RegistryService, useValue: registryServiceStub }, { provide: RegistryService, useValue: registryServiceStub },
{ provide: ActivatedRoute, useValue: activatedRouteStub }, { provide: ActivatedRoute, useValue: activatedRouteStub },
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) }, { provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
{ provide: Router, useValue: new RouterStub() }, { provide: Router, useValue: new RouterStub() },
{ provide: PaginationService, useValue: paginationService }, { provide: PaginationService, useValue: paginationService },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() } {
], provide: NotificationsService,
schemas: [NO_ERRORS_SCHEMA] useValue: new NotificationsServiceStub(),
}).compileComponents(); },
{ provide: GroupDataService, useValue: groupDataService },
{ provide: ConfigurationDataService, useValue: configurationDataService },
{ provide: SearchConfigurationService, useValue: new SearchConfigurationServiceStub() },
],
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(MetadataSchemaComponent, {
remove: {
imports: [MetadataFieldFormComponent],
},
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -2,16 +2,26 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { AdminSearchPageComponent } from './admin-search-page.component'; import { AdminSearchPageComponent } from './admin-search-page.component';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
describe('AdminSearchPageComponent', () => { describe('AdminSearchPageComponent', () => {
let component: AdminSearchPageComponent; let component: AdminSearchPageComponent;
let fixture: ComponentFixture<AdminSearchPageComponent>; let fixture: ComponentFixture<AdminSearchPageComponent>;
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(async () => {
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [AdminSearchPageComponent], imports: [AdminSearchPageComponent],
schemas: [NO_ERRORS_SCHEMA] providers: [
}) { provide: ActivatedRoute, useValue: new ActivatedRouteStub() }
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(AdminSearchPageComponent, {
remove: {
imports: [ConfigurationSearchPageComponent]
}
})
.compileComponents(); .compileComponents();
})); }));

View File

@@ -43,14 +43,14 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
NoopAnimationsModule, NoopAnimationsModule,
TranslateModule.forRoot(), TranslateModule.forRoot(),
RouterTestingModule.withRoutes([]), RouterTestingModule.withRoutes([]),
SharedModule, SharedModule,
CollectionAdminSearchResultGridElementComponent CollectionAdminSearchResultGridElementComponent
], ],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: BitstreamDataService, useValue: {} }, { provide: BitstreamDataService, useValue: {} },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
@@ -58,8 +58,8 @@ describe('CollectionAdminSearchResultGridElementComponent', () => {
{ provide: FileService, useClass: FileServiceStub }, { provide: FileService, useClass: FileServiceStub },
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub }, { provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
{ provide: ThemeService, useValue: getMockThemeService() }, { provide: ThemeService, useValue: getMockThemeService() },
] ]
}) })
.compileComponents(); .compileComponents();
})); }));

View File

@@ -2,6 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { AdminWorkflowPageComponent } from './admin-workflow-page.component'; import { AdminWorkflowPageComponent } from './admin-workflow-page.component';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component';
describe('AdminSearchPageComponent', () => { describe('AdminSearchPageComponent', () => {
let component: AdminWorkflowPageComponent; let component: AdminWorkflowPageComponent;
@@ -9,9 +10,16 @@ describe('AdminSearchPageComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [AdminWorkflowPageComponent], imports: [AdminWorkflowPageComponent],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.overrideComponent(AdminWorkflowPageComponent, {
remove: {
imports: [
ConfigurationSearchPageComponent
]
}
})
.compileComponents(); .compileComponents();
})); }));

View File

@@ -29,6 +29,11 @@ import { getMockLinkService } from '../../../../../shared/mocks/link-service.moc
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { ThemeService } from '../../../../../shared/theme-support/theme.service';
import { WorkflowItemAdminWorkflowActionsComponent } from '../../actions/workflow-item/workflow-item-admin-workflow-actions.component';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataServiceStub } from '../../../../../shared/testing/authorization-service.stub';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
describe('WorkflowItemSearchResultAdminWorkflowGridElementComponent', () => { describe('WorkflowItemSearchResultAdminWorkflowGridElementComponent', () => {
let component: WorkflowItemSearchResultAdminWorkflowGridElementComponent; let component: WorkflowItemSearchResultAdminWorkflowGridElementComponent;
@@ -70,11 +75,16 @@ describe('WorkflowItemSearchResultAdminWorkflowGridElementComponent', () => {
} }
}, },
{ provide: BitstreamDataService, useValue: {} }, { provide: BitstreamDataService, useValue: {} },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useClass: AuthorizationDataServiceStub },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.overrideComponent(WorkflowItemSearchResultAdminWorkflowGridElementComponent, { .overrideComponent(WorkflowItemSearchResultAdminWorkflowGridElementComponent, {
set: { remove: {
imports: [WorkflowItemAdminWorkflowActionsComponent]
},
add: {
entryComponents: [ItemGridElementComponent] entryComponents: [ItemGridElementComponent]
} }
}) })

View File

@@ -36,6 +36,11 @@ import {
} from '../../../../../shared/testing/supervision-order.mock'; } from '../../../../../shared/testing/supervision-order.mock';
import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service'; import { SupervisionOrderDataService } from '../../../../../core/supervision-order/supervision-order-data.service';
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { NotificationsService } from '../../../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../../../shared/testing/notifications-service.stub';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
describe('WorkspaceItemSearchResultAdminWorkflowGridElementComponent', () => { describe('WorkspaceItemSearchResultAdminWorkflowGridElementComponent', () => {
let component: WorkspaceItemSearchResultAdminWorkflowGridElementComponent; let component: WorkspaceItemSearchResultAdminWorkflowGridElementComponent;
@@ -67,25 +72,28 @@ describe('WorkspaceItemSearchResultAdminWorkflowGridElementComponent', () => {
init(); init();
TestBed.configureTestingModule( TestBed.configureTestingModule(
{ {
imports: [ imports: [
NoopAnimationsModule, NoopAnimationsModule,
TranslateModule.forRoot(), TranslateModule.forRoot(),
RouterTestingModule.withRoutes([]), RouterTestingModule.withRoutes([]),
WorkspaceItemSearchResultAdminWorkflowGridElementComponent, ItemGridElementComponent, ListableObjectDirective WorkspaceItemSearchResultAdminWorkflowGridElementComponent, ItemGridElementComponent, ListableObjectDirective
], ],
providers: [ providers: [
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: ThemeService, useValue: themeService }, { provide: ThemeService, useValue: themeService },
{ {
provide: TruncatableService, useValue: { provide: TruncatableService, useValue: {
isCollapsed: () => observableOf(true), isCollapsed: () => observableOf(true),
} }
}, },
{ provide: BitstreamDataService, useValue: {} }, { provide: BitstreamDataService, useValue: {} },
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService } { provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
], { provide: NotificationsService, useValue: new NotificationsServiceStub() },
schemas: [NO_ERRORS_SCHEMA] { provide: AuthService, useValue: new AuthServiceMock() },
}) { provide: AuthorizationDataService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(WorkspaceItemSearchResultAdminWorkflowGridElementComponent, { .overrideComponent(WorkspaceItemSearchResultAdminWorkflowGridElementComponent, {
set: { set: {
entryComponents: [ItemGridElementComponent] entryComponents: [ItemGridElementComponent]

View File

@@ -24,6 +24,11 @@ import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service
import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { APP_CONFIG } from '../../../../../../config/app-config.interface';
import { environment } from '../../../../../../environments/environment'; import { environment } from '../../../../../../environments/environment';
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
describe('WorkflowItemSearchResultAdminWorkflowListElementComponent', () => { describe('WorkflowItemSearchResultAdminWorkflowListElementComponent', () => {
let component: WorkflowItemSearchResultAdminWorkflowListElementComponent; let component: WorkflowItemSearchResultAdminWorkflowListElementComponent;
@@ -58,7 +63,10 @@ describe('WorkflowItemSearchResultAdminWorkflowListElementComponent', () => {
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: environment } { provide: APP_CONFIG, useValue: environment },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })

View File

@@ -31,6 +31,13 @@ import {
supervisionOrderPaginatedListRD$ supervisionOrderPaginatedListRD$
} from '../../../../../shared/testing/supervision-order.mock'; } from '../../../../../shared/testing/supervision-order.mock';
import { DSpaceObject } from '../../../../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../../../../core/shared/dspace-object.model';
import { NotificationsService } from '../../../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../../../shared/testing/notifications-service.stub';
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
describe('WorkspaceItemSearchResultAdminWorkflowListElementComponent', () => { describe('WorkspaceItemSearchResultAdminWorkflowListElementComponent', () => {
let component: WorkspaceItemSearchResultAdminWorkflowListElementComponent; let component: WorkspaceItemSearchResultAdminWorkflowListElementComponent;
@@ -68,8 +75,12 @@ describe('WorkspaceItemSearchResultAdminWorkflowListElementComponent', () => {
], ],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: LinkService, useValue: linkService }, { provide: LinkService, useValue: linkService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: AuthorizationDataService, useValue: {} },
{ provide: SupervisionOrderDataService, useValue: supervisionOrderDataService }, { provide: SupervisionOrderDataService, useValue: supervisionOrderDataService },
{ provide: APP_CONFIG, useValue: environment } { provide: APP_CONFIG, useValue: environment }
], ],

View File

@@ -30,6 +30,15 @@ import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
import { APP_CONFIG } from '../../../config/app-config.interface'; import { APP_CONFIG } from '../../../config/app-config.interface';
import { RouteService } from 'src/app/core/services/route.service';
import { routeServiceStub } from 'src/app/shared/testing/route-service.stub';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { ThemeService } from 'src/app/shared/theme-support/theme.service';
import { getMockThemeService } from 'src/app/shared/mocks/theme-service.mock';
import { ThemedLoadingComponent } from 'src/app/shared/loading/themed-loading.component';
import { DsoEditMenuComponent } from 'src/app/shared/dso-page/dso-edit-menu/dso-edit-menu.component';
import { SelectableListService } from 'src/app/shared/object-list/selectable-list/selectable-list.service';
import { HostWindowService } from 'src/app/shared/host-window.service';
describe('BrowseByMetadataPageComponent', () => { describe('BrowseByMetadataPageComponent', () => {
let comp: BrowseByMetadataPageComponent; let comp: BrowseByMetadataPageComponent;
@@ -102,17 +111,36 @@ describe('BrowseByMetadataPageComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, BrowseByMetadataPageComponent, EnumKeysPipe, VarDirective], imports: [
providers: [ CommonModule,
RouterTestingModule.withRoutes([]),
TranslateModule.forRoot(),
NgbModule,
BrowseByMetadataPageComponent,
EnumKeysPipe,
VarDirective,
NoopAnimationsModule
],
providers: [
{ provide: ActivatedRoute, useValue: activatedRouteStub }, { provide: ActivatedRoute, useValue: activatedRouteStub },
{ provide: BrowseService, useValue: mockBrowseService }, { provide: BrowseService, useValue: mockBrowseService },
{ provide: DSpaceObjectDataService, useValue: mockDsoService }, { provide: DSpaceObjectDataService, useValue: mockDsoService },
{ provide: PaginationService, useValue: paginationService }, { provide: PaginationService, useValue: paginationService },
{ provide: Router, useValue: new RouterMock() }, { provide: Router, useValue: new RouterMock() },
{ provide: APP_CONFIG, useValue: environmentMock } { provide: APP_CONFIG, useValue: environmentMock },
], { provide: RouteService, useValue: routeServiceStub },
schemas: [NO_ERRORS_SCHEMA] { provide: ThemeService, useValue: getMockThemeService() },
}).compileComponents(); { provide: SelectableListService, useValue: {} },
{ provide: HostWindowService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(BrowseByMetadataPageComponent, {
remove: {
imports: [ThemedLoadingComponent, DsoEditMenuComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -15,6 +15,9 @@ import { NotificationsServiceStub } from '../../shared/testing/notifications-ser
import { RequestService } from '../../core/data/request.service'; import { RequestService } from '../../core/data/request.service';
import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock';
import { AuthService } from '../../core/auth/auth.service';
import { AuthServiceMock } from '../../shared/mocks/auth.service.mock';
import { CollectionFormComponent } from '../collection-form/collection-form.component';
describe('CreateCollectionPageComponent', () => { describe('CreateCollectionPageComponent', () => {
let comp: CreateCollectionPageComponent; let comp: CreateCollectionPageComponent;
@@ -22,21 +25,28 @@ describe('CreateCollectionPageComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
return TestBed.configureTestingModule({ return TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CreateCollectionPageComponent], imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CreateCollectionPageComponent],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: CollectionDataService, useValue: {} }, { provide: CollectionDataService, useValue: {} },
{ {
provide: CommunityDataService, provide: CommunityDataService,
useValue: { findById: () => observableOf({ payload: { name: 'test' } }) } useValue: { findById: () => observableOf({ payload: { name: 'test' } }) }
}, },
{ provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } }, { provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } },
{ provide: Router, useValue: {} }, { provide: Router, useValue: {} },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }, { provide: NotificationsService, useValue: new NotificationsServiceStub() },
{ provide: RequestService, useValue: {} } { provide: RequestService, useValue: {} },
], { provide: AuthService, useValue: new AuthServiceMock() },
schemas: [NO_ERRORS_SCHEMA] ],
}).compileComponents(); schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(CreateCollectionPageComponent, {
remove: {
imports: [CollectionFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -15,6 +15,10 @@ import { Collection } from '../../../core/shared/collection.model';
import { RequestService } from '../../../core/data/request.service'; import { RequestService } from '../../../core/data/request.service';
import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
import { getCollectionItemTemplateRoute } from '../../collection-page-routing-paths'; import { getCollectionItemTemplateRoute } from '../../collection-page-routing-paths';
import { AuthServiceMock } from '../../../shared/mocks/auth.service.mock';
import { AuthService } from '../../../core/auth/auth.service';
import { CommunityDataService } from '../../../core/data/community-data.service';
import { ObjectCacheService } from '../../../core/cache/object-cache.service';
describe('CollectionMetadataComponent', () => { describe('CollectionMetadataComponent', () => {
let comp: CollectionMetadataComponent; let comp: CollectionMetadataComponent;
@@ -66,7 +70,10 @@ describe('CollectionMetadataComponent', () => {
{ provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: createSuccessfulRemoteDataObject(collection) }) } } }, { provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: createSuccessfulRemoteDataObject(collection) }) } } },
{ provide: NotificationsService, useValue: notificationsService }, { provide: NotificationsService, useValue: notificationsService },
{ provide: RequestService, useValue: requestService }, { provide: RequestService, useValue: requestService },
{ provide: Router, useValue: routerMock } { provide: Router, useValue: routerMock },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: CommunityDataService, useValue: {} },
{ provide: ObjectCacheService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -11,6 +11,10 @@ import { Collection } from '../../core/shared/collection.model';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { getCollectionEditRoute } from '../collection-page-routing-paths'; import { getCollectionEditRoute } from '../collection-page-routing-paths';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
describe('EditItemTemplatePageComponent', () => { describe('EditItemTemplatePageComponent', () => {
let comp: EditItemTemplatePageComponent; let comp: EditItemTemplatePageComponent;
@@ -28,13 +32,15 @@ describe('EditItemTemplatePageComponent', () => {
findByCollectionID: createSuccessfulRemoteDataObject$({}) findByCollectionID: createSuccessfulRemoteDataObject$({})
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, EditItemTemplatePageComponent], imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, EditItemTemplatePageComponent],
providers: [ providers: [
{ provide: ItemTemplateDataService, useValue: itemTemplateService }, { provide: ItemTemplateDataService, useValue: itemTemplateService },
{ provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: createSuccessfulRemoteDataObject(collection) }) } } } { provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: createSuccessfulRemoteDataObject(collection) }) } } },
], { provide: ThemeService, useValue: getMockThemeService() },
schemas: [NO_ERRORS_SCHEMA] { provide: NotificationsService, useValue: new NotificationsServiceStub() },
}).compileComponents(); ],
schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -4,6 +4,9 @@ import { CommunityListPageComponent } from './community-list-page.component';
import { TranslateLoader, TranslateModule } from '@ngx-translate/core'; import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock'; import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ThemeService } from '../shared/theme-support/theme.service';
import { getMockThemeService } from '../shared/mocks/theme-service.mock';
import { CommunityListService } from './community-list-service';
describe('CommunityListPageComponent', () => { describe('CommunityListPageComponent', () => {
let component: CommunityListPageComponent; let component: CommunityListPageComponent;
@@ -22,6 +25,8 @@ describe('CommunityListPageComponent', () => {
], ],
providers: [ providers: [
CommunityListPageComponent, CommunityListPageComponent,
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: CommunityListService, useValue: {} },
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}) })

View File

@@ -12,6 +12,9 @@ import { CreateCommunityPageComponent } from './create-community-page.component'
import { NotificationsService } from '../../shared/notifications/notifications.service'; import { NotificationsService } from '../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
import { RequestService } from '../../core/data/request.service'; import { RequestService } from '../../core/data/request.service';
import { AuthService } from '../../core/auth/auth.service';
import { AuthServiceMock } from '../../shared/mocks/auth.service.mock';
import { CommunityFormComponent } from '../community-form/community-form.component';
describe('CreateCommunityPageComponent', () => { describe('CreateCommunityPageComponent', () => {
let comp: CreateCommunityPageComponent; let comp: CreateCommunityPageComponent;
@@ -19,16 +22,23 @@ describe('CreateCommunityPageComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CreateCommunityPageComponent], imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CreateCommunityPageComponent],
providers: [ providers: [
{ provide: CommunityDataService, useValue: { findById: () => observableOf({}) } }, { provide: CommunityDataService, useValue: { findById: () => observableOf({}) } },
{ provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } }, { provide: RouteService, useValue: { getQueryParameterValue: () => observableOf('1234') } },
{ provide: Router, useValue: {} }, { provide: Router, useValue: {} },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }, { provide: NotificationsService, useValue: new NotificationsServiceStub() },
{ provide: RequestService, useValue: {} } { provide: RequestService, useValue: {} },
], { provide: AuthService, useValue: new AuthServiceMock() },
schemas: [NO_ERRORS_SCHEMA] ],
}).compileComponents(); schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(CreateCommunityPageComponent, {
remove: {
imports: [CommunityFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -10,6 +10,7 @@ import { DSpaceObject } from '../../../core/shared/dspace-object.model';
import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils';
import { CommunityAuthorizationsComponent } from './community-authorizations.component'; import { CommunityAuthorizationsComponent } from './community-authorizations.component';
import { Collection } from '../../../core/shared/collection.model'; import { Collection } from '../../../core/shared/collection.model';
import { ResourcePoliciesComponent } from '../../../shared/resource-policies/resource-policies.component';
describe('CommunityAuthorizationsComponent', () => { describe('CommunityAuthorizationsComponent', () => {
let comp: CommunityAuthorizationsComponent<DSpaceObject>; let comp: CommunityAuthorizationsComponent<DSpaceObject>;
@@ -37,17 +38,23 @@ describe('CommunityAuthorizationsComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
CommonModule, CommonModule,
CommunityAuthorizationsComponent CommunityAuthorizationsComponent
], ],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
ChangeDetectorRef, ChangeDetectorRef,
CommunityAuthorizationsComponent, CommunityAuthorizationsComponent,
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(CommunityAuthorizationsComponent, {
remove: {
imports: [ResourcePoliciesComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -7,6 +7,7 @@ import { ActivatedRoute } from '@angular/router';
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
import { CommunityCurateComponent } from './community-curate.component'; import { CommunityCurateComponent } from './community-curate.component';
import { Community } from '../../../core/shared/community.model'; import { Community } from '../../../core/shared/community.model';
import { CurationFormComponent } from '../../../curation-form/curation-form.component';
describe('CommunityCurateComponent', () => { describe('CommunityCurateComponent', () => {
let comp: CommunityCurateComponent; let comp: CommunityCurateComponent;
@@ -34,13 +35,19 @@ describe('CommunityCurateComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), CommunityCurateComponent], imports: [TranslateModule.forRoot(), CommunityCurateComponent],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
{ provide: DSONameService, useValue: dsoNameService } { provide: DSONameService, useValue: dsoNameService }
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(CommunityCurateComponent, {
remove: {
imports: [CurationFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -6,9 +6,9 @@ import { RemoteData } from '../../../core/data/remote-data';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
import { hasValue } from '../../../shared/empty.util'; import { hasValue } from '../../../shared/empty.util';
import { CurationFormComponent } from "../../../curation-form/curation-form.component"; import { CurationFormComponent } from '../../../curation-form/curation-form.component';
import { TranslateModule } from "@ngx-translate/core"; import { TranslateModule } from '@ngx-translate/core';
import { AsyncPipe } from "@angular/common"; import { AsyncPipe } from '@angular/common';
/** /**
* Component for managing a community's curation tasks * Component for managing a community's curation tasks

View File

@@ -10,6 +10,7 @@ import { CommunityMetadataComponent } from './community-metadata.component';
import { CommunityDataService } from '../../../core/data/community-data.service'; import { CommunityDataService } from '../../../core/data/community-data.service';
import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
import { CommunityFormComponent } from '../../community-form/community-form.component';
describe('CommunityMetadataComponent', () => { describe('CommunityMetadataComponent', () => {
let comp: CommunityMetadataComponent; let comp: CommunityMetadataComponent;
@@ -17,14 +18,20 @@ describe('CommunityMetadataComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CommunityMetadataComponent], imports: [TranslateModule.forRoot(), SharedModule, CommonModule, RouterTestingModule, CommunityMetadataComponent],
providers: [ providers: [
{ provide: CommunityDataService, useValue: {} }, { provide: CommunityDataService, useValue: {} },
{ provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: { payload: {} } }) } } }, { provide: ActivatedRoute, useValue: { parent: { data: observableOf({ dso: { payload: {} } }) } } },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() } { provide: NotificationsService, useValue: new NotificationsServiceStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(CommunityMetadataComponent, {
remove: {
imports: [CommunityFormComponent],
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -16,7 +16,7 @@ import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-bu
import { CoreState } from '../core-state.model'; import { CoreState } from '../core-state.model';
import { RequestEntry } from './request-entry.model'; import { RequestEntry } from './request-entry.model';
import { FindListOptions } from './find-list-options.model'; import { FindListOptions } from './find-list-options.model';
import { HALEndpointServiceStub } from 'src/app/shared/testing/hal-endpoint-service.stub'; import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub';
import { testCreateDataImplementation } from './base/create-data.spec'; import { testCreateDataImplementation } from './base/create-data.spec';
import { testPatchDataImplementation } from './base/patch-data.spec'; import { testPatchDataImplementation } from './base/patch-data.spec';
import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec';

View File

@@ -8,9 +8,16 @@ import { RelationshipDataService } from '../../../core/data/relationship-data.se
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
import { of } from 'rxjs/internal/observable/of'; import { of } from 'rxjs/internal/observable/of';
import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model';
import { MetadataValue, VIRTUAL_METADATA_PREFIX } from '../../../core/shared/metadata.models'; import {
import { DsoEditMetadataChangeType, DsoEditMetadataValue } from '../dso-edit-metadata-form'; MetadataValue,
VIRTUAL_METADATA_PREFIX,
} from '../../../core/shared/metadata.models';
import {
DsoEditMetadataChangeType,
DsoEditMetadataValue,
} from '../dso-edit-metadata-form';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ThemedTypeBadgeComponent } from '../../../shared/object-collection/shared/badges/type-badge/themed-type-badge.component';
const EDIT_BTN = 'edit'; const EDIT_BTN = 'edit';
const CONFIRM_BTN = 'confirm'; const CONFIRM_BTN = 'confirm';
@@ -30,14 +37,16 @@ describe('DsoEditMetadataValueComponent', () => {
function initServices(): void { function initServices(): void {
relationshipService = jasmine.createSpyObj('relationshipService', { relationshipService = jasmine.createSpyObj('relationshipService', {
resolveMetadataRepresentation: of(new ItemMetadataRepresentation(metadataValue)), resolveMetadataRepresentation: of(
new ItemMetadataRepresentation(metadataValue)
),
}); });
dsoNameService = jasmine.createSpyObj('dsoNameService', { dsoNameService = jasmine.createSpyObj('dsoNameService', {
getName: 'Related Name', getName: 'Related Name',
}); });
} }
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(async () => {
metadataValue = Object.assign(new MetadataValue(), { metadataValue = Object.assign(new MetadataValue(), {
value: 'Regular Name', value: 'Regular Name',
language: 'en', language: 'en',
@@ -48,14 +57,25 @@ describe('DsoEditMetadataValueComponent', () => {
initServices(); initServices();
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), DsoEditMetadataValueComponent, VarDirective], imports: [
providers: [ TranslateModule.forRoot(),
RouterTestingModule.withRoutes([]),
DsoEditMetadataValueComponent,
VarDirective,
],
providers: [
{ provide: RelationshipDataService, useValue: relationshipService }, { provide: RelationshipDataService, useValue: relationshipService },
{ provide: DSONameService, useValue: dsoNameService }, { provide: DSONameService, useValue: dsoNameService },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA],
}).compileComponents(); })
.overrideComponent(DsoEditMetadataValueComponent, {
remove: {
imports: [ThemedTypeBadgeComponent],
},
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
@@ -67,7 +87,9 @@ describe('DsoEditMetadataValueComponent', () => {
}); });
it('should not show a badge', () => { it('should not show a badge', () => {
expect(fixture.debugElement.query(By.css('ds-themed-type-badge'))).toBeNull(); expect(
fixture.debugElement.query(By.css('ds-themed-type-badge'))
).toBeNull();
}); });
describe('when no changes have been made', () => { describe('when no changes have been made', () => {
@@ -133,7 +155,9 @@ describe('DsoEditMetadataValueComponent', () => {
}); });
it('should show a badge', () => { it('should show a badge', () => {
expect(fixture.debugElement.query(By.css('ds-themed-type-badge'))).toBeTruthy(); expect(
fixture.debugElement.query(By.css('ds-themed-type-badge'))
).toBeTruthy();
}); });
assertButton(EDIT_BTN, true, true); assertButton(EDIT_BTN, true, true);
@@ -143,7 +167,11 @@ describe('DsoEditMetadataValueComponent', () => {
assertButton(DRAG_BTN, true, false); assertButton(DRAG_BTN, true, false);
}); });
function assertButton(name: string, exists: boolean, disabled: boolean = false): void { function assertButton(
name: string,
exists: boolean,
disabled: boolean = false
): void {
describe(`${name} button`, () => { describe(`${name} button`, () => {
let btn: DebugElement; let btn: DebugElement;

View File

@@ -3,7 +3,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { VarDirective } from '../../shared/utils/var.directive'; import { VarDirective } from '../../shared/utils/var.directive';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { DebugElement, Injectable, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, DebugElement, Injectable, NO_ERRORS_SCHEMA } from '@angular/core';
import { DSpaceObject } from '../../core/shared/dspace-object.model'; import { DSpaceObject } from '../../core/shared/dspace-object.model';
import { Item } from '../../core/shared/item.model'; import { Item } from '../../core/shared/item.model';
import { MetadataValue } from '../../core/shared/metadata.models'; import { MetadataValue } from '../../core/shared/metadata.models';
@@ -16,6 +16,13 @@ import { DATA_SERVICE_FACTORY } from '../../core/data/base/data-service.decorato
import { Operation } from 'fast-json-patch'; import { Operation } from 'fast-json-patch';
import { RemoteData } from '../../core/data/remote-data'; import { RemoteData } from '../../core/data/remote-data';
import { Observable } from 'rxjs/internal/Observable'; import { Observable } from 'rxjs/internal/Observable';
import { DsoEditMetadataValueComponent } from './dso-edit-metadata-value/dso-edit-metadata-value.component';
import { DsoEditMetadataHeadersComponent } from './dso-edit-metadata-headers/dso-edit-metadata-headers.component';
import { MetadataFieldSelectorComponent } from './metadata-field-selector/metadata-field-selector.component';
import { DsoEditMetadataValueHeadersComponent } from './dso-edit-metadata-value-headers/dso-edit-metadata-value-headers.component';
import { DsoEditMetadataFieldValuesComponent } from './dso-edit-metadata-field-values/dso-edit-metadata-field-values.component';
import { AlertComponent } from '../../shared/alert/alert.component';
import { LoadingComponent } from '../../shared/loading/loading.component';
const ADD_BTN = 'add'; const ADD_BTN = 'add';
const REINSTATE_BTN = 'reinstate'; const REINSTATE_BTN = 'reinstate';
@@ -68,18 +75,48 @@ describe('DsoEditMetadataComponent', () => {
}, },
}); });
notificationsService = jasmine.createSpyObj('notificationsService', ['error', 'success']); notificationsService = jasmine.createSpyObj('notificationsService', [
'error',
'success',
]);
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), DsoEditMetadataComponent, VarDirective], imports: [
providers: [ TranslateModule.forRoot(),
RouterTestingModule.withRoutes([]),
DsoEditMetadataComponent,
VarDirective,
],
providers: [
TestDataService, TestDataService,
{ provide: DATA_SERVICE_FACTORY, useValue: jasmine.createSpy('getDataServiceFor').and.returnValue(TestDataService) }, {
provide: DATA_SERVICE_FACTORY,
useValue: jasmine
.createSpy('getDataServiceFor')
.and.returnValue(TestDataService),
},
{ provide: NotificationsService, useValue: notificationsService }, { provide: NotificationsService, useValue: notificationsService },
ArrayMoveChangeAnalyzer, ArrayMoveChangeAnalyzer,
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA],
}).compileComponents(); })
.overrideComponent(DsoEditMetadataComponent, {
remove: {
imports: [
DsoEditMetadataValueComponent,
DsoEditMetadataHeadersComponent,
MetadataFieldSelectorComponent,
DsoEditMetadataValueHeadersComponent,
DsoEditMetadataFieldValuesComponent,
AlertComponent,
LoadingComponent,
],
},
add: {
changeDetection: ChangeDetectionStrategy.Default,
},
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -12,6 +12,15 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
import { TranslateModule } from '@ngx-translate/core';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem = Object.assign(new Item(), { const mockItem = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
@@ -43,17 +52,24 @@ describe('JournalVolumeGridElementComponent', () => {
const truncatableServiceStub: any = { const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true), isCollapsed: (id: number) => observableOf(true),
expand: (id: number) => null,
collapse: (id: number) => null
}; };
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, JournalVolumeGridElementComponent, TruncatePipe], imports: [NoopAnimationsModule, JournalVolumeGridElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: truncatableServiceStub },
], { provide: BitstreamDataService, useValue: {} },
schemas: [NO_ERRORS_SCHEMA] { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
}).overrideComponent(JournalVolumeGridElementComponent, { { provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} }
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalVolumeGridElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -12,6 +12,7 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { JournalSearchResultGridElementComponent } from '../search-result-grid-elements/journal/journal-search-result-grid-element.component';
const mockItem = Object.assign(new Item(), { const mockItem = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
@@ -53,14 +54,17 @@ describe('JournalGridElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, JournalGridElementComponent, TruncatePipe], imports: [NoopAnimationsModule, JournalGridElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: truncatableServiceStub },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalGridElementComponent, { }).overrideComponent(JournalGridElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [JournalSearchResultGridElementComponent]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -8,6 +8,17 @@ import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../config/app-config.interface';
import { environment } from '../../../../../environments/environment.test';
import { TranslateModule } from '@ngx-translate/core';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: observableOf({}), bundles: observableOf({}),
@@ -37,19 +48,20 @@ describe('JournalIssueListElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [JournalIssueListElementComponent, TruncatePipe], imports: [JournalIssueListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
], { provide: APP_CONFIG, useValue: environment },
schemas: [NO_ERRORS_SCHEMA] { provide: ThemeService, useValue: getMockThemeService() },
}).overrideComponent(JournalIssueListElementComponent, { { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalIssueListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -8,6 +8,16 @@ import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from 'src/config/app-config.interface';
import { environment } from 'src/environments/environment.test';
import { TranslateModule } from '@ngx-translate/core';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: observableOf({}), bundles: observableOf({}),
@@ -33,14 +43,21 @@ describe('JournalListElementComponent', () => {
const truncatableServiceStub: any = { const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true), isCollapsed: (id: number) => observableOf(true),
collapse: (id: number) => null,
expand: (id: number) => null
}; };
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
return TestBed.configureTestingModule({ return TestBed.configureTestingModule({
imports: [JournalListElementComponent, TruncatePipe], imports: [JournalListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: truncatableServiceStub },
{ provide: APP_CONFIG, useValue: environment },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalListElementComponent, { }).overrideComponent(JournalListElementComponent, {

View File

@@ -183,12 +183,13 @@ describe('JournalIssueSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [JournalIssueSearchResultListElementComponent, TruncatePipe], imports: [JournalIssueSearchResultListElementComponent, TruncatePipe, TranslateModule.forRoot(),],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: enviromentNoThumbs }, { provide: APP_CONFIG, useValue: enviromentNoThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalIssueSearchResultListElementComponent, { }).overrideComponent(JournalIssueSearchResultListElementComponent, {

View File

@@ -21,6 +21,7 @@ import {
} from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub'; import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
import { TranslateModule } from '@ngx-translate/core';
let journalListElementComponent: JournalSearchResultListElementComponent; let journalListElementComponent: JournalSearchResultListElementComponent;
let fixture: ComponentFixture<JournalSearchResultListElementComponent>; let fixture: ComponentFixture<JournalSearchResultListElementComponent>;
@@ -79,13 +80,13 @@ const enviromentNoThumbs = {
describe('JournalSearchResultListElementComponent', () => { describe('JournalSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [JournalSearchResultListElementComponent, TruncatePipe], imports: [JournalSearchResultListElementComponent, TruncatePipe, TranslateModule.forRoot(),],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: environmentUseThumbs }, { provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: ThemeService, useValue: getMockThemeService() }, { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() } { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalSearchResultListElementComponent, { }).overrideComponent(JournalSearchResultListElementComponent, {
@@ -149,12 +150,13 @@ describe('JournalSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [JournalSearchResultListElementComponent, TruncatePipe], imports: [JournalSearchResultListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: enviromentNoThumbs }, { provide: APP_CONFIG, useValue: enviromentNoThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(JournalSearchResultListElementComponent, { }).overrideComponent(JournalSearchResultListElementComponent, {

View File

@@ -1,5 +1,4 @@
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { of as observableOf } from 'rxjs';
import { OrgUnitGridElementComponent } from './org-unit-grid-element.component'; import { OrgUnitGridElementComponent } from './org-unit-grid-element.component';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils';
import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; import { buildPaginatedList } from '../../../../core/data/paginated-list.model';
@@ -12,6 +11,16 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
import { TranslateModule } from '@ngx-translate/core';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem = Object.assign(new Item(), { const mockItem = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
@@ -47,19 +56,25 @@ describe('OrgUnitGridElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, OrgUnitGridElementComponent, TruncatePipe], imports: [
providers: [ NoopAnimationsModule,
OrgUnitGridElementComponent,
TruncatePipe,
TranslateModule.forRoot()
],
providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
], { provide: BitstreamDataService, useValue: {} },
schemas: [NO_ERRORS_SCHEMA] { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
}).overrideComponent(OrgUnitGridElementComponent, { { provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(OrgUnitGridElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -12,6 +12,7 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { PersonSearchResultGridElementComponent } from '../search-result-grid-elements/person/person-search-result-grid-element.component';
const mockItem = Object.assign(new Item(), { const mockItem = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
@@ -47,14 +48,17 @@ describe('PersonGridElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, PersonGridElementComponent, TruncatePipe], imports: [NoopAnimationsModule, PersonGridElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: truncatableServiceStub },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonGridElementComponent, { }).overrideComponent(PersonGridElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [PersonSearchResultGridElementComponent]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -1,5 +1,4 @@
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { of as observableOf } from 'rxjs';
import { ProjectGridElementComponent } from './project-grid-element.component'; import { ProjectGridElementComponent } from './project-grid-element.component';
import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils';
import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; import { buildPaginatedList } from '../../../../core/data/paginated-list.model';
@@ -12,6 +11,16 @@ import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { BitstreamDataService } from '../../../../core/data/bitstream-data.service';
import { TranslateModule } from '@ngx-translate/core';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem = Object.assign(new Item(), { const mockItem = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), bundles: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
@@ -35,16 +44,17 @@ describe('ProjectGridElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [NoopAnimationsModule, ProjectGridElementComponent, TruncatePipe], imports: [NoopAnimationsModule, ProjectGridElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: BitstreamDataService, useValue: {} },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ProjectGridElementComponent, { }).overrideComponent(ProjectGridElementComponent, {

View File

@@ -8,6 +8,17 @@ import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../config/app-config.interface';
import { environment } from '../../../../../environments/environment.test';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { TranslateModule } from '@ngx-translate/core';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: observableOf({}), bundles: observableOf({}),
@@ -31,16 +42,18 @@ describe('OrgUnitListElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [OrgUnitListElementComponent, TruncatePipe], imports: [OrgUnitListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: APP_CONFIG, useValue: environment },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(OrgUnitListElementComponent, { }).overrideComponent(OrgUnitListElementComponent, {

View File

@@ -8,6 +8,17 @@ import { TruncatePipe } from '../../../../shared/utils/truncate.pipe';
import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from 'src/config/app-config.interface';
import { environment } from 'src/environments/environment.test';
import { TranslateModule } from '@ngx-translate/core';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: observableOf({}), bundles: observableOf({}),
@@ -31,16 +42,17 @@ describe('PersonListElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [PersonListElementComponent, TruncatePipe], imports: [PersonListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: APP_CONFIG, useValue: environment },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonListElementComponent, { }).overrideComponent(PersonListElementComponent, {

View File

@@ -8,6 +8,17 @@ import { TruncatableService } from '../../../../shared/truncatable/truncatable.s
import { ProjectListElementComponent } from './project-list-element.component'; import { ProjectListElementComponent } from './project-list-element.component';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { APP_CONFIG } from '../../../../../config/app-config.interface';
import { environment } from '../../../../../environments/environment.test';
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { AuthService } from '../../../../core/auth/auth.service';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub';
import { TranslateModule } from '@ngx-translate/core';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: observableOf({}), bundles: observableOf({}),
@@ -18,12 +29,6 @@ const mockItem: Item = Object.assign(new Item(), {
value: 'This is just another title' value: 'This is just another title'
} }
], ],
// 'project.identifier.status': [
// {
// language: 'en_US',
// value: 'A status about the project'
// }
// ]
} }
}); });
@@ -31,19 +36,20 @@ describe('ProjectListElementComponent', () => {
let comp; let comp;
let fixture; let fixture;
const truncatableServiceStub: any = {
isCollapsed: (id: number) => observableOf(true),
};
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProjectListElementComponent, TruncatePipe], imports: [ProjectListElementComponent, TruncatePipe, TranslateModule.forRoot()],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: TruncatableService, useValue: truncatableServiceStub }, { provide: TruncatableService, useValue: mockTruncatableService },
], { provide: APP_CONFIG, useValue: environment },
schemas: [NO_ERRORS_SCHEMA] { provide: ThemeService, useValue: getMockThemeService() },
}).overrideComponent(ProjectListElementComponent, { { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ProjectListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -23,6 +23,9 @@ import {
} from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub'; import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
let orgUnitListElementComponent: OrgUnitSearchResultListElementComponent; let orgUnitListElementComponent: OrgUnitSearchResultListElementComponent;
let fixture: ComponentFixture<OrgUnitSearchResultListElementComponent>; let fixture: ComponentFixture<OrgUnitSearchResultListElementComponent>;
@@ -87,6 +90,9 @@ describe('OrgUnitSearchResultListElementComponent', () => {
}), OrgUnitSearchResultListElementComponent, TruncatePipe], }), OrgUnitSearchResultListElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: AuthService, useValue: new AuthServiceMock() },
{ provide: AuthorizationDataService, useValue: {} },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: environmentUseThumbs }, { provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() }

View File

@@ -14,6 +14,12 @@ import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
import { TranslateLoaderMock } from '../../../../../shared/mocks/translate-loader.mock'; import { TranslateLoaderMock } from '../../../../../shared/mocks/translate-loader.mock';
import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { ThemeService } from '../../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
import { AuthService } from '../../../../../core/auth/auth.service';
import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock';
import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service';
let personListElementComponent: PersonSearchResultListElementComponent; let personListElementComponent: PersonSearchResultListElementComponent;
let fixture: ComponentFixture<PersonSearchResultListElementComponent>; let fixture: ComponentFixture<PersonSearchResultListElementComponent>;
@@ -70,20 +76,23 @@ const enviromentNoThumbs = {
describe('PersonSearchResultListElementComponent', () => { describe('PersonSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot({ imports: [TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), PersonSearchResultListElementComponent, TruncatePipe], }), PersonSearchResultListElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: environmentUseThumbs }, { provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [NO_ERRORS_SCHEMA] { provide: AuthService, useValue: new AuthServiceMock() },
}).overrideComponent(PersonSearchResultListElementComponent, { { provide: AuthorizationDataService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));
@@ -138,21 +147,24 @@ describe('PersonSearchResultListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot({ imports: [TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), PersonSearchResultListElementComponent, TruncatePipe], }), PersonSearchResultListElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: enviromentNoThumbs }, { provide: APP_CONFIG, useValue: enviromentNoThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [NO_ERRORS_SCHEMA] { provide: AuthService, useValue: new AuthServiceMock() },
}).overrideComponent(PersonSearchResultListElementComponent, { { provide: AuthorizationDataService, useValue: {} },
set: {changeDetection: ChangeDetectionStrategy.Default} ],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonSearchResultListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -77,11 +77,11 @@ describe('ProjectSearchResultListElementComponent', () => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ProjectSearchResultListElementComponent, TruncatePipe], imports: [ProjectSearchResultListElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: environmentUseThumbs }, { provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: ThemeService, useValue: getMockThemeService() }, { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ProjectSearchResultListElementComponent, { }).overrideComponent(ProjectSearchResultListElementComponent, {
@@ -149,7 +149,8 @@ describe('ProjectSearchResultListElementComponent', () => {
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: DSONameService, useClass: DSONameServiceMock }, { provide: DSONameService, useClass: DSONameServiceMock },
{ provide: APP_CONFIG, useValue: enviromentNoThumbs }, { provide: APP_CONFIG, useValue: enviromentNoThumbs },
{ provide: ThemeService, useValue: getMockThemeService() } { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ProjectSearchResultListElementComponent, { }).overrideComponent(ProjectSearchResultListElementComponent, {

View File

@@ -8,6 +8,8 @@ import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-rep
import { OrgUnitItemMetadataListElementComponent } from './org-unit-item-metadata-list-element.component'; import { OrgUnitItemMetadataListElementComponent } from './org-unit-item-metadata-list-element.component';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component';
import { RouterLink } from '@angular/router';
const description = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; const description = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.';
const organisation = 'Anonymous'; const organisation = 'Anonymous';
@@ -21,13 +23,16 @@ describe('OrgUnitItemMetadataListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
NgbModule, NgbModule,
OrgUnitItemMetadataListElementComponent OrgUnitItemMetadataListElementComponent
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(OrgUnitItemMetadataListElementComponent, { }).overrideComponent(OrgUnitItemMetadataListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [TruncatableComponent, RouterLink]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -8,6 +8,8 @@ import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-rep
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { PersonItemMetadataListElementComponent } from './person-item-metadata-list-element.component'; import { PersonItemMetadataListElementComponent } from './person-item-metadata-list-element.component';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component';
import { RouterLink } from '@angular/router';
const jobTitle = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; const jobTitle = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.';
const firstName = 'Joe'; const firstName = 'Joe';
@@ -23,13 +25,16 @@ describe('PersonItemMetadataListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
NgbModule, NgbModule,
PersonItemMetadataListElementComponent PersonItemMetadataListElementComponent
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonItemMetadataListElementComponent, { }).overrideComponent(PersonItemMetadataListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [TruncatableComponent, RouterLink]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -10,6 +10,8 @@ import { ProjectItemMetadataListElementComponent } from './project-item-metadata
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock';
import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component';
import { RouterLink } from '@angular/router';
const projectTitle = 'Lorem ipsum dolor sit amet'; const projectTitle = 'Lorem ipsum dolor sit amet';
const mockItem = Object.assign(new Item(), { metadata: { 'dc.title': [{ value: projectTitle }] } }); const mockItem = Object.assign(new Item(), { metadata: { 'dc.title': [{ value: projectTitle }] } });
@@ -23,16 +25,19 @@ describe('ProjectItemMetadataListElementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
NgbModule, NgbModule,
ProjectItemMetadataListElementComponent ProjectItemMetadataListElementComponent
], ],
providers: [ providers: [
{ provide: DSONameService, useValue: new DSONameServiceMock() } { provide: DSONameService, useValue: new DSONameServiceMock() }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ProjectItemMetadataListElementComponent, { }).overrideComponent(ProjectItemMetadataListElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [TruncatableComponent, RouterLink,]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -1,5 +1,5 @@
import { HttpClient } from '@angular/common/http'; import { HttpClient } from '@angular/common/http';
import { ChangeDetectionStrategy, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, Component, EventEmitter, NO_ERRORS_SCHEMA } from '@angular/core';
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@@ -8,7 +8,6 @@ import { TranslateService } from '@ngx-translate/core';
import { Observable, of as observableOf } from 'rxjs'; import { Observable, of as observableOf } from 'rxjs';
import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service';
import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; import { ObjectCacheService } from '../../../../../core/cache/object-cache.service';
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
import { CommunityDataService } from '../../../../../core/data/community-data.service'; import { CommunityDataService } from '../../../../../core/data/community-data.service';
import { DefaultChangeAnalyzer } from '../../../../../core/data/default-change-analyzer.service'; import { DefaultChangeAnalyzer } from '../../../../../core/data/default-change-analyzer.service';
import { DSOChangeAnalyzer } from '../../../../../core/data/dso-change-analyzer.service'; import { DSOChangeAnalyzer } from '../../../../../core/data/dso-change-analyzer.service';
@@ -20,7 +19,6 @@ import { Bitstream } from '../../../../../core/shared/bitstream.model';
import { HALEndpointService } from '../../../../../core/shared/hal-endpoint.service'; import { HALEndpointService } from '../../../../../core/shared/hal-endpoint.service';
import { Item } from '../../../../../core/shared/item.model'; import { Item } from '../../../../../core/shared/item.model';
import { UUIDService } from '../../../../../core/shared/uuid.service'; import { UUIDService } from '../../../../../core/shared/uuid.service';
import { NotificationsService } from '../../../../../shared/notifications/notifications.service';
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service';
import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils';
@@ -28,6 +26,14 @@ import { TruncatableService } from '../../../../../shared/truncatable/truncatabl
import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe';
import { PersonSearchResultListSubmissionElementComponent } from './person-search-result-list-submission-element.component'; import { PersonSearchResultListSubmissionElementComponent } from './person-search-result-list-submission-element.component';
import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { APP_CONFIG } from '../../../../../../config/app-config.interface';
import { ThumbnailComponent } from '../../../../../thumbnail/thumbnail.component';
import { PersonInputSuggestionsComponent } from './person-suggestions/person-input-suggestions.component';
import { CollectionElementLinkType } from '../../../../../shared/object-collection/collection-element-link.type';
import { AuthService } from '../../../../../core/auth/auth.service';
import { REQUEST } from '@nguniversal/express-engine/tokens';
import { BrowseByRoutingModule } from '../../../../../browse-by/browse-by-routing.module';
import { ThemeService } from '../../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock';
let personListElementComponent: PersonSearchResultListSubmissionElementComponent; let personListElementComponent: PersonSearchResultListSubmissionElementComponent;
let fixture: ComponentFixture<PersonSearchResultListSubmissionElementComponent>; let fixture: ComponentFixture<PersonSearchResultListSubmissionElementComponent>;
@@ -50,6 +56,14 @@ const enviromentNoThumbs = {
} }
}; };
const translateServiceStub = {
get: () => observableOf('test' ),
instant: (key) => key,
onLangChange: new EventEmitter(),
onTranslationChange: new EventEmitter(),
onDefaultLangChange: new EventEmitter()
};
function init() { function init() {
mockItemWithMetadata = Object.assign( mockItemWithMetadata = Object.assign(
new ItemSearchResult(), new ItemSearchResult(),
@@ -95,20 +109,14 @@ function init() {
} }
describe('PersonSearchResultListElementSubmissionComponent', () => { describe('PersonSearchResultListElementSubmissionComponent', () => {
const mockBitstreamDataService = { beforeEach(waitForAsync(async () => {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream());
}
};
beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [PersonSearchResultListSubmissionElementComponent, TruncatePipe], imports: [PersonSearchResultListSubmissionElementComponent, TruncatePipe, BrowseByRoutingModule],
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: {} },
{ provide: RelationshipDataService, useValue: mockRelationshipService }, { provide: RelationshipDataService, useValue: mockRelationshipService },
{ provide: NotificationsService, useValue: {} }, { provide: TranslateService, useValue: translateServiceStub },
{ provide: TranslateService, useValue: {} },
{ provide: NgbModal, useValue: {} }, { provide: NgbModal, useValue: {} },
{ provide: ItemDataService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: SelectableListService, useValue: {} }, { provide: SelectableListService, useValue: {} },
@@ -121,13 +129,14 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
{ provide: HttpClient, useValue: {} }, { provide: HttpClient, useValue: {} },
{ provide: DSOChangeAnalyzer, useValue: {} }, { provide: DSOChangeAnalyzer, useValue: {} },
{ provide: DefaultChangeAnalyzer, useValue: {} }, { provide: DefaultChangeAnalyzer, useValue: {} },
{ provide: BitstreamDataService, useValue: mockBitstreamDataService }, { provide: APP_CONFIG, useValue: environmentUseThumbs },
{ provide: APP_CONFIG, useValue: environmentUseThumbs } { provide: AuthService, useValue: {} },
], { provide: REQUEST, useValue: {} },
schemas: [NO_ERRORS_SCHEMA] { provide: ThemeService, useValue: getMockThemeService() },
}).overrideComponent(PersonSearchResultListSubmissionElementComponent, { ],
set: { changeDetection: ChangeDetectionStrategy.Default } schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.compileComponents();
})); }));
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
@@ -139,6 +148,25 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
describe('When the item has a job title', () => { describe('When the item has a job title', () => {
beforeEach(() => { beforeEach(() => {
personListElementComponent.object = mockItemWithMetadata; personListElementComponent.object = mockItemWithMetadata;
personListElementComponent.dso = Object.assign(
new Item(),
{
metadata: {
'dc.title': [
{
language: 'en_US',
value: 'This is just another title'
}
],
'person.jobTitle': [
{
language: 'en_US',
value: 'Developer'
}
]
}
});
fixture.detectChanges(); fixture.detectChanges();
}); });
@@ -163,6 +191,7 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
describe('When the environment is set to show thumbnails', () => { describe('When the environment is set to show thumbnails', () => {
beforeEach(() => { beforeEach(() => {
personListElementComponent.object = mockItemWithoutMetadata; personListElementComponent.object = mockItemWithoutMetadata;
personListElementComponent.linkType = CollectionElementLinkType.ExternalLink;
fixture.detectChanges(); fixture.detectChanges();
}); });
@@ -182,12 +211,11 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [PersonSearchResultListSubmissionElementComponent, TruncatePipe], imports: [PersonSearchResultListSubmissionElementComponent, TruncatePipe],
providers: [ providers: [
{ provide: TruncatableService, useValue: {} }, { provide: TruncatableService, useValue: {} },
{ provide: RelationshipDataService, useValue: mockRelationshipService }, { provide: RelationshipDataService, useValue: mockRelationshipService },
{ provide: NotificationsService, useValue: {} }, { provide: TranslateService, useValue: translateServiceStub },
{ provide: TranslateService, useValue: {} },
{ provide: NgbModal, useValue: {} }, { provide: NgbModal, useValue: {} },
{ provide: ItemDataService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: SelectableListService, useValue: {} }, { provide: SelectableListService, useValue: {} },
@@ -200,12 +228,14 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
{ provide: HttpClient, useValue: {} }, { provide: HttpClient, useValue: {} },
{ provide: DSOChangeAnalyzer, useValue: {} }, { provide: DSOChangeAnalyzer, useValue: {} },
{ provide: DefaultChangeAnalyzer, useValue: {} }, { provide: DefaultChangeAnalyzer, useValue: {} },
{ provide: BitstreamDataService, useValue: mockBitstreamDataService },
{ provide: APP_CONFIG, useValue: enviromentNoThumbs } { provide: APP_CONFIG, useValue: enviromentNoThumbs }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(PersonSearchResultListSubmissionElementComponent, { }).overrideComponent(PersonSearchResultListSubmissionElementComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } remove: {
imports: [ThumbnailComponent, PersonInputSuggestionsComponent]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));
@@ -227,3 +257,12 @@ describe('PersonSearchResultListElementSubmissionComponent', () => {
}); });
}); });
}); });
@Component({
selector: 'ds-mock-thumbnail',
template: '<div></div>',
standalone: true
})
export class ThumbnailStubComponent {
}

View File

@@ -1,5 +1,4 @@
import { Component, Inject, OnInit } from '@angular/core'; import { Component, Inject, OnInit } from '@angular/core';
import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service';
import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component';
import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model';
import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator';
@@ -9,8 +8,6 @@ import { Context } from '../../../../../core/shared/context.model';
import { RelationshipDataService } from '../../../../../core/data/relationship-data.service'; import { RelationshipDataService } from '../../../../../core/data/relationship-data.service';
import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service';
import { take } from 'rxjs/operators'; import { take } from 'rxjs/operators';
import { NotificationsService } from '../../../../../shared/notifications/notifications.service';
import { TranslateService } from '@ngx-translate/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component'; import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component';
import { MetadataValue } from '../../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../../core/shared/metadata.models';
@@ -47,11 +44,8 @@ export class PersonSearchResultListSubmissionElementComponent extends SearchResu
constructor(protected truncatableService: TruncatableService, constructor(protected truncatableService: TruncatableService,
private relationshipService: RelationshipDataService, private relationshipService: RelationshipDataService,
private notificationsService: NotificationsService,
private translateService: TranslateService,
private modalService: NgbModal, private modalService: NgbModal,
private itemDataService: ItemDataService, private itemDataService: ItemDataService,
private bitstreamDataService: BitstreamDataService,
private selectableListService: SelectableListService, private selectableListService: SelectableListService,
public dsoNameService: DSONameService, public dsoNameService: DSONameService,
@Inject(APP_CONFIG) protected appConfig: AppConfig @Inject(APP_CONFIG) protected appConfig: AppConfig

View File

@@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
import { RegisterEmailFormComponent } from '../../register-email-form/register-email-form.component';
describe('ForgotEmailComponent', () => { describe('ForgotEmailComponent', () => {
let comp: ForgotEmailComponent; let comp: ForgotEmailComponent;
@@ -11,9 +12,15 @@ describe('ForgotEmailComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, TranslateModule.forRoot(), ReactiveFormsModule, ForgotEmailComponent], imports: [CommonModule, TranslateModule.forRoot(), ReactiveFormsModule, ForgotEmailComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(ForgotEmailComponent, {
remove: {
imports: [RegisterEmailFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(ForgotEmailComponent); fixture = TestBed.createComponent(ForgotEmailComponent);

View File

@@ -17,20 +17,20 @@ describe('HealthInfoComponentComponent', () => {
beforeEach(async () => { beforeEach(async () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [ imports: [
CommonModule, CommonModule,
NgbCollapseModule, NgbCollapseModule,
NoopAnimationsModule, NoopAnimationsModule,
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), }),
HealthInfoComponentComponent, HealthInfoComponentComponent,
ObjNgFor ObjNgFor,
] ]
}) })
.compileComponents(); .compileComponents();
}); });

View File

@@ -11,6 +11,8 @@ import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock';
import { HealthPanelComponent } from './health-panel.component'; import { HealthPanelComponent } from './health-panel.component';
import { HealthResponseObj } from '../../shared/mocks/health-endpoint.mocks'; import { HealthResponseObj } from '../../shared/mocks/health-endpoint.mocks';
import { ObjNgFor } from '../../shared/utils/object-ngfor.pipe'; import { ObjNgFor } from '../../shared/utils/object-ngfor.pipe';
import { HealthStatusComponent } from './health-status/health-status.component';
import { HealthComponentComponent } from './health-component/health-component.component';
describe('HealthPanelComponent', () => { describe('HealthPanelComponent', () => {
let component: HealthPanelComponent; let component: HealthPanelComponent;
@@ -33,7 +35,13 @@ describe('HealthPanelComponent', () => {
ObjNgFor ObjNgFor
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(HealthPanelComponent, {
remove: {
imports: [HealthComponentComponent, HealthStatusComponent]
}
})
.compileComponents();
}); });
beforeEach(() => { beforeEach(() => {

View File

@@ -1,8 +1,8 @@
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
import { SearchService } from 'src/app/core/shared/search/search.service'; import { SearchService } from '../../core/shared/search/search.service';
import { createSuccessfulRemoteDataObject } from 'src/app/shared/remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils';
import { SearchServiceStub } from 'src/app/shared/testing/search-service.stub'; import { SearchServiceStub } from '../../shared/testing/search-service.stub';
import { createPaginatedList } from 'src/app/shared/testing/utils.test'; import { createPaginatedList } from '../../shared/testing/utils.test';
import { PaginationService } from '../../core/pagination/pagination.service'; import { PaginationService } from '../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
import { RecentItemListComponent } from './recent-item-list.component'; import { RecentItemListComponent } from './recent-item-list.component';

View File

@@ -5,6 +5,7 @@ import { ThemeService } from '../shared/theme-support/theme.service';
import { getMockThemeService } from '../shared/mocks/theme-service.mock'; import { getMockThemeService } from '../shared/mocks/theme-service.mock';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../shared/testing/active-router.stub'; import { ActivatedRouteStub } from '../shared/testing/active-router.stub';
import { SearchConfigurationService } from '../core/shared/search/search-configuration.service';
describe('ImportExternalPageComponent', () => { describe('ImportExternalPageComponent', () => {
let component: ImportExternalPageComponent; let component: ImportExternalPageComponent;
@@ -15,7 +16,8 @@ describe('ImportExternalPageComponent', () => {
imports: [ImportExternalPageComponent], imports: [ImportExternalPageComponent],
providers: [ providers: [
{ provide: ThemeService, useValue: getMockThemeService() }, { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() } { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
{ provide: SearchConfigurationService, useValue: {}},
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })

View File

@@ -2,6 +2,7 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { EndUserAgreementContentComponent } from './end-user-agreement-content.component'; import { EndUserAgreementContentComponent } from './end-user-agreement-content.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { RouterLink } from '@angular/router';
describe('EndUserAgreementContentComponent', () => { describe('EndUserAgreementContentComponent', () => {
let component: EndUserAgreementContentComponent; let component: EndUserAgreementContentComponent;
@@ -9,9 +10,15 @@ describe('EndUserAgreementContentComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), EndUserAgreementContentComponent], imports: [TranslateModule.forRoot(), EndUserAgreementContentComponent],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(EndUserAgreementContentComponent, {
remove: {
imports: [RouterLink]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -11,6 +11,7 @@ import { Store } from '@ngrx/store';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { LogOutAction } from '../../core/auth/auth.actions'; import { LogOutAction } from '../../core/auth/auth.actions';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
import { EndUserAgreementContentComponent } from './end-user-agreement-content/end-user-agreement-content.component';
describe('EndUserAgreementComponent', () => { describe('EndUserAgreementComponent', () => {
let component: EndUserAgreementComponent; let component: EndUserAgreementComponent;
@@ -48,17 +49,23 @@ describe('EndUserAgreementComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), EndUserAgreementComponent], imports: [TranslateModule.forRoot(), EndUserAgreementComponent],
providers: [ providers: [
{ provide: EndUserAgreementService, useValue: endUserAgreementService }, { provide: EndUserAgreementService, useValue: endUserAgreementService },
{ provide: NotificationsService, useValue: notificationsService }, { provide: NotificationsService, useValue: notificationsService },
{ provide: AuthService, useValue: authService }, { provide: AuthService, useValue: authService },
{ provide: Store, useValue: store }, { provide: Store, useValue: store },
{ provide: Router, useValue: router }, { provide: Router, useValue: router },
{ provide: ActivatedRoute, useValue: route } { provide: ActivatedRoute, useValue: route }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(EndUserAgreementComponent, {
remove: {
imports: [EndUserAgreementContentComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -2,6 +2,11 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { FeedbackComponent } from './feedback.component'; import { FeedbackComponent } from './feedback.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
import { ThemedFeedbackFormComponent } from './feedback-form/themed-feedback-form.component';
describe('FeedbackComponent', () => { describe('FeedbackComponent', () => {
let component: FeedbackComponent; let component: FeedbackComponent;
@@ -9,9 +14,19 @@ describe('FeedbackComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), FeedbackComponent], imports: [TranslateModule.forRoot(), FeedbackComponent],
schemas: [NO_ERRORS_SCHEMA] providers: [
}).compileComponents(); { provide: ThemeService, useValue: getMockThemeService() },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
],
schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(FeedbackComponent, {
remove: {
imports: [ThemedFeedbackFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -2,6 +2,8 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { PrivacyComponent } from './privacy.component'; import { PrivacyComponent } from './privacy.component';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
describe('PrivacyComponent', () => { describe('PrivacyComponent', () => {
let component: PrivacyComponent; let component: PrivacyComponent;
@@ -10,6 +12,9 @@ describe('PrivacyComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), PrivacyComponent], imports: [TranslateModule.forRoot(), PrivacyComponent],
providers: [
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -4,6 +4,9 @@ import { TranslateModule } from '@ngx-translate/core';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { Item } from '../../core/shared/item.model'; import { Item } from '../../core/shared/item.model';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
describe('ItemAlertsComponent', () => { describe('ItemAlertsComponent', () => {
let component: ItemAlertsComponent; let component: ItemAlertsComponent;
@@ -12,7 +15,10 @@ describe('ItemAlertsComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), ItemAlertsComponent], providers: [
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
],
imports: [TranslateModule.forRoot(), ItemAlertsComponent, NoopAnimationsModule],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.compileComponents(); .compileComponents();

View File

@@ -24,6 +24,8 @@ import { AuthServiceStub } from '../../../shared/testing/auth-service.stub';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { buildPaginatedList } from '../../../core/data/paginated-list.model'; import { buildPaginatedList } from '../../../core/data/paginated-list.model';
import { PageInfo } from '../../../core/shared/page-info.model'; import { PageInfo } from '../../../core/shared/page-info.model';
import { UploaderComponent } from '../../../shared/upload/uploader/uploader.component';
import { DsoInputSuggestionsComponent } from '../../../shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component';
describe('UploadBitstreamComponent', () => { describe('UploadBitstreamComponent', () => {
let comp: UploadBitstreamComponent; let comp: UploadBitstreamComponent;
@@ -287,8 +289,8 @@ describe('UploadBitstreamComponent', () => {
}; };
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, UploadBitstreamComponent, VarDirective], imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, UploadBitstreamComponent, VarDirective],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: routeStub }, { provide: ActivatedRoute, useValue: routeStub },
{ provide: Router, useValue: routerStub }, { provide: Router, useValue: routerStub },
{ provide: ItemDataService, useValue: mockItemDataService }, { provide: ItemDataService, useValue: mockItemDataService },
@@ -296,10 +298,16 @@ describe('UploadBitstreamComponent', () => {
{ provide: AuthService, useValue: authServiceStub }, { provide: AuthService, useValue: authServiceStub },
{ provide: BundleDataService, useValue: bundleService }, { provide: BundleDataService, useValue: bundleService },
{ provide: RequestService, useValue: requestService } { provide: RequestService, useValue: requestService }
], schemas: [ ], schemas: [
NO_ERRORS_SCHEMA NO_ERRORS_SCHEMA
] ]
}).compileComponents(); })
.overrideComponent(UploadBitstreamComponent, {
remove: {
imports: [UploaderComponent, DsoInputSuggestionsComponent]
}
})
.compileComponents();
} }
/** /**

View File

@@ -18,6 +18,9 @@ import { createPaginatedList } from '../../../../../shared/testing/utils.test';
import { RequestService } from '../../../../../core/data/request.service'; import { RequestService } from '../../../../../core/data/request.service';
import { PaginationService } from '../../../../../core/pagination/pagination.service'; import { PaginationService } from '../../../../../core/pagination/pagination.service';
import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub'; import { PaginationServiceStub } from '../../../../../shared/testing/pagination-service.stub';
import { PaginationComponent } from '../../../../../shared/pagination/pagination.component';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
describe('PaginatedDragAndDropBitstreamListComponent', () => { describe('PaginatedDragAndDropBitstreamListComponent', () => {
let comp: PaginatedDragAndDropBitstreamListComponent; let comp: PaginatedDragAndDropBitstreamListComponent;
@@ -115,17 +118,24 @@ describe('PaginatedDragAndDropBitstreamListComponent', () => {
paginationService = new PaginationServiceStub(); paginationService = new PaginationServiceStub();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), PaginatedDragAndDropBitstreamListComponent, VarDirective], imports: [TranslateModule.forRoot(), PaginatedDragAndDropBitstreamListComponent, VarDirective],
providers: [ providers: [
{ provide: ObjectUpdatesService, useValue: objectUpdatesService }, { provide: ObjectUpdatesService, useValue: objectUpdatesService },
{ provide: BundleDataService, useValue: bundleService }, { provide: BundleDataService, useValue: bundleService },
{ provide: ObjectValuesPipe, useValue: objectValuesPipe }, { provide: ObjectValuesPipe, useValue: objectValuesPipe },
{ provide: RequestService, useValue: requestService }, { provide: RequestService, useValue: requestService },
{ provide: PaginationService, useValue: paginationService } { provide: PaginationService, useValue: paginationService },
], schemas: [ { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], schemas: [
NO_ERRORS_SCHEMA NO_ERRORS_SCHEMA
] ]
}).compileComponents(); })
.overrideComponent(PaginatedDragAndDropBitstreamListComponent, {
remove: {
imports: [PaginationComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -7,6 +7,7 @@ import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.ut
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { CurationFormComponent } from '../../../curation-form/curation-form.component';
describe('ItemCurateComponent', () => { describe('ItemCurateComponent', () => {
let comp: ItemCurateComponent; let comp: ItemCurateComponent;
@@ -41,7 +42,13 @@ describe('ItemCurateComponent', () => {
{ provide: DSONameService, useValue: dsoNameService } { provide: DSONameService, useValue: dsoNameService }
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(ItemCurateComponent, {
remove: {
imports: [CurationFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -23,6 +23,7 @@ import {
import { createPaginatedList } from '../../../shared/testing/utils.test'; import { createPaginatedList } from '../../../shared/testing/utils.test';
import { RequestService } from '../../../core/data/request.service'; import { RequestService } from '../../../core/data/request.service';
import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; import { getMockRequestService } from '../../../shared/mocks/request.service.mock';
import { AuthorizedCollectionSelectorComponent } from '../../../shared/dso-selector/dso-selector/authorized-collection-selector/authorized-collection-selector.component';
describe('ItemMoveComponent', () => { describe('ItemMoveComponent', () => {
let comp: ItemMoveComponent; let comp: ItemMoveComponent;
@@ -103,7 +104,13 @@ describe('ItemMoveComponent', () => {
], schemas: [ ], schemas: [
CUSTOM_ELEMENTS_SCHEMA CUSTOM_ELEMENTS_SCHEMA
] ]
}).compileComponents(); })
.overrideComponent(ItemMoveComponent, {
remove: {
imports: [AuthorizedCollectionSelectorComponent]
}
})
.compileComponents();
fixture = TestBed.createComponent(ItemMoveComponent); fixture = TestBed.createComponent(ItemMoveComponent);
comp = fixture.componentInstance; comp = fixture.componentInstance;
fixture.detectChanges(); fixture.detectChanges();

View File

@@ -30,7 +30,7 @@ import { getItemEditRoute } from '../../item-page-routing-paths';
selector: 'ds-simple-action', selector: 'ds-simple-action',
templateUrl: './abstract-simple-item-action.component.html', templateUrl: './abstract-simple-item-action.component.html',
standalone: true, standalone: true,
imports: [CommonModule, FormsModule, NgbModule] imports: [CommonModule, FormsModule, NgbModule, TranslateModule],
}) })
export class MySimpleItemActionComponent extends AbstractSimpleItemActionComponent { export class MySimpleItemActionComponent extends AbstractSimpleItemActionComponent {

View File

@@ -9,6 +9,9 @@ import { ObjectUpdatesService } from '../../../core/data/object-updates/object-u
import { VarDirective } from '../../../shared/utils/var.directive'; import { VarDirective } from '../../../shared/utils/var.directive';
import { APP_CONFIG } from '../../../../config/app-config.interface'; import { APP_CONFIG } from '../../../../config/app-config.interface';
import { environment } from '../../../../environments/environment'; import { environment } from '../../../../environments/environment';
import { ThemeService } from '../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../shared/mocks/theme-service.mock';
import { ListableObjectComponentLoaderComponent } from '../../../shared/object-collection/shared/listable-object/listable-object-component-loader.component';
describe('VirtualMetadataComponent', () => { describe('VirtualMetadataComponent', () => {
@@ -44,14 +47,21 @@ describe('VirtualMetadataComponent', () => {
}); });
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), VirtualMetadataComponent, VarDirective], imports: [TranslateModule.forRoot(), VirtualMetadataComponent, VarDirective],
providers: [ providers: [
{ provide: ObjectUpdatesService, useValue: objectUpdatesService }, { provide: ObjectUpdatesService, useValue: objectUpdatesService },
{ provide: APP_CONFIG, useValue: environment } { provide: APP_CONFIG, useValue: environment },
], schemas: [ { provide: ThemeService, useValue: getMockThemeService() },
], schemas: [
NO_ERRORS_SCHEMA NO_ERRORS_SCHEMA
] ]
}).compileComponents(); })
.overrideComponent(VirtualMetadataComponent, {
remove: {
imports: [ListableObjectComponentLoaderComponent]
}
})
.compileComponents();
fixture = TestBed.createComponent(VirtualMetadataComponent); fixture = TestBed.createComponent(VirtualMetadataComponent);
comp = fixture.componentInstance; comp = fixture.componentInstance;

View File

@@ -14,6 +14,8 @@ import { PageInfo } from '../../../core/shared/page-info.model';
import { FindListOptions } from '../../../core/data/find-list-options.model'; import { FindListOptions } from '../../../core/data/find-list-options.model';
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub';
const createMockCollection = (id: string) => Object.assign(new Collection(), { const createMockCollection = (id: string) => Object.assign(new Collection(), {
id: id, id: id,
@@ -50,6 +52,7 @@ describe('CollectionsComponent', () => {
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: RemoteDataBuildService, useValue: getMockRemoteDataBuildService() }, { provide: RemoteDataBuildService, useValue: getMockRemoteDataBuildService() },
{ provide: CollectionDataService, useValue: collectionDataService }, { provide: CollectionDataService, useValue: collectionDataService },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(CollectionsComponent, { }).overrideComponent(CollectionsComponent, {

View File

@@ -23,6 +23,17 @@ import { RemoteData } from '../../core/data/remote-data';
import { ServerResponseService } from '../../core/services/server-response.service'; import { ServerResponseService } from '../../core/services/server-response.service';
import { SignpostingDataService } from '../../core/data/signposting-data.service'; import { SignpostingDataService } from '../../core/data/signposting-data.service';
import { LinkHeadService } from '../../core/services/link-head.service'; import { LinkHeadService } from '../../core/services/link-head.service';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ItemVersionsComponent } from '../versions/item-versions.component';
import { ItemVersionsNoticeComponent } from '../versions/notice/item-versions-notice.component';
import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component';
import { ThemedItemPageTitleFieldComponent } from '../simple/field-components/specific-field/title/themed-item-page-field.component';
import { DsoEditMenuComponent } from '../../shared/dso-page/dso-edit-menu/dso-edit-menu.component';
import { ViewTrackerComponent } from '../../statistics/angulartics/dspace/view-tracker.component';
import { ThemedItemAlertsComponent } from '../alerts/themed-item-alerts.component';
import { CollectionsComponent } from '../field-components/collections/collections.component';
import { ThemedFullFileSectionComponent } from './field-components/file-section/themed-full-file-section.component';
const mockItem: Item = Object.assign(new Item(), { const mockItem: Item = Object.assign(new Item(), {
bundles: createSuccessfulRemoteDataObject$(createPaginatedList([])), bundles: createSuccessfulRemoteDataObject$(createPaginatedList([])),
@@ -121,12 +132,27 @@ describe('FullItemPageComponent', () => {
{ provide: ServerResponseService, useValue: serverResponseService }, { provide: ServerResponseService, useValue: serverResponseService },
{ provide: SignpostingDataService, useValue: signpostingDataService }, { provide: SignpostingDataService, useValue: signpostingDataService },
{ provide: LinkHeadService, useValue: linkHeadService }, { provide: LinkHeadService, useValue: linkHeadService },
{ provide: PLATFORM_ID, useValue: 'server' } { provide: PLATFORM_ID, useValue: 'server' },
], { provide: ThemeService, useValue: getMockThemeService() },
schemas: [NO_ERRORS_SCHEMA] ],
}).overrideComponent(FullItemPageComponent, { schemas: [NO_ERRORS_SCHEMA]
set: { changeDetection: ChangeDetectionStrategy.Default } })
}).compileComponents(); .overrideComponent(FullItemPageComponent, {
remove: {
imports: [
ItemVersionsComponent,
ItemVersionsNoticeComponent,
ThemedLoadingComponent,
ThemedItemPageTitleFieldComponent,
DsoEditMenuComponent,
ViewTrackerComponent,
ThemedItemAlertsComponent,
CollectionsComponent,
ThemedFullFileSectionComponent
]
},
add: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents();
})); }));
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {

View File

@@ -15,6 +15,10 @@ import { MediaViewerItem } from '../../core/shared/media-viewer-item.model';
import { VarDirective } from '../../shared/utils/var.directive'; import { VarDirective } from '../../shared/utils/var.directive';
import { MetadataFieldWrapperComponent } from '../../shared/metadata-field-wrapper/metadata-field-wrapper.component'; import { MetadataFieldWrapperComponent } from '../../shared/metadata-field-wrapper/metadata-field-wrapper.component';
import { FileSizePipe } from '../../shared/utils/file-size-pipe'; import { FileSizePipe } from '../../shared/utils/file-size-pipe';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { AuthService } from '../../core/auth/auth.service';
import { AuthServiceMock } from '../../shared/mocks/auth.service.mock';
describe('MediaViewerComponent', () => { describe('MediaViewerComponent', () => {
let comp: MediaViewerComponent; let comp: MediaViewerComponent;
@@ -77,6 +81,8 @@ describe('MediaViewerComponent', () => {
], ],
providers: [ providers: [
{ provide: BitstreamDataService, useValue: bitstreamDataService }, { provide: BitstreamDataService, useValue: bitstreamDataService },
{ provide: ThemeService, useValue: getMockThemeService() },
{ provide: AuthService, useValue: new AuthServiceMock() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -17,6 +17,7 @@ import { PaginatedList } from '../../../core/data/paginated-list.model';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { Item } from '../../../core/shared/item.model'; import { Item } from '../../../core/shared/item.model';
import { OrcidAuthService } from '../../../core/orcid/orcid-auth.service'; import { OrcidAuthService } from '../../../core/orcid/orcid-auth.service';
import { PaginationComponent } from '../../../shared/pagination/pagination.component';
describe('OrcidQueueComponent test suite', () => { describe('OrcidQueueComponent test suite', () => {
let component: OrcidQueueComponent; let component: OrcidQueueComponent;
@@ -126,7 +127,13 @@ describe('OrcidQueueComponent test suite', () => {
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }, { provide: NotificationsService, useValue: new NotificationsServiceStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(OrcidQueueComponent, {
remove: {
imports: [PaginationComponent]
}
})
.compileComponents();
orcidQueueService = TestBed.inject(OrcidQueueDataService); orcidQueueService = TestBed.inject(OrcidQueueDataService);
})); }));

View File

@@ -17,8 +17,13 @@ import { MetadataFieldWrapperComponent } from '../../../../shared/metadata-field
import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { createPaginatedList } from '../../../../shared/testing/utils.test';
import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { NotificationsService } from '../../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub';
import { APP_CONFIG } from 'src/config/app-config.interface'; import { APP_CONFIG } from './../../../../../config/app-config.interface';
import { environment } from 'src/environments/environment'; import { environment } from './../.././../../../environments/environment';
import { ThemeService } from './../.././../../shared/theme-support/theme.service';
import { getMockThemeService } from './../.././../../shared/mocks/theme-service.mock';
import { provideMockStore } from '@ngrx/store/testing';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from './../.././../../shared/testing/active-router.stub';
describe('FileSectionComponent', () => { describe('FileSectionComponent', () => {
let comp: FileSectionComponent; let comp: FileSectionComponent;
@@ -58,19 +63,30 @@ describe('FileSectionComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot({ imports: [TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), BrowserAnimationsModule, FileSectionComponent, VarDirective, FileSizePipe, MetadataFieldWrapperComponent], }), BrowserAnimationsModule, FileSectionComponent, VarDirective, FileSizePipe],
providers: [ providers: [
{ provide: BitstreamDataService, useValue: bitstreamDataService }, { provide: BitstreamDataService, useValue: bitstreamDataService },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() }, { provide: NotificationsService, useValue: new NotificationsServiceStub() },
{ provide: APP_CONFIG, useValue: environment } { provide: APP_CONFIG, useValue: environment },
], { provide: ThemeService, useValue: getMockThemeService() },
schemas: [NO_ERRORS_SCHEMA] { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
}).compileComponents(); provideMockStore()
],
schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(FileSectionComponent, {
remove: {
imports: [
MetadataFieldWrapperComponent
]
}
})
.compileComponents();
})); }));
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {

View File

@@ -9,6 +9,8 @@ import { APP_CONFIG } from '../../../../../../config/app-config.interface';
import { environment } from '../../../../../../environments/environment'; import { environment } from '../../../../../../environments/environment';
import { BrowseDefinitionDataService } from '../../../../../core/browse/browse-definition-data.service'; import { BrowseDefinitionDataService } from '../../../../../core/browse/browse-definition-data.service';
import { BrowseDefinitionDataServiceStub } from '../../../../../shared/testing/browse-definition-data-service.stub'; import { BrowseDefinitionDataServiceStub } from '../../../../../shared/testing/browse-definition-data-service.stub';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
let comp: ItemPageDateFieldComponent; let comp: ItemPageDateFieldComponent;
let fixture: ComponentFixture<ItemPageDateFieldComponent>; let fixture: ComponentFixture<ItemPageDateFieldComponent>;
@@ -19,18 +21,20 @@ const mockValue = 'test value';
describe('ItemPageDateFieldComponent', () => { describe('ItemPageDateFieldComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot({ imports: [TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), ItemPageDateFieldComponent, MetadataValuesComponent], }), ItemPageDateFieldComponent, MetadataValuesComponent],
providers: [ providers: [
{ provide: APP_CONFIG, useValue: environment }, { provide: APP_CONFIG, useValue: environment },
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub } { provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ItemPageDateFieldComponent, { ],
schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ItemPageDateFieldComponent, {
set: { changeDetection: ChangeDetectionStrategy.Default } set: { changeDetection: ChangeDetectionStrategy.Default }
}).compileComponents(); }).compileComponents();
})); }));

View File

@@ -9,6 +9,8 @@ import { APP_CONFIG } from '../../../../../../config/app-config.interface';
import { environment } from '../../../../../../environments/environment'; import { environment } from '../../../../../../environments/environment';
import { BrowseDefinitionDataService } from '../../../../../core/browse/browse-definition-data.service'; import { BrowseDefinitionDataService } from '../../../../../core/browse/browse-definition-data.service';
import { BrowseDefinitionDataServiceStub } from '../../../../../shared/testing/browse-definition-data-service.stub'; import { BrowseDefinitionDataServiceStub } from '../../../../../shared/testing/browse-definition-data-service.stub';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub';
let comp: GenericItemPageFieldComponent; let comp: GenericItemPageFieldComponent;
let fixture: ComponentFixture<GenericItemPageFieldComponent>; let fixture: ComponentFixture<GenericItemPageFieldComponent>;
@@ -29,7 +31,8 @@ describe('GenericItemPageFieldComponent', () => {
}), GenericItemPageFieldComponent, MetadataValuesComponent], }), GenericItemPageFieldComponent, MetadataValuesComponent],
providers: [ providers: [
{ provide: APP_CONFIG, useValue: environment }, { provide: APP_CONFIG, useValue: environment },
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub } { provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(GenericItemPageFieldComponent, { }).overrideComponent(GenericItemPageFieldComponent, {

View File

@@ -53,6 +53,14 @@ import { routeServiceStub } from '../../../../shared/testing/route-service.stub'
import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service';
import { AuthService } from '../../../../core/auth/auth.service'; import { AuthService } from '../../../../core/auth/auth.service';
import { AuthServiceStub } from '../../../../shared/testing/auth-service.stub'; import { AuthServiceStub } from '../../../../shared/testing/auth-service.stub';
import { AsyncPipe } from '@angular/common';
import { DsoEditMenuComponent } from '../../../../shared/dso-page/dso-edit-menu/dso-edit-menu.component';
import { MetadataFieldWrapperComponent } from '../../../../shared/metadata-field-wrapper/metadata-field-wrapper.component';
import { ThemedResultsBackButtonComponent } from '../../../../shared/results-back-button/themed-results-back-button.component';
import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail.component';
import { ThemedItemPageTitleFieldComponent } from '../../field-components/specific-field/title/themed-item-page-field.component';
import { TabbedRelatedEntitiesSearchComponent } from '../../related-entities/tabbed-related-entities-search/tabbed-related-entities-search.component';
import { RelatedItemsComponent } from '../../related-items/related-items-component';
export function getIIIFSearchEnabled(enabled: boolean): MetadataValue { export function getIIIFSearchEnabled(enabled: boolean): MetadataValue {
@@ -100,7 +108,7 @@ export function getItemPageFieldsTest(mockItem: Item, component) {
let fixture: ComponentFixture<any>; let fixture: ComponentFixture<any>;
let relationshipService: jasmine.SpyObj<RelationshipDataService>; let relationshipService: jasmine.SpyObj<RelationshipDataService>;
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(async () => {
const mockBitstreamDataService = { const mockBitstreamDataService = {
getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> { getThumbnailFor(item: Item): Observable<RemoteData<Bitstream>> {
return createSuccessfulRemoteDataObject$(new Bitstream()); return createSuccessfulRemoteDataObject$(new Bitstream());
@@ -115,55 +123,73 @@ export function getItemPageFieldsTest(mockItem: Item, component) {
getRelatedItemsByLabel: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])), getRelatedItemsByLabel: createSuccessfulRemoteDataObject$(buildPaginatedList(new PageInfo(), [])),
}); });
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock,
} },
}), }),
RouterTestingModule, RouterTestingModule,
component, GenericItemPageFieldComponent, TruncatePipe component,
], GenericItemPageFieldComponent,
providers: [ TruncatePipe,
{ AsyncPipe,
provide: APP_CONFIG, ],
useValue: { providers: [
browseBy: { showThumbnails: true }, {
markdown: { enabled: true } provide: APP_CONFIG,
} useValue: {
}, browseBy: { showThumbnails: true },
provideMockStore(), markdown: { enabled: true },
{ provide: ItemDataService, useValue: {} }, },
{ provide: TruncatableService, useValue: mockTruncatableService }, },
{ provide: RelationshipDataService, useValue: relationshipService }, provideMockStore(),
{ provide: ObjectCacheService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: UUIDService, useValue: {} }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: RemoteDataBuildService, useValue: {} }, { provide: RelationshipDataService, useValue: relationshipService },
{ provide: CommunityDataService, useValue: {} }, { provide: ObjectCacheService, useValue: {} },
{ provide: HALEndpointService, useValue: {} }, { provide: UUIDService, useValue: {} },
{ provide: HttpClient, useValue: {} }, { provide: RemoteDataBuildService, useValue: {} },
{ provide: DSOChangeAnalyzer, useValue: {} }, { provide: CommunityDataService, useValue: {} },
{ provide: VersionHistoryDataService, useValue: {} }, { provide: HALEndpointService, useValue: {} },
{ provide: VersionDataService, useValue: {} }, { provide: HttpClient, useValue: {} },
{ provide: NotificationsService, useValue: {} }, { provide: DSOChangeAnalyzer, useValue: {} },
{ provide: DefaultChangeAnalyzer, useValue: {} }, { provide: VersionHistoryDataService, useValue: {} },
{ provide: BitstreamDataService, useValue: mockBitstreamDataService }, { provide: VersionDataService, useValue: {} },
{ provide: WorkspaceitemDataService, useValue: {} }, { provide: NotificationsService, useValue: {} },
{ provide: SearchService, useValue: {} }, { provide: DefaultChangeAnalyzer, useValue: {} },
{ provide: RouteService, useValue: routeServiceStub }, { provide: BitstreamDataService, useValue: mockBitstreamDataService },
{ provide: AuthService, useValue: new AuthServiceStub() }, { provide: WorkspaceitemDataService, useValue: {} },
{ provide: AuthorizationDataService, useValue: authorizationService }, { provide: SearchService, useValue: {} },
{ provide: ResearcherProfileDataService, useValue: {} }, { provide: RouteService, useValue: routeServiceStub },
{ provide: BrowseDefinitionDataService, useValue: BrowseDefinitionDataServiceStub }, { provide: AuthService, useValue: new AuthServiceStub() },
], { provide: AuthorizationDataService, useValue: authorizationService },
schemas: [NO_ERRORS_SCHEMA] { provide: ResearcherProfileDataService, useValue: {} },
}).overrideComponent(component, { {
add: { changeDetection: ChangeDetectionStrategy.Default } provide: BrowseDefinitionDataService,
}).compileComponents(); useValue: BrowseDefinitionDataServiceStub,
},
],
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(component, {
remove: {
imports: [
ThemedResultsBackButtonComponent,
ThemedItemPageTitleFieldComponent,
DsoEditMenuComponent,
MetadataFieldWrapperComponent,
ThemedThumbnailComponent,
RelatedItemsComponent,
TabbedRelatedEntitiesSearchComponent
],
},
add: { changeDetection: ChangeDetectionStrategy.Default },
})
.compileComponents();
})); }));
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
fixture = TestBed.createComponent(component); fixture = TestBed.createComponent(component);
comp = fixture.componentInstance; comp = fixture.componentInstance;
@@ -443,42 +469,42 @@ describe('ItemComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), }),
RouterTestingModule, RouterTestingModule,
ItemComponent, GenericItemPageFieldComponent, TruncatePipe ItemComponent, GenericItemPageFieldComponent, TruncatePipe
], ],
providers: [ providers: [
{ provide: ItemDataService, useValue: {} }, { provide: ItemDataService, useValue: {} },
{ provide: TruncatableService, useValue: mockTruncatableService }, { provide: TruncatableService, useValue: mockTruncatableService },
{ provide: RelationshipDataService, useValue: {} }, { provide: RelationshipDataService, useValue: {} },
{ provide: ObjectCacheService, useValue: {} }, { provide: ObjectCacheService, useValue: {} },
{ provide: UUIDService, useValue: {} }, { provide: UUIDService, useValue: {} },
{ provide: Store, useValue: {} }, { provide: Store, useValue: {} },
{ provide: RemoteDataBuildService, useValue: {} }, { provide: RemoteDataBuildService, useValue: {} },
{ provide: CommunityDataService, useValue: {} }, { provide: CommunityDataService, useValue: {} },
{ provide: HALEndpointService, useValue: {} }, { provide: HALEndpointService, useValue: {} },
{ provide: HttpClient, useValue: {} }, { provide: HttpClient, useValue: {} },
{ provide: DSOChangeAnalyzer, useValue: {} }, { provide: DSOChangeAnalyzer, useValue: {} },
{ provide: VersionHistoryDataService, useValue: {} }, { provide: VersionHistoryDataService, useValue: {} },
{ provide: VersionDataService, useValue: {} }, { provide: VersionDataService, useValue: {} },
{ provide: NotificationsService, useValue: {} }, { provide: NotificationsService, useValue: {} },
{ provide: DefaultChangeAnalyzer, useValue: {} }, { provide: DefaultChangeAnalyzer, useValue: {} },
{ provide: BitstreamDataService, useValue: {} }, { provide: BitstreamDataService, useValue: {} },
{ provide: WorkspaceitemDataService, useValue: {} }, { provide: WorkspaceitemDataService, useValue: {} },
{ provide: SearchService, useValue: {} }, { provide: SearchService, useValue: {} },
{ provide: RouteService, useValue: mockRouteService }, { provide: RouteService, useValue: mockRouteService },
{ provide: AuthorizationDataService, useValue: {} }, { provide: AuthorizationDataService, useValue: {} },
{ provide: ResearcherProfileDataService, useValue: {} }, { provide: ResearcherProfileDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).overrideComponent(ItemComponent, { }).overrideComponent(ItemComponent, {
set: {changeDetection: ChangeDetectionStrategy.Default} set: { changeDetection: ChangeDetectionStrategy.Default }
}); });
})); }));
@@ -492,7 +518,7 @@ describe('ItemComponent', () => {
fixture.detectChanges(); fixture.detectChanges();
})); }));
it('should hide back button',() => { it('should hide back button', () => {
spyOn(mockRouteService, 'getPreviousUrl').and.returnValue(observableOf('/item')); spyOn(mockRouteService, 'getPreviousUrl').and.returnValue(observableOf('/item'));
comp.showBackButton.subscribe((val) => { comp.showBackButton.subscribe((val) => {
expect(val).toBeFalse(); expect(val).toBeFalse();

View File

@@ -5,6 +5,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ConfigurationSearchPageComponent } from '../../../../search-page/configuration-search-page.component';
describe('RelatedEntitiesSearchComponent', () => { describe('RelatedEntitiesSearchComponent', () => {
let comp: RelatedEntitiesSearchComponent; let comp: RelatedEntitiesSearchComponent;
@@ -19,9 +20,15 @@ describe('RelatedEntitiesSearchComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule, RelatedEntitiesSearchComponent], imports: [TranslateModule.forRoot(), NoopAnimationsModule, FormsModule, RelatedEntitiesSearchComponent],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(RelatedEntitiesSearchComponent, {
remove: {
imports: [ConfigurationSearchPageComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -9,6 +9,7 @@ import { RouterMock } from '../../../../shared/mocks/router.mock';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { VarDirective } from '../../../../shared/utils/var.directive'; import { VarDirective } from '../../../../shared/utils/var.directive';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { RelatedEntitiesSearchComponent } from '../related-entities-search/related-entities-search.component';
describe('TabbedRelatedEntitiesSearchComponent', () => { describe('TabbedRelatedEntitiesSearchComponent', () => {
let comp: TabbedRelatedEntitiesSearchComponent; let comp: TabbedRelatedEntitiesSearchComponent;
@@ -29,18 +30,26 @@ describe('TabbedRelatedEntitiesSearchComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), NoopAnimationsModule, NgbModule, TabbedRelatedEntitiesSearchComponent, VarDirective], imports: [TranslateModule.forRoot(), NoopAnimationsModule, NgbModule, TabbedRelatedEntitiesSearchComponent, VarDirective],
providers: [ providers: [
{ {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {
queryParams: observableOf({ tab: mockRelationType }) queryParams: observableOf({ tab: mockRelationType })
}, },
}, },
{ provide: Router, useValue: router } { provide: Router, useValue: router }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(TabbedRelatedEntitiesSearchComponent, {
remove: {
imports: [
RelatedEntitiesSearchComponent
]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -2,12 +2,14 @@ import { NO_ERRORS_SCHEMA } from '@angular/core';
import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { Store } from '@ngrx/store';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { LoginPageComponent } from './login-page.component'; import { LoginPageComponent } from './login-page.component';
import { ActivatedRouteStub } from '../shared/testing/active-router.stub'; import { ActivatedRouteStub } from '../shared/testing/active-router.stub';
import { AuthService } from '../core/auth/auth.service';
import { AuthServiceMock } from '../shared/mocks/auth.service.mock';
import { provideMockStore } from '@ngrx/store/testing';
describe('LoginPageComponent', () => { describe('LoginPageComponent', () => {
let comp: LoginPageComponent; let comp: LoginPageComponent;
@@ -16,25 +18,19 @@ describe('LoginPageComponent', () => {
params: observableOf({}) params: observableOf({})
}); });
const store: Store<LoginPageComponent> = jasmine.createSpyObj('store', {
/* eslint-disable no-empty,@typescript-eslint/no-empty-function */
dispatch: {},
/* eslint-enable no-empty, @typescript-eslint/no-empty-function */
select: observableOf(true)
});
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(), TranslateModule.forRoot(),
LoginPageComponent LoginPageComponent
], ],
providers: [ providers: [
{ provide: ActivatedRoute, useValue: activatedRouteStub }, { provide: ActivatedRoute, useValue: activatedRouteStub },
{ provide: Store, useValue: store } { provide: AuthService, useValue: new AuthServiceMock() },
], provideMockStore({})
schemas: [NO_ERRORS_SCHEMA] ],
}).compileComponents(); schemas: [NO_ERRORS_SCHEMA]
}).compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -3,6 +3,7 @@ import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { LogoutPageComponent } from './logout-page.component'; import { LogoutPageComponent } from './logout-page.component';
import { provideMockStore } from '@ngrx/store/testing';
describe('LogoutPageComponent', () => { describe('LogoutPageComponent', () => {
let comp: LogoutPageComponent; let comp: LogoutPageComponent;
@@ -10,12 +11,16 @@ describe('LogoutPageComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot(), TranslateModule.forRoot(),
LogoutPageComponent LogoutPageComponent
], ],
schemas: [NO_ERRORS_SCHEMA] providers: [
}).compileComponents(); provideMockStore()
],
schemas: [NO_ERRORS_SCHEMA]
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {

View File

@@ -1,8 +1,7 @@
/* eslint-disable max-classes-per-file */ /* eslint-disable max-classes-per-file */
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { ChangeDetectorRef, ElementRef, NO_ERRORS_SCHEMA } from '@angular/core'; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, NO_ERRORS_SCHEMA } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { By } from '@angular/platform-browser';
import { createPaginatedList } from '../../shared/testing/utils.test'; import { createPaginatedList } from '../../shared/testing/utils.test';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap'; import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
@@ -24,7 +23,6 @@ import { CollectionDataService } from '../../core/data/collection-data.service';
import { MockElementRef } from '../../shared/testing/element-ref.mock'; import { MockElementRef } from '../../shared/testing/element-ref.mock';
import { FindListOptions } from '../../core/data/find-list-options.model'; import { FindListOptions } from '../../core/data/find-list-options.model';
describe('CollectionSelectorComponent', () => { describe('CollectionSelectorComponent', () => {
let component: CollectionSelectorComponent; let component: CollectionSelectorComponent;
let fixture: ComponentFixture<CollectionSelectorComponent>; let fixture: ComponentFixture<CollectionSelectorComponent>;
@@ -105,25 +103,32 @@ describe('CollectionSelectorComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), }),
CollectionSelectorComponent, CollectionDropdownComponent CollectionSelectorComponent,
], // CollectionDropdownComponent,
providers: [ ],
providers: [
{ provide: CollectionDataService, useValue: collectionDataServiceMock }, { provide: CollectionDataService, useValue: collectionDataServiceMock },
{ provide: ElementRef, useClass: MockElementRef }, { provide: ElementRef, useClass: MockElementRef },
{ provide: NgbActiveModal, useValue: modal }, { provide: NgbActiveModal, useValue: modal },
{ provide: ActivatedRoute, useValue: {} }, { provide: ActivatedRoute, useValue: {} },
{ provide: CollectionDropdownComponent, useClass: CollectionDropdownStubComponent },
ChangeDetectorRef ChangeDetectorRef
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.compileComponents(); .overrideComponent(CollectionSelectorComponent, {
set: {
changeDetection: ChangeDetectionStrategy.Default
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
@@ -142,11 +147,13 @@ describe('CollectionSelectorComponent', () => {
}); });
it('should call selectObject', () => { it('should call selectObject', () => {
spyOn(component, 'selectObject'); spyOn(component, 'selectObject').and.callThrough();
scheduler.schedule(() => fixture.detectChanges()); scheduler.schedule(() => fixture.detectChanges());
scheduler.flush(); scheduler.flush();
const collectionItem = fixture.debugElement.query(By.css('.collection-item:nth-child(2)')); fixture.detectChanges();
collectionItem.triggerEventHandler('click', null);
component.selectObject({collection: {name: 'test', id: 'test', uuid: 'test'}, communities: []});
expect(component.selectObject).toHaveBeenCalled(); expect(component.selectObject).toHaveBeenCalled();
}); });
@@ -155,3 +162,19 @@ describe('CollectionSelectorComponent', () => {
expect((component as any).activeModal.close).toHaveBeenCalled(); expect((component as any).activeModal.close).toHaveBeenCalled();
}); });
}); });
@Component({
selector: 'ds-collection-dropdown',
template: `
<li
(click)="test()"
class="dropdown-item collection-item"
title="test" >
</li>`,
standalone: true
})
export class CollectionDropdownStubComponent {
test() {
return 'test';
}
}

View File

@@ -1,72 +1,116 @@
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap'; import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';
import { ComponentFixture, fakeAsync, flush, TestBed, waitForAsync } from '@angular/core/testing'; import {
ComponentFixture,
fakeAsync,
flush,
TestBed,
waitForAsync,
} from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing'; import { RouterTestingModule } from '@angular/router/testing';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
import { cold } from 'jasmine-marbles'; import { cold } from 'jasmine-marbles';
import { MyDSpacePageComponent, SEARCH_CONFIG_SERVICE } from './my-dspace-page.component'; import {
MyDSpacePageComponent,
SEARCH_CONFIG_SERVICE,
} from './my-dspace-page.component';
import { SearchService } from '../core/shared/search/search.service'; import { SearchService } from '../core/shared/search/search.service';
import { MyDSpaceConfigurationService } from './my-dspace-configuration.service'; import { MyDSpaceConfigurationService } from './my-dspace-configuration.service';
import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type'; import { MyDSpaceConfigurationValueType } from './my-dspace-configuration-value-type';
import { Context } from '../core/shared/context.model'; import { Context } from '../core/shared/context.model';
import SpyObj = jasmine.SpyObj; import SpyObj = jasmine.SpyObj;
import { RoleService } from '../core/roles/role.service';
import { MyDSpaceNewSubmissionComponent } from './my-dspace-new-submission/my-dspace-new-submission.component';
import { RoleDirective } from '../shared/roles/role.directive';
import { ThemeService } from '../shared/theme-support/theme.service';
import { getMockThemeService } from '../shared/mocks/theme-service.mock';
describe('MyDSpacePageComponent', () => { describe('MyDSpacePageComponent', () => {
let comp: MyDSpacePageComponent; let comp: MyDSpacePageComponent;
let fixture: ComponentFixture<MyDSpacePageComponent>; let fixture: ComponentFixture<MyDSpacePageComponent>;
let roleService: any;
const searchServiceStub: SpyObj<SearchService> = jasmine.createSpyObj('SearchService', { const searchServiceStub: SpyObj<SearchService> = jasmine.createSpyObj(
setServiceOptions: jasmine.createSpy('setServiceOptions') 'SearchService',
}); {
setServiceOptions: jasmine.createSpy('setServiceOptions'),
}
);
const myDSpaceConfigurationServiceStub: SpyObj<MyDSpaceConfigurationService> = jasmine.createSpyObj('MyDSpaceConfigurationService', { const myDSpaceConfigurationServiceStub: SpyObj<MyDSpaceConfigurationService> =
getAvailableConfigurationOptions: jasmine.createSpy('getAvailableConfigurationOptions') jasmine.createSpyObj('MyDSpaceConfigurationService', {
}); getAvailableConfigurationOptions: jasmine.createSpy(
'getAvailableConfigurationOptions'
),
});
const configurationList = [ const configurationList = [
{ {
value: MyDSpaceConfigurationValueType.Workspace, value: MyDSpaceConfigurationValueType.Workspace,
label: `mydspace.show.${MyDSpaceConfigurationValueType.Workspace}`, label: `mydspace.show.${MyDSpaceConfigurationValueType.Workspace}`,
context: Context.Workspace context: Context.Workspace,
}, },
{ {
value: MyDSpaceConfigurationValueType.Workflow, value: MyDSpaceConfigurationValueType.Workflow,
label: `mydspace.show.${MyDSpaceConfigurationValueType.Workflow}`, label: `mydspace.show.${MyDSpaceConfigurationValueType.Workflow}`,
context: Context.Workflow context: Context.Workflow,
} },
]; ];
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
roleService = jasmine.createSpyObj('roleService', {
checkRole: ()=> observableOf(true)
});
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), NoopAnimationsModule, NgbCollapseModule, MyDSpacePageComponent], imports: [
providers: [ TranslateModule.forRoot(),
RouterTestingModule.withRoutes([]),
NoopAnimationsModule,
NgbCollapseModule,
MyDSpacePageComponent,
RoleDirective
],
providers: [
{ provide: SearchService, useValue: searchServiceStub }, { provide: SearchService, useValue: searchServiceStub },
{ provide: MyDSpaceConfigurationService, useValue: myDSpaceConfigurationServiceStub }, {
], provide: MyDSpaceConfigurationService,
schemas: [NO_ERRORS_SCHEMA] useValue: myDSpaceConfigurationServiceStub,
}).overrideComponent(MyDSpacePageComponent, { },
set: { { provide: RoleService, useValue: roleService },
providers: [ { provide: ThemeService, useValue: getMockThemeService() },
{ ],
provide: SEARCH_CONFIG_SERVICE, schemas: [NO_ERRORS_SCHEMA],
useValue: myDSpaceConfigurationServiceStub })
} .overrideComponent(MyDSpacePageComponent, {
] set: {
} providers: [
}).compileComponents(); {
provide: SEARCH_CONFIG_SERVICE,
useValue: myDSpaceConfigurationServiceStub,
},
],
},
})
.overrideComponent(MyDSpacePageComponent, {
remove: {
imports: [MyDSpaceNewSubmissionComponent],
},
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(MyDSpacePageComponent); fixture = TestBed.createComponent(MyDSpacePageComponent);
comp = fixture.componentInstance; // SearchPageComponent test instance comp = fixture.componentInstance; // SearchPageComponent test instance
myDSpaceConfigurationServiceStub.getAvailableConfigurationOptions.and.returnValue(observableOf(configurationList)); myDSpaceConfigurationServiceStub.getAvailableConfigurationOptions.and.returnValue(
observableOf(configurationList)
);
fixture.detectChanges(); fixture.detectChanges();
}); });
afterEach(() => { afterEach(() => {
@@ -74,14 +118,14 @@ describe('MyDSpacePageComponent', () => {
}); });
it('should init properly context and configuration', fakeAsync(() => { it('should init properly context and configuration', fakeAsync(() => {
expect(comp.configurationList$).toBeObservable(
expect(comp.configurationList$).toBeObservable(cold('(a|)', { cold('(a|)', {
a: configurationList a: configurationList,
})); })
);
flush(); flush();
expect(comp.configuration).toBe(MyDSpaceConfigurationValueType.Workspace); expect(comp.configuration).toBe(MyDSpaceConfigurationValueType.Workspace);
expect(comp.context).toBe(Context.Workspace); expect(comp.context).toBe(Context.Workspace);
})); }));
}); });

View File

@@ -13,7 +13,9 @@ import { of as observableOf } from 'rxjs';
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock'; import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock';
import { RequestService } from '../../core/data/request.service'; import { RequestService } from '../../core/data/request.service';
import { Router } from '@angular/router'; import { ActivatedRoute, Router } from '@angular/router';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
import { ScriptsSelectComponent } from './scripts-select/scripts-select.component';
describe('ProcessFormComponent', () => { describe('ProcessFormComponent', () => {
let component: ProcessFormComponent; let component: ProcessFormComponent;
@@ -51,24 +53,32 @@ describe('ProcessFormComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
FormsModule, FormsModule,
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), }),
ProcessFormComponent ProcessFormComponent
], ],
providers: [ providers: [
{ provide: ScriptDataService, useValue: scriptService }, { provide: ScriptDataService, useValue: scriptService },
{ provide: NotificationsService, useClass: NotificationsServiceStub }, { provide: NotificationsService, useClass: NotificationsServiceStub },
{ provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeBySubstring', 'removeByHrefSubstring']) }, { provide: RequestService, useValue: jasmine.createSpyObj('requestService', ['removeBySubstring', 'removeByHrefSubstring']) },
{ provide: Router, useValue: jasmine.createSpyObj('router', ['navigateByUrl']) }, { provide: Router, useValue: jasmine.createSpyObj('router', ['navigateByUrl']) },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [NO_ERRORS_SCHEMA] ],
}) schemas: [NO_ERRORS_SCHEMA]
})
.overrideComponent(ProcessFormComponent, {
remove: {
imports: [
ScriptsSelectComponent
]
}
})
.compileComponents(); .compileComponents();
})); }));

View File

@@ -17,6 +17,8 @@ import { ActivatedRoute } from '@angular/router';
import { LinkService } from '../../core/cache/builders/link.service'; import { LinkService } from '../../core/cache/builders/link.service';
import { VarDirective } from '../../shared/utils/var.directive'; import { VarDirective } from '../../shared/utils/var.directive';
import { ProcessDataService } from '../../core/data/processes/process-data.service'; import { ProcessDataService } from '../../core/data/processes/process-data.service';
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { ProcessFormComponent } from '../form/process-form.component';
describe('NewProcessComponent', () => { describe('NewProcessComponent', () => {
let component: NewProcessComponent; let component: NewProcessComponent;
@@ -39,10 +41,11 @@ describe('NewProcessComponent', () => {
{ {
invoke: observableOf({ invoke: observableOf({
response: response:
{ {
isSuccessful: true isSuccessful: true
} }
}) }),
findAll: createSuccessfulRemoteDataObject$(script),
} }
); );
} }
@@ -50,26 +53,31 @@ describe('NewProcessComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
init(); init();
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [ imports: [
FormsModule, FormsModule,
TranslateModule.forRoot({ TranslateModule.forRoot({
loader: { loader: {
provide: TranslateLoader, provide: TranslateLoader,
useClass: TranslateLoaderMock useClass: TranslateLoaderMock
} }
}), }),
NewProcessComponent, VarDirective NewProcessComponent, VarDirective
], ],
providers: [ providers: [
{ provide: ScriptDataService, useValue: scriptService }, { provide: ScriptDataService, useValue: scriptService },
{ provide: NotificationsService, useClass: NotificationsServiceStub }, { provide: NotificationsService, useClass: NotificationsServiceStub },
{ provide: RequestService, useValue: {} }, { provide: RequestService, useValue: {} },
{ provide: ActivatedRoute, useValue: { snapshot: { queryParams: {} } } }, { provide: ActivatedRoute, useValue: { snapshot: { queryParams: {} } } },
{ provide: LinkService, useValue: {} }, { provide: LinkService, useValue: {} },
{ provide: ProcessDataService, useValue: {} }, { provide: ProcessDataService, useValue: {} },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.overrideComponent(NewProcessComponent, {
remove: {
imports: [ProcessFormComponent]
}
})
.compileComponents(); .compileComponents();
})); }));

View File

@@ -11,7 +11,7 @@ import { EPersonDataService } from '../../core/eperson/eperson-data.service';
import cloneDeep from 'lodash/cloneDeep'; import cloneDeep from 'lodash/cloneDeep';
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { FormComponent } from '../../shared/form/form.component'; import { FormComponent } from '../../shared/form/form.component';
import { ConfigurationDataService } from 'src/app/core/data/configuration-data.service'; import { ConfigurationDataService } from '../../core/data/configuration-data.service';
import { of } from 'rxjs'; import { of } from 'rxjs';
describe('ProfilePageMetadataFormComponent', () => { describe('ProfilePageMetadataFormComponent', () => {

View File

@@ -4,6 +4,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { RegisterEmailComponent } from './register-email.component'; import { RegisterEmailComponent } from './register-email.component';
import { RegisterEmailFormComponent } from '../../register-email-form/register-email-form.component';
describe('RegisterEmailComponent', () => { describe('RegisterEmailComponent', () => {
@@ -12,9 +13,15 @@ describe('RegisterEmailComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [CommonModule, TranslateModule.forRoot(), ReactiveFormsModule, RegisterEmailComponent], imports: [CommonModule, TranslateModule.forRoot(), ReactiveFormsModule, RegisterEmailComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(RegisterEmailComponent, {
remove: {
imports: [RegisterEmailFormComponent]
}
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
fixture = TestBed.createComponent(RegisterEmailComponent); fixture = TestBed.createComponent(RegisterEmailComponent);

View File

@@ -21,6 +21,8 @@ import { EPerson } from '../../core/eperson/models/eperson.model';
import { Item } from '../../core/shared/item.model'; import { Item } from '../../core/shared/item.model';
import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model'; import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model';
import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
describe('DenyRequestCopyComponent', () => { describe('DenyRequestCopyComponent', () => {
let component: DenyRequestCopyComponent; let component: DenyRequestCopyComponent;
@@ -108,6 +110,7 @@ describe('DenyRequestCopyComponent', () => {
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: ItemRequestDataService, useValue: itemRequestService }, { provide: ItemRequestDataService, useValue: itemRequestService },
{ provide: NotificationsService, useValue: notificationsService }, { provide: NotificationsService, useValue: notificationsService },
{ provide: ThemeService, useValue: getMockThemeService() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -21,6 +21,8 @@ import { Item } from '../../core/shared/item.model';
import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model'; import { RequestCopyEmail } from '../email-request-copy/request-copy-email.model';
import { GrantRequestCopyComponent } from './grant-request-copy.component'; import { GrantRequestCopyComponent } from './grant-request-copy.component';
import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock';
import { getMockThemeService } from '../../shared/mocks/theme-service.mock';
import { ThemeService } from '../../shared/theme-support/theme.service';
describe('GrantRequestCopyComponent', () => { describe('GrantRequestCopyComponent', () => {
let component: GrantRequestCopyComponent; let component: GrantRequestCopyComponent;
@@ -108,6 +110,7 @@ describe('GrantRequestCopyComponent', () => {
{ provide: DSONameService, useValue: new DSONameServiceMock() }, { provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: ItemRequestDataService, useValue: itemRequestService }, { provide: ItemRequestDataService, useValue: itemRequestService },
{ provide: NotificationsService, useValue: notificationsService }, { provide: NotificationsService, useValue: notificationsService },
{ provide: ThemeService, useValue: getMockThemeService() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

View File

@@ -27,6 +27,8 @@ import { RouteService } from '../core/services/route.service';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { MenuServiceStub } from '../shared/testing/menu-service.stub'; import { MenuServiceStub } from '../shared/testing/menu-service.stub';
import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { NotificationsBoardComponent } from '../shared/notifications/notifications-board/notifications-board.component';
import { SystemWideAlertBannerComponent } from '../system-wide-alert/alert-banner/system-wide-alert-banner.component';
describe('RootComponent', () => { describe('RootComponent', () => {
let component: RootComponent; let component: RootComponent;
@@ -62,7 +64,13 @@ describe('RootComponent', () => {
RouteService RouteService
], ],
schemas: [CUSTOM_ELEMENTS_SCHEMA] schemas: [CUSTOM_ELEMENTS_SCHEMA]
}).compileComponents(); })
.overrideComponent(RootComponent, {
remove: {
imports: [NotificationsBoardComponent, SystemWideAlertBannerComponent]
}
})
.compileComponents();
}); });
beforeEach(() => { beforeEach(() => {

View File

@@ -16,6 +16,8 @@ import { AuthTokenInfo } from '../../core/auth/models/auth-token-info.model';
import { AuthService } from '../../core/auth/auth.service'; import { AuthService } from '../../core/auth/auth.service';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { BrowserOnlyMockPipe } from '../testing/browser-only-mock.pipe'; import { BrowserOnlyMockPipe } from '../testing/browser-only-mock.pipe';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../testing/active-router.stub';
describe('AuthNavMenuComponent', () => { describe('AuthNavMenuComponent', () => {
@@ -77,18 +79,18 @@ describe('AuthNavMenuComponent', () => {
}), }),
TranslateModule.forRoot(), TranslateModule.forRoot(),
AuthNavMenuComponent AuthNavMenuComponent
], ],
declarations: [BrowserOnlyMockPipe], declarations: [BrowserOnlyMockPipe],
providers: [ providers: [
{ provide: HostWindowService, useValue: window }, { provide: HostWindowService, useValue: window },
{ provide: AuthService, useValue: authService } { provide: AuthService, useValue: authService },
], { provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
schemas: [ ],
CUSTOM_ELEMENTS_SCHEMA schemas: [
] CUSTOM_ELEMENTS_SCHEMA
}) ]
})
.compileComponents(); .compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
@@ -273,7 +275,8 @@ describe('AuthNavMenuComponent', () => {
], ],
providers: [ providers: [
{ provide: HostWindowService, useValue: window }, { provide: HostWindowService, useValue: window },
{ provide: AuthService, useValue: authService } { provide: AuthService, useValue: authService },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [ schemas: [
CUSTOM_ELEMENTS_SCHEMA CUSTOM_ELEMENTS_SCHEMA

View File

@@ -14,6 +14,8 @@ import { cold } from 'jasmine-marbles';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { AuthService } from '../../../core/auth/auth.service'; import { AuthService } from '../../../core/auth/auth.service';
import { of } from 'rxjs'; import { of } from 'rxjs';
import { ActivatedRoute } from '@angular/router';
import { ActivatedRouteStub } from '../../testing/active-router.stub';
describe('UserMenuComponent', () => { describe('UserMenuComponent', () => {
@@ -70,7 +72,8 @@ describe('UserMenuComponent', () => {
UserMenuComponent UserMenuComponent
], ],
providers: [ providers: [
{ provide: AuthService, useValue: authService } { provide: AuthService, useValue: authService },
{ provide: ActivatedRoute, useValue: new ActivatedRouteStub() },
], ],
schemas: [ schemas: [
NO_ERRORS_SCHEMA NO_ERRORS_SCHEMA
@@ -116,8 +119,8 @@ describe('UserMenuComponent', () => {
expect(component.user$).toBeObservable(cold('(c|)', { expect(component.user$).toBeObservable(cold('(c|)', {
c: EPersonMock c: EPersonMock
})); }));
const span = deUserMenu.query(By.css('.dropdown-item-text'));
expect(deUserMenu).toBeNull(); expect(span).toBeNull();
}); });
}); });

View File

@@ -10,7 +10,7 @@ import { of as observableOf } from 'rxjs';
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { DsoEditMenuExpandableSectionComponent } from './dso-edit-menu-expandable-section.component'; import { DsoEditMenuExpandableSectionComponent } from './dso-edit-menu-expandable-section.component';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { MenuItemType } from 'src/app/shared/menu/menu-item-type.model'; import { MenuItemType } from '../../../../shared/menu/menu-item-type.model';
describe('DsoEditMenuExpandableSectionComponent', () => { describe('DsoEditMenuExpandableSectionComponent', () => {
let component: DsoEditMenuExpandableSectionComponent; let component: DsoEditMenuExpandableSectionComponent;

View File

@@ -10,7 +10,7 @@ import { Component } from '@angular/core';
import { By } from '@angular/platform-browser'; import { By } from '@angular/platform-browser';
import { DsoEditMenuSectionComponent } from './dso-edit-menu-section.component'; import { DsoEditMenuSectionComponent } from './dso-edit-menu-section.component';
import { OnClickMenuItemModel } from '../../../menu/menu-item/models/onclick.model'; import { OnClickMenuItemModel } from '../../../menu/menu-item/models/onclick.model';
import { MenuItemType } from 'src/app/shared/menu/menu-item-type.model'; import { MenuItemType } from '../../../../shared/menu/menu-item-type.model';
import { ActivatedRouteStub } from '../../../testing/active-router.stub'; import { ActivatedRouteStub } from '../../../testing/active-router.stub';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';

View File

@@ -8,6 +8,7 @@ import { EditCollectionSelectorComponent } from './edit-collection-selector.comp
import { Collection } from '../../../../core/shared/collection.model'; import { Collection } from '../../../../core/shared/collection.model';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
describe('EditCollectionSelectorComponent', () => { describe('EditCollectionSelectorComponent', () => {
let component: EditCollectionSelectorComponent; let component: EditCollectionSelectorComponent;
@@ -29,27 +30,33 @@ describe('EditCollectionSelectorComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
TestBed.configureTestingModule({ TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), EditCollectionSelectorComponent], imports: [TranslateModule.forRoot(), EditCollectionSelectorComponent],
providers: [ providers: [
{ provide: NgbActiveModal, useValue: modalStub }, { provide: NgbActiveModal, useValue: modalStub },
{ {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {
root: { root: {
snapshot: { snapshot: {
data: { data: {
dso: collectionRD, dso: collectionRD,
}, },
}, },
} }
}, },
}, },
{ {
provide: Router, useValue: router provide: Router, useValue: router
} }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(EditCollectionSelectorComponent, {
remove: {
imports: [DSOSelectorComponent]
}
})
.compileComponents();
})); }));

View File

@@ -8,6 +8,7 @@ import { EditCommunitySelectorComponent } from './edit-community-selector.compon
import { Community } from '../../../../core/shared/community.model'; import { Community } from '../../../../core/shared/community.model';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
describe('EditCommunitySelectorComponent', () => { describe('EditCommunitySelectorComponent', () => {
let component: EditCommunitySelectorComponent; let component: EditCommunitySelectorComponent;
@@ -49,7 +50,13 @@ describe('EditCommunitySelectorComponent', () => {
} }
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); })
.overrideComponent(EditCommunitySelectorComponent, {
remove: {
imports: [DSOSelectorComponent]
}
})
.compileComponents();
})); }));

View File

@@ -8,6 +8,7 @@ import { Item } from '../../../../core/shared/item.model';
import { RouterStub } from '../../../testing/router.stub'; import { RouterStub } from '../../../testing/router.stub';
import { MetadataValue } from '../../../../core/shared/metadata.models'; import { MetadataValue } from '../../../../core/shared/metadata.models';
import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils';
import { DSOSelectorComponent } from '../../dso-selector/dso-selector.component';
describe('EditItemSelectorComponent', () => { describe('EditItemSelectorComponent', () => {
let component: EditItemSelectorComponent; let component: EditItemSelectorComponent;
@@ -16,36 +17,49 @@ describe('EditItemSelectorComponent', () => {
const item = new Item(); const item = new Item();
item.uuid = '1234-1234-1234-1234'; item.uuid = '1234-1234-1234-1234';
item.metadata = { 'dc.title': [Object.assign(new MetadataValue(), { value: 'Item title', language: undefined })] }; item.metadata = {
'dc.title': [
Object.assign(new MetadataValue(), {
value: 'Item title',
language: undefined,
}),
],
};
const router = new RouterStub(); const router = new RouterStub();
const itemRD = createSuccessfulRemoteDataObject(item); const itemRD = createSuccessfulRemoteDataObject(item);
const modalStub = jasmine.createSpyObj('modalStub', ['close']); const modalStub = jasmine.createSpyObj('modalStub', ['close']);
const editPath = '/items/1234-1234-1234-1234/edit'; const editPath = '/items/1234-1234-1234-1234/edit';
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(async () => {
TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), EditItemSelectorComponent], imports: [TranslateModule.forRoot(), EditItemSelectorComponent],
providers: [ providers: [
{ provide: NgbActiveModal, useValue: modalStub }, { provide: NgbActiveModal, useValue: modalStub },
{ {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {
root: { root: {
snapshot: { snapshot: {
data: { data: {
dso: itemRD, dso: itemRD,
}, },
}, },
}
}, },
},
}, },
{ {
provide: Router, useValue: router provide: Router,
} useValue: router,
], },
schemas: [NO_ERRORS_SCHEMA] ],
}).compileComponents(); schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(EditItemSelectorComponent, {
remove: {
imports: [DSOSelectorComponent],
},
})
.compileComponents();
})); }));
beforeEach(() => { beforeEach(() => {
@@ -63,5 +77,4 @@ describe('EditItemSelectorComponent', () => {
component.navigate(item); component.navigate(item);
expect(router.navigate).toHaveBeenCalledWith([editPath]); expect(router.navigate).toHaveBeenCalledWith([editPath]);
}); });
}); });

View File

@@ -20,6 +20,8 @@ import {
} from '../../../remote-data.utils'; } from '../../../remote-data.utils';
import { ExportBatchSelectorComponent } from './export-batch-selector.component'; import { ExportBatchSelectorComponent } from './export-batch-selector.component';
import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service';
import { SearchService } from '../../../../core/shared/search/search.service';
import { SearchServiceStub } from '../../../../shared/testing/search-service.stub';
// No way to add entryComponents yet to testbed; alternative implemented; source: https://stackoverflow.com/questions/41689468/how-to-shallow-test-a-component-with-an-entrycomponents // No way to add entryComponents yet to testbed; alternative implemented; source: https://stackoverflow.com/questions/41689468/how-to-shallow-test-a-component-with-an-entrycomponents
@NgModule({ @NgModule({
@@ -90,6 +92,7 @@ describe('ExportBatchSelectorComponent', () => {
{ provide: NotificationsService, useValue: notificationService }, { provide: NotificationsService, useValue: notificationService },
{ provide: ScriptDataService, useValue: scriptService }, { provide: ScriptDataService, useValue: scriptService },
{ provide: AuthorizationDataService, useValue: authorizationDataService }, { provide: AuthorizationDataService, useValue: authorizationDataService },
{ provide: SearchService, useValue: new SearchServiceStub()},
{ {
provide: ActivatedRoute, provide: ActivatedRoute,
useValue: { useValue: {

View File

@@ -6,6 +6,12 @@ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { Collection } from '../../../../core/shared/collection.model'; import { Collection } from '../../../../core/shared/collection.model';
import { Item } from '../../../../core/shared/item.model'; import { Item } from '../../../../core/shared/item.model';
import { ImportBatchSelectorComponent } from './import-batch-selector.component'; import { ImportBatchSelectorComponent } from './import-batch-selector.component';
import { SearchService } from '../../../../core/shared/search/search.service';
import { SearchServiceStub } from '../../../../shared/testing/search-service.stub';
import { NotificationsService } from '../../../../shared/notifications/notifications.service';
import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub';
import { ThemeService } from '../../../../shared/theme-support/theme.service';
import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock';
describe('ImportBatchSelectorComponent', () => { describe('ImportBatchSelectorComponent', () => {
let component: ImportBatchSelectorComponent; let component: ImportBatchSelectorComponent;
@@ -35,6 +41,9 @@ describe('ImportBatchSelectorComponent', () => {
imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), ImportBatchSelectorComponent], imports: [TranslateModule.forRoot(), RouterTestingModule.withRoutes([]), ImportBatchSelectorComponent],
providers: [ providers: [
{ provide: NgbActiveModal, useValue: modalStub }, { provide: NgbActiveModal, useValue: modalStub },
{ provide: SearchService, useValue: new SearchServiceStub() },
{ provide: NotificationsService, useValue: new NotificationsServiceStub() },
{ provide: ThemeService, useValue: getMockThemeService() },
], ],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}).compileComponents(); }).compileComponents();

Some files were not shown because too many files have changed in this diff Show More