111731: Fixed tests not mocking SearchConfigurationService

This commit is contained in:
Alexandre Vryghem
2024-05-05 15:28:54 +02:00
parent e94b094c20
commit 806b07c084
14 changed files with 161 additions and 331 deletions

View File

@@ -22,10 +22,7 @@ import {
} from '@angular/router';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { provideMockStore } from '@ngrx/store/testing';
import {
TranslateLoader,
TranslateModule,
} from '@ngx-translate/core';
import { TranslateModule } from '@ngx-translate/core';
import {
Observable,
of as observableOf,
@@ -59,6 +56,7 @@ import {
} from '../../shared/mocks/dso-name.service.mock';
import { RouterMock } from '../../shared/mocks/router.mock';
import { NotificationsService } from '../../shared/notifications/notifications.service';
import { PaginationComponent } from '../../shared/pagination/pagination.component';
import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { ActivatedRouteStub } from '../../shared/testing/active-router.stub';
import {
@@ -72,7 +70,6 @@ import {
import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub';
import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub';
import { routeServiceStub } from '../../shared/testing/route-service.stub';
import { TranslateLoaderMock } from '../../shared/testing/translate-loader.mock';
import { GroupsRegistryComponent } from './groups-registry.component';
describe('GroupsRegistryComponent', () => {
@@ -209,12 +206,9 @@ describe('GroupsRegistryComponent', () => {
paginationService = new PaginationServiceStub();
return TestBed.configureTestingModule({
imports: [CommonModule, NgbModule, FormsModule, ReactiveFormsModule, BrowserModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useClass: TranslateLoaderMock,
},
}), GroupsRegistryComponent],
TranslateModule.forRoot(),
GroupsRegistryComponent,
],
providers: [GroupsRegistryComponent,
{ provide: DSONameService, useValue: new DSONameServiceMock() },
{ provide: EPersonDataService, useValue: ePersonDataServiceStub },
@@ -232,6 +226,12 @@ describe('GroupsRegistryComponent', () => {
provideMockStore(),
],
schemas: [NO_ERRORS_SCHEMA],
}).overrideComponent(GroupsRegistryComponent, {
remove: {
imports: [
PaginationComponent,
],
},
}).compileComponents();
}));

View File

@@ -14,10 +14,7 @@ import {
ReactiveFormsModule,
UntypedFormBuilder,
} from '@angular/forms';
import {
Router,
RouterLink,
} from '@angular/router';
import { RouterLink } from '@angular/router';
import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap';
import {
TranslateModule,
@@ -149,7 +146,6 @@ export class GroupsRegistryComponent implements OnInit, OnDestroy {
private notificationsService: NotificationsService,
private formBuilder: UntypedFormBuilder,
protected routeService: RouteService,
private router: Router,
private authorizationService: AuthorizationDataService,
private paginationService: PaginationService,
public requestService: RequestService,

View File

@@ -2,57 +2,34 @@ import {
ComponentFixture,
TestBed,
} from '@angular/core/testing';
import { ActivatedRoute } from '@angular/router';
import { provideMockStore } from '@ngrx/store/testing';
import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface';
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
import { RequestService } from '../../../../core/data/request.service';
import { RouteService } from '../../../../core/services/route.service';
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-configuration.service';
import { MockActivatedRoute } from '../../../../shared/mocks/active-router.mock';
import { getMockRemoteDataBuildService } from '../../../../shared/mocks/remote-data-build.service.mock';
import { routeServiceStub } from '../../../../shared/testing/route-service.stub';
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service.stub';
import { AdminNotifyLogsResultComponent } from '../admin-notify-logs-result/admin-notify-logs-result.component';
import { AdminNotifyIncomingComponent } from './admin-notify-incoming.component';
describe('AdminNotifyIncomingComponent', () => {
let component: AdminNotifyIncomingComponent;
let fixture: ComponentFixture<AdminNotifyIncomingComponent>;
let halService: HALEndpointService;
let requestService: RequestService;
let rdbService: RemoteDataBuildService;
let searchConfigurationService: SearchConfigurationServiceStub;
beforeEach(async () => {
rdbService = getMockRemoteDataBuildService();
halService = jasmine.createSpyObj('halService', {
'getRootHref': '/api',
});
requestService = jasmine.createSpyObj('requestService', {
'generateRequestId': 'client/1234',
'send': '',
});
searchConfigurationService = new SearchConfigurationServiceStub();
await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AdminNotifyIncomingComponent],
providers: [
{ provide: SEARCH_CONFIG_SERVICE, useValue: SearchConfigurationService },
{ provide: RouteService, useValue: routeServiceStub },
{ provide: ActivatedRoute, useValue: new MockActivatedRoute() },
{ provide: HALEndpointService, useValue: halService },
{ provide: RequestService, useValue: requestService },
{ provide: RemoteDataBuildService, useValue: rdbService },
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
provideMockStore({}),
imports: [
AdminNotifyIncomingComponent,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
}).overrideProvider(SEARCH_CONFIG_SERVICE, {
useValue: searchConfigurationService,
}).overrideComponent(AdminNotifyIncomingComponent, {
remove: { imports: [AdminNotifyLogsResultComponent] },
})
.compileComponents();
}).compileComponents();
fixture = TestBed.createComponent(AdminNotifyIncomingComponent);
component = fixture.componentInstance;

View File

@@ -6,54 +6,41 @@ import {
ActivatedRoute,
Router,
} from '@angular/router';
import { provideMockStore } from '@ngrx/store/testing';
import { TranslateModule } from '@ngx-translate/core';
import { APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface';
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
import { ObjectCacheService } from '../../../../core/cache/object-cache.service';
import { RequestService } from '../../../../core/data/request.service';
import { RouteService } from '../../../../core/services/route.service';
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-configuration.service';
import { MockActivatedRoute } from '../../../../shared/mocks/active-router.mock';
import { SearchLabelsComponent } from '../../../../shared/search/search-labels/search-labels.component';
import { ThemedSearchComponent } from '../../../../shared/search/themed-search.component';
import { routeServiceStub } from '../../../../shared/testing/route-service.stub';
import { RouterStub } from '../../../../shared/testing/router.stub';
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service.stub';
import { AdminNotifyLogsResultComponent } from './admin-notify-logs-result.component';
describe('AdminNotifyLogsResultComponent', () => {
let component: AdminNotifyLogsResultComponent;
let fixture: ComponentFixture<AdminNotifyLogsResultComponent>;
let objectCache: ObjectCacheService;
let requestService: RequestService;
let halService: HALEndpointService;
let rdbService: RemoteDataBuildService;
let searchConfigurationService: SearchConfigurationServiceStub;
beforeEach(async () => {
searchConfigurationService = new SearchConfigurationServiceStub();
await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AdminNotifyLogsResultComponent],
providers: [
{ provide: RouteService, useValue: routeServiceStub },
{ provide: Router, useValue: new RouterStub() },
{ provide: ActivatedRoute, useValue: new MockActivatedRoute() },
{ provide: HALEndpointService, useValue: halService },
{ provide: ObjectCacheService, useValue: objectCache },
{ provide: RequestService, useValue: requestService },
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
{ provide: RemoteDataBuildService, useValue: rdbService },
provideMockStore({}),
],
})
.overrideComponent(AdminNotifyLogsResultComponent, {
}).overrideProvider(SEARCH_CONFIG_SERVICE, {
useValue: searchConfigurationService,
}).overrideComponent(AdminNotifyLogsResultComponent, {
remove: {
imports: [
SearchLabelsComponent,
ThemedSearchComponent,
],
},
})
.compileComponents();
}).compileComponents();
fixture = TestBed.createComponent(AdminNotifyLogsResultComponent);
component = fixture.componentInstance;

View File

@@ -3,7 +3,6 @@ import {
NgIf,
} from '@angular/common';
import {
ChangeDetectorRef,
Component,
Inject,
Input,
@@ -59,10 +58,11 @@ export class AdminNotifyLogsResultComponent implements OnInit {
protected readonly context = Context.CoarNotify;
constructor(@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService,
private router: Router,
private route: ActivatedRoute,
protected cdRef: ChangeDetectorRef) {
constructor(
@Inject(SEARCH_CONFIG_SERVICE) public searchConfigService: SearchConfigurationService,
protected router: Router,
protected route: ActivatedRoute,
) {
}
ngOnInit() {

View File

@@ -2,57 +2,34 @@ import {
ComponentFixture,
TestBed,
} from '@angular/core/testing';
import { ActivatedRoute } from '@angular/router';
import { provideMockStore } from '@ngrx/store/testing';
import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { APP_DATA_SERVICES_MAP } from '../../../../../config/app-config.interface';
import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service';
import { RequestService } from '../../../../core/data/request.service';
import { RouteService } from '../../../../core/services/route.service';
import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service';
import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service';
import { SEARCH_CONFIG_SERVICE } from '../../../../my-dspace-page/my-dspace-configuration.service';
import { MockActivatedRoute } from '../../../../shared/mocks/active-router.mock';
import { getMockRemoteDataBuildService } from '../../../../shared/mocks/remote-data-build.service.mock';
import { routeServiceStub } from '../../../../shared/testing/route-service.stub';
import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service.stub';
import { AdminNotifyLogsResultComponent } from '../admin-notify-logs-result/admin-notify-logs-result.component';
import { AdminNotifyOutgoingComponent } from './admin-notify-outgoing.component';
describe('AdminNotifyOutgoingComponent', () => {
let component: AdminNotifyOutgoingComponent;
let fixture: ComponentFixture<AdminNotifyOutgoingComponent>;
let halService: HALEndpointService;
let requestService: RequestService;
let rdbService: RemoteDataBuildService;
let searchConfigurationService: SearchConfigurationServiceStub;
beforeEach(async () => {
rdbService = getMockRemoteDataBuildService();
requestService = jasmine.createSpyObj('requestService', {
'generateRequestId': 'client/1234',
'send': '',
});
halService = jasmine.createSpyObj('halService', {
'getRootHref': '/api',
});
searchConfigurationService = new SearchConfigurationServiceStub();
await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot()],
providers: [
{ provide: SEARCH_CONFIG_SERVICE, useValue: SearchConfigurationService },
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
{ provide: RouteService, useValue: routeServiceStub },
{ provide: ActivatedRoute, useValue: new MockActivatedRoute() },
{ provide: HALEndpointService, useValue: halService },
{ provide: RequestService, useValue: requestService },
{ provide: RemoteDataBuildService, useValue: rdbService },
provideMockStore({}),
imports: [
AdminNotifyOutgoingComponent,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
})
.overrideComponent(AdminNotifyOutgoingComponent, {
}).overrideProvider(SEARCH_CONFIG_SERVICE, {
useValue: searchConfigurationService,
}).overrideComponent(AdminNotifyOutgoingComponent, {
remove: { imports: [AdminNotifyLogsResultComponent] },
})
.compileComponents();
}).compileComponents();
fixture = TestBed.createComponent(AdminNotifyOutgoingComponent);
component = fixture.componentInstance;

View File

@@ -1,29 +1,19 @@
import { DatePipe } from '@angular/common';
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import {
ComponentFixture,
TestBed,
} from '@angular/core/testing';
import { ActivatedRoute } from '@angular/router';
import { RouterModule } from '@angular/router';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
import { TranslateModule } from '@ngx-translate/core';
import { cold } from 'jasmine-marbles';
import {
of as observableOf,
of,
} from 'rxjs';
import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface';
import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service';
import { ObjectCacheService } from '../../../core/cache/object-cache.service';
import { RequestService } from '../../../core/data/request.service';
import { RouteService } from '../../../core/services/route.service';
import { ConfigurationProperty } from '../../../core/shared/configuration-property.model';
import { HALEndpointService } from '../../../core/shared/hal-endpoint.service';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-configuration.service';
import { routeServiceStub } from '../../../shared/testing/route-service.stub';
import { RouterStub } from '../../../shared/testing/router.stub';
import { TruncatableComponent } from '../../../shared/truncatable/truncatable.component';
import { TruncatablePartComponent } from '../../../shared/truncatable/truncatable-part/truncatable-part.component';
import { AdminNotifyDetailModalComponent } from '../admin-notify-detail-modal/admin-notify-detail-modal.component';
@@ -90,76 +80,46 @@ export const mockAdminNotifyMessages = [
describe('AdminNotifySearchResultComponent', () => {
let component: AdminNotifySearchResultComponent;
let fixture: ComponentFixture<AdminNotifySearchResultComponent>;
let objectCache: ObjectCacheService;
let requestService: RequestService;
let halService: HALEndpointService;
let rdbService: RemoteDataBuildService;
let adminNotifyMessageService: AdminNotifyMessagesService;
let searchConfigService: SearchConfigurationService;
let modalService: NgbModal;
const requestUUID = '34cfed7c-f597-49ef-9cbe-ea351f0023c2';
const testObject = {
uuid: 'test-property',
name: 'test-property',
values: ['value-1', 'value-2'],
} as ConfigurationProperty;
beforeEach(async () => {
halService = jasmine.createSpyObj('halService', {
getEndpoint: cold('a', { a: '' }),
});
adminNotifyMessageService = jasmine.createSpyObj('adminNotifyMessageService', {
getDetailedMessages: of(mockAdminNotifyMessages),
reprocessMessage: of(mockAdminNotifyMessages),
});
requestService = jasmine.createSpyObj('requestService', {
generateRequestId: requestUUID,
send: true,
});
rdbService = jasmine.createSpyObj('rdbService', {
buildSingle: cold('a', {
a: {
payload: testObject,
},
}),
});
searchConfigService = jasmine.createSpyObj('searchConfigService', {
getCurrentConfiguration: of('NOTIFY.outgoing'),
});
objectCache = {} as ObjectCacheService;
await TestBed.configureTestingModule({
imports: [TranslateModule.forRoot(), AdminNotifySearchResultComponent, AdminNotifyDetailModalComponent],
imports: [
AdminNotifyDetailModalComponent,
AdminNotifySearchResultComponent,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
providers: [
{ provide: AdminNotifyMessagesService, useValue: adminNotifyMessageService },
{ provide: RouteService, useValue: routeServiceStub },
{ provide: ActivatedRoute, useValue: new RouterStub() },
{ provide: HALEndpointService, useValue: halService },
{ provide: ObjectCacheService, useValue: objectCache },
{ provide: RequestService, useValue: requestService },
{ provide: RemoteDataBuildService, useValue: rdbService },
{ provide: SEARCH_CONFIG_SERVICE, useValue: searchConfigService },
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
DatePipe,
],
schemas: [NO_ERRORS_SCHEMA],
})
.overrideComponent(AdminNotifySearchResultComponent, {
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).overrideProvider(SEARCH_CONFIG_SERVICE, {
useValue: searchConfigService,
}).overrideComponent(AdminNotifySearchResultComponent, {
remove: {
imports: [
TruncatableComponent,
TruncatablePartComponent,
],
},
})
.compileComponents();
}).compileComponents();
fixture = TestBed.createComponent(AdminNotifySearchResultComponent);
component = fixture.componentInstance;
component.searchConfigService = searchConfigService;
modalService = (component as any).modalService;
modalService = TestBed.inject(NgbModal);
spyOn(modalService, 'open').and.returnValue(Object.assign({ componentInstance: Object.assign({ response: observableOf(true) }) }));
fixture.detectChanges();
});

View File

@@ -1,38 +1,23 @@
import { CommonModule } from '@angular/common';
import {
Component,
NO_ERRORS_SCHEMA,
} from '@angular/core';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import {
ComponentFixture,
TestBed,
waitForAsync,
} from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { RouterTestingModule } from '@angular/router/testing';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { RouterModule } from '@angular/router';
import { provideMockStore } from '@ngrx/store/testing';
import { TranslateModule } from '@ngx-translate/core';
import {
cold,
getTestScheduler,
hot,
} from 'jasmine-marbles';
import {
of as observableOf,
of,
} from 'rxjs';
import { TestScheduler } from 'rxjs/testing';
import { of as observableOf } from 'rxjs';
import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface';
import { BitstreamFormatDataService } from '../../../core/data/bitstream-format-data.service';
import { ConfigurationDataService } from '../../../core/data/configuration-data.service';
import { GroupDataService } from '../../../core/eperson/group-data.service';
import { PaginationService } from '../../../core/pagination/pagination.service';
import { BitstreamFormat } from '../../../core/shared/bitstream-format.model';
import { BitstreamFormatSupportLevel } from '../../../core/shared/bitstream-format-support-level';
import { XSRFService } from '../../../core/xsrf/xsrf.service';
import { HostWindowService } from '../../../shared/host-window.service';
import { NotificationsService } from '../../../shared/notifications/notifications.service';
import { PaginationComponent } from '../../../shared/pagination/pagination.component';
import {
@@ -41,7 +26,6 @@ import {
createSuccessfulRemoteDataObject,
createSuccessfulRemoteDataObject$,
} from '../../../shared/remote-data.utils';
import { HostWindowServiceStub } from '../../../shared/testing/host-window-service.stub';
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub';
import { createPaginatedList } from '../../../shared/testing/utils.test';
@@ -52,7 +36,6 @@ describe('BitstreamFormatsComponent', () => {
let comp: BitstreamFormatsComponent;
let fixture: ComponentFixture<BitstreamFormatsComponent>;
let bitstreamFormatService;
let scheduler: TestScheduler;
let notificationsServiceStub;
let paginationService;
@@ -107,8 +90,6 @@ describe('BitstreamFormatsComponent', () => {
const initAsync = () => {
notificationsServiceStub = new NotificationsServiceStub();
scheduler = getTestScheduler();
bitstreamFormatService = jasmine.createSpyObj('bitstreamFormatService', {
findAll: observableOf(mockFormatsRD),
find: createSuccessfulRemoteDataObject$(mockFormatsList[0]),
@@ -120,33 +101,28 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared'),
});
const groupDataService = jasmine.createSpyObj('groupsDataService', {
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
getGroupRegistryRouterLink: '',
getUUIDFromString: '',
});
const configurationDataService = jasmine.createSpyObj('ConfigurationDataService', {
findByPropertyName: of({ payload: { value: 'test' } }),
});
paginationService = new PaginationServiceStub();
TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, BitstreamFormatsComponent, PaginationComponent, EnumKeysPipe],
imports: [
BitstreamFormatsComponent,
EnumKeysPipe,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
providers: [
provideMockStore(),
{ provide: APP_DATA_SERVICES_MAP, useValue: {} },
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
{ provide: NotificationsService, useValue: notificationsServiceStub },
{ provide: PaginationService, useValue: paginationService },
{ provide: GroupDataService, useValue: groupDataService },
{ provide: ConfigurationDataService, useValue: configurationDataService },
{ provide: XSRFService, useValue: {} },
],
schemas: [NO_ERRORS_SCHEMA],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).overrideComponent(BitstreamFormatsComponent, {
remove: {
imports: [
PaginationComponent,
],
},
}).compileComponents();
};
@@ -251,8 +227,6 @@ describe('BitstreamFormatsComponent', () => {
beforeEach(waitForAsync(() => {
notificationsServiceStub = new NotificationsServiceStub();
scheduler = getTestScheduler();
bitstreamFormatService = jasmine.createSpyObj('bitstreamFormatService', {
findAll: observableOf(mockFormatsRD),
find: createSuccessfulRemoteDataObject$(mockFormatsList[0]),
@@ -264,37 +238,26 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared'),
});
const groupDataService = jasmine.createSpyObj('groupsDataService', {
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
getGroupRegistryRouterLink: '',
getUUIDFromString: '',
});
const configurationDataService = jasmine.createSpyObj('ConfigurationDataService', {
findByPropertyName: of({ payload: { value: 'test' } }),
});
paginationService = new PaginationServiceStub();
TestBed.configureTestingModule({
imports: [
CommonModule,
RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule,
BitstreamFormatsComponent, PaginationComponent, EnumKeysPipe],
BitstreamFormatsComponent,
EnumKeysPipe,
PaginationComponent,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
providers: [
provideMockStore(),
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
{ provide: NotificationsService, useValue: notificationsServiceStub },
{ provide: PaginationService, useValue: paginationService },
{ provide: GroupDataService, useValue: groupDataService },
{ provide: ConfigurationDataService, useValue: configurationDataService },
],
schemas: [NO_ERRORS_SCHEMA],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.overrideComponent(BitstreamFormatsComponent, {
remove: { imports: [PaginationComponent] },
add: { imports: [TestPaginationComponent] },
})
.compileComponents();
},
@@ -321,8 +284,6 @@ describe('BitstreamFormatsComponent', () => {
beforeEach(waitForAsync(() => {
notificationsServiceStub = new NotificationsServiceStub();
scheduler = getTestScheduler();
bitstreamFormatService = jasmine.createSpyObj('bitstreamFormatService', {
findAll: observableOf(mockFormatsRD),
find: createSuccessfulRemoteDataObject$(mockFormatsList[0]),
@@ -334,35 +295,24 @@ describe('BitstreamFormatsComponent', () => {
clearBitStreamFormatRequests: observableOf('cleared'),
});
const groupDataService = jasmine.createSpyObj('groupsDataService', {
findListByHref: createSuccessfulRemoteDataObject$(createPaginatedList([])),
getGroupRegistryRouterLink: '',
getUUIDFromString: '',
});
const configurationDataService = jasmine.createSpyObj('ConfigurationDataService', {
findByPropertyName: of({ payload: { value: 'test' } }),
});
paginationService = new PaginationServiceStub();
TestBed.configureTestingModule({
imports: [CommonModule, RouterTestingModule.withRoutes([]), TranslateModule.forRoot(), NgbModule, BitstreamFormatsComponent, PaginationComponent, EnumKeysPipe],
imports: [
BitstreamFormatsComponent,
EnumKeysPipe,
RouterModule.forRoot([]),
TranslateModule.forRoot(),
],
providers: [
provideMockStore(),
{ provide: BitstreamFormatDataService, useValue: bitstreamFormatService },
{ provide: HostWindowService, useValue: new HostWindowServiceStub(0) },
{ provide: NotificationsService, useValue: notificationsServiceStub },
{ provide: PaginationService, useValue: paginationService },
{ provide: PaginationService, useValue: paginationService },
{ provide: GroupDataService, useValue: groupDataService },
{ provide: ConfigurationDataService, useValue: configurationDataService },
],
schemas: [NO_ERRORS_SCHEMA],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.overrideComponent(BitstreamFormatsComponent, {
remove: { imports: [PaginationComponent] },
add: { imports: [TestPaginationComponent] },
})
.compileComponents();
},
@@ -384,12 +334,3 @@ describe('BitstreamFormatsComponent', () => {
});
});
});
@Component({
exportAs: 'paginationComponent',
selector: 'ds-pagination',
template: ``,
standalone: true,
})
export class TestPaginationComponent {
}

View File

@@ -8,10 +8,7 @@ import {
OnDestroy,
OnInit,
} from '@angular/core';
import {
Router,
RouterLink,
} from '@angular/router';
import { RouterLink } from '@angular/router';
import {
TranslateModule,
TranslateService,
@@ -74,7 +71,6 @@ export class BitstreamFormatsComponent implements OnInit, OnDestroy {
});
constructor(private notificationsService: NotificationsService,
private router: Router,
private translateService: TranslateService,
private bitstreamFormatService: BitstreamFormatDataService,
private paginationService: PaginationService,

View File

@@ -7,6 +7,7 @@ import {
} from 'rxjs';
import { map } from 'rxjs/operators';
import { environment } from '../../../../environments/environment.test';
import { getMockRequestService } from '../../../shared/mocks/request.service.mock';
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
@@ -88,7 +89,7 @@ describe('SearchConfigurationService', () => {
pageSize: 20,
}));
service = new SearchConfigurationService(routeService, paginationService as any, activatedRoute as any, linkService, halService, requestService, rdb);
service = new SearchConfigurationService(routeService, paginationService as any, activatedRoute as any, linkService, halService, requestService, rdb, environment);
});
describe('when the scope is called', () => {

View File

@@ -1,4 +1,5 @@
import {
Inject,
Injectable,
OnDestroy,
} from '@angular/core';
@@ -20,6 +21,10 @@ import {
take,
} from 'rxjs/operators';
import {
APP_CONFIG,
AppConfig,
} from '../../../../config/app-config.interface';
import {
hasNoValue,
hasValue,
@@ -29,6 +34,7 @@ import {
import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model';
import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils';
import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model';
import { FilterType } from '../../../shared/search/models/filter-type.model';
import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model';
import { SearchFilter } from '../../../shared/search/models/search-filter.model';
import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model';
@@ -56,12 +62,8 @@ import {
getFirstSucceededRemoteData,
} from '../operators';
import { ViewMode } from '../view-mode.model';
import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model';
import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model';
import { addOperatorToFilterValue } from '../../../shared/search/search.utils';
import { FilterConfig } from './search-filters/search-config.model';
import { FilterType } from '../../../shared/search/models/filter-type.model';
import {
FilterConfig,
SearchConfig,
SortConfig,
} from './search-filters/search-config.model';
@@ -126,24 +128,15 @@ export class SearchConfigurationService implements OnDestroy {
*/
protected subs: Map<string, Subscription[]> = new Map<string, Subscription[]>(null);
/**
* Initialize the search options
* @param {RouteService} routeService
* @param {PaginationService} paginationService
* @param {ActivatedRoute} route
* @param linkService
* @param halService
* @param requestService
* @param rdb
*/
constructor(protected routeService: RouteService,
protected paginationService: PaginationService,
protected route: ActivatedRoute,
protected linkService: LinkService,
protected halService: HALEndpointService,
protected requestService: RequestService,
protected rdb: RemoteDataBuildService) {
protected rdb: RemoteDataBuildService,
@Inject(APP_CONFIG) protected appConfig: AppConfig,
) {
this.initDefaults();
}
@@ -297,6 +290,7 @@ export class SearchConfigurationService implements OnDestroy {
return this.getConfigurationSearchConfig(configuration, scope).pipe(
map((searchConfiguration: SearchConfig) => {
return searchConfiguration.filters
.filter((filterConfig: FilterConfig) => this.appConfig.search.advancedFilters.filter.includes(filterConfig.filter))
.filter((filterConfig: FilterConfig) => filterConfig.type !== FilterType.range);
}),
);

View File

@@ -4,6 +4,7 @@ import {
} from 'jasmine-marbles';
import { of as observableOf } from 'rxjs';
import { environment } from '../../environments/environment.test';
import {
SortDirection,
SortOptions,
@@ -58,7 +59,7 @@ describe('MyDSpaceConfigurationService', () => {
const rdb: any = getMockRemoteDataBuildService();
beforeEach(() => {
service = new MyDSpaceConfigurationService(roleService, spy, paginationService as any, activatedRoute, linkService, halService, requestService, rdb);
service = new MyDSpaceConfigurationService(roleService, spy, paginationService as any, activatedRoute, linkService, halService, requestService, rdb, environment);
});
describe('when the scope is called', () => {

View File

@@ -1,4 +1,5 @@
import {
Inject,
Injectable,
InjectionToken,
} from '@angular/core';
@@ -12,6 +13,10 @@ import {
map,
} from 'rxjs/operators';
import {
APP_CONFIG,
AppConfig,
} from '../../config/app-config.interface';
import { LinkService } from '../core/cache/builders/link.service';
import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service';
import {
@@ -75,18 +80,6 @@ export class MyDSpaceConfigurationService extends SearchConfigurationService {
private isController$: Observable<boolean>;
private isSubmitter$: Observable<boolean>;
/**
* Initialize class
*
* @param {roleService} roleService
* @param {RouteService} routeService
* @param {PaginationService} paginationService
* @param {ActivatedRoute} route
* @param linkService
* @param halService
* @param requestService
* @param rdb
*/
constructor(protected roleService: RoleService,
protected routeService: RouteService,
protected paginationService: PaginationService,
@@ -94,9 +87,19 @@ export class MyDSpaceConfigurationService extends SearchConfigurationService {
protected linkService: LinkService,
protected halService: HALEndpointService,
protected requestService: RequestService,
protected rdb: RemoteDataBuildService) {
super(routeService, paginationService, route, linkService, halService, requestService, rdb);
protected rdb: RemoteDataBuildService,
@Inject(APP_CONFIG) protected appConfig: AppConfig,
) {
super(
routeService,
paginationService,
route,
linkService,
halService,
requestService,
rdb,
appConfig,
);
// override parent class initialization
this._defaults = null;

View File

@@ -13,15 +13,12 @@ import { TranslateModule } from '@ngx-translate/core';
import { APP_CONFIG } from '../../../../config/app-config.interface';
import { environment } from '../../../../environments/environment.test';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
import { SearchConfigurationServiceStub } from '../../testing/search-configuration-service.stub';
import { AdvancedSearchComponent } from '../advanced-search/advanced-search.component';
import { ThemedSearchFiltersComponent } from '../search-filters/themed-search-filters.component';
import { ThemedSearchSettingsComponent } from '../search-settings/themed-search-settings.component';
import { SearchSidebarComponent } from './search-sidebar.component';
import { NgbCollapseModule } from '@ng-bootstrap/ng-bootstrap';
import { By } from '@angular/platform-browser';
import { SearchConfigurationServiceStub } from '../../testing/search-configuration-service.stub';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service';
describe('SearchSidebarComponent', () => {
let comp: SearchSidebarComponent;
@@ -39,11 +36,12 @@ describe('SearchSidebarComponent', () => {
SearchSidebarComponent,
],
providers: [
{ provide: APP_CONFIG, useValue: environment },
{ provide: SearchConfigurationService, useValue: searchConfigurationService },
],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.overrideComponent(SearchSidebarComponent, {
}).overrideProvider(APP_CONFIG, {
useValue: environment,
}).overrideComponent(SearchSidebarComponent, {
remove:{
imports: [
AdvancedSearchComponent,
@@ -54,8 +52,7 @@ describe('SearchSidebarComponent', () => {
add: {
changeDetection: ChangeDetectionStrategy.Default,
},
})
.compileComponents(); // compile template and css
}).compileComponents();
}));
// synchronous beforeEach