101623: Fix browse-related tests by replacing abstract class

This commit is contained in:
Nona Luypaert
2023-05-23 17:40:07 +02:00
parent d9b0eebc18
commit 2f0f69710e
5 changed files with 64 additions and 18 deletions

View File

@@ -2,8 +2,8 @@ import { first } from 'rxjs/operators';
import { BrowseByGuard } from './browse-by-guard'; import { BrowseByGuard } from './browse-by-guard';
import { of as observableOf } from 'rxjs'; import { of as observableOf } from 'rxjs';
import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
import { BrowseDefinition } from '../core/shared/browse-definition.model';
import { BrowseByDataType } from './browse-by-switcher/browse-by-decorator'; import { BrowseByDataType } from './browse-by-switcher/browse-by-decorator';
import { ValueListBrowseDefinition } from '../core/shared/value-list-browse-definition.model';
describe('BrowseByGuard', () => { describe('BrowseByGuard', () => {
describe('canActivate', () => { describe('canActivate', () => {
@@ -18,7 +18,7 @@ describe('BrowseByGuard', () => {
const id = 'author'; const id = 'author';
const scope = '1234-65487-12354-1235'; const scope = '1234-65487-12354-1235';
const value = 'Filter'; const value = 'Filter';
const browseDefinition = Object.assign(new BrowseDefinition(), { type: BrowseByDataType.Metadata, metadataKeys: ['dc.contributor'] }); const browseDefinition = Object.assign(new ValueListBrowseDefinition(), { type: BrowseByDataType.Metadata, metadataKeys: ['dc.contributor'] });
beforeEach(() => { beforeEach(() => {
dsoService = { dsoService = {

View File

@@ -3,9 +3,11 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
import { NO_ERRORS_SCHEMA } from '@angular/core'; import { NO_ERRORS_SCHEMA } from '@angular/core';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
import { BROWSE_BY_COMPONENT_FACTORY, BrowseByDataType } from './browse-by-decorator'; import { BROWSE_BY_COMPONENT_FACTORY, BrowseByDataType } from './browse-by-decorator';
import { BrowseDefinition } from '../../core/shared/browse-definition.model';
import { BehaviorSubject } from 'rxjs'; import { BehaviorSubject } from 'rxjs';
import { ThemeService } from '../../shared/theme-support/theme.service'; import { ThemeService } from '../../shared/theme-support/theme.service';
import { FlatBrowseDefinition } from '../../core/shared/flat-browse-definition.model';
import { ValueListBrowseDefinition } from '../../core/shared/value-list-browse-definition.model';
import { NonHierarchicalBrowseDefinition } from '../../core/shared/non-hierarchical-browse-definition';
describe('BrowseBySwitcherComponent', () => { describe('BrowseBySwitcherComponent', () => {
let comp: BrowseBySwitcherComponent; let comp: BrowseBySwitcherComponent;
@@ -13,33 +15,33 @@ describe('BrowseBySwitcherComponent', () => {
const types = [ const types = [
Object.assign( Object.assign(
new BrowseDefinition(), { new FlatBrowseDefinition(), {
id: 'title', id: 'title',
dataType: BrowseByDataType.Title, dataType: BrowseByDataType.Title,
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new FlatBrowseDefinition(), {
id: 'dateissued', id: 'dateissued',
dataType: BrowseByDataType.Date, dataType: BrowseByDataType.Date,
metadataKeys: ['dc.date.issued'] metadataKeys: ['dc.date.issued']
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new ValueListBrowseDefinition(), {
id: 'author', id: 'author',
dataType: BrowseByDataType.Metadata, dataType: BrowseByDataType.Metadata,
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new ValueListBrowseDefinition(), {
id: 'subject', id: 'subject',
dataType: BrowseByDataType.Metadata, dataType: BrowseByDataType.Metadata,
} }
), ),
]; ];
const data = new BehaviorSubject(createDataWithBrowseDefinition(new BrowseDefinition())); const data = new BehaviorSubject(createDataWithBrowseDefinition(new FlatBrowseDefinition()));
const activatedRouteStub = { const activatedRouteStub = {
data data
@@ -70,7 +72,7 @@ describe('BrowseBySwitcherComponent', () => {
comp = fixture.componentInstance; comp = fixture.componentInstance;
})); }));
types.forEach((type: BrowseDefinition) => { types.forEach((type: NonHierarchicalBrowseDefinition) => {
describe(`when switching to a browse-by page for "${type.id}"`, () => { describe(`when switching to a browse-by page for "${type.id}"`, () => {
beforeEach(() => { beforeEach(() => {
data.next(createDataWithBrowseDefinition(type)); data.next(createDataWithBrowseDefinition(type));

View File

@@ -4,17 +4,36 @@ import { BrowseByTaxonomyPageComponent } from './browse-by-taxonomy-page.compone
import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model'; import { VocabularyEntryDetail } from '../../core/submission/vocabularies/models/vocabulary-entry-detail.model';
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 { BehaviorSubject } from 'rxjs';
import { createDataWithBrowseDefinition } from '../browse-by-switcher/browse-by-switcher.component.spec';
import { HierarchicalBrowseDefinition } from '../../core/shared/hierarchical-browse-definition.model';
import { ThemeService } from '../../shared/theme-support/theme.service';
describe('BrowseByTaxonomyPageComponent', () => { describe('BrowseByTaxonomyPageComponent', () => {
let component: BrowseByTaxonomyPageComponent; let component: BrowseByTaxonomyPageComponent;
let fixture: ComponentFixture<BrowseByTaxonomyPageComponent>; let fixture: ComponentFixture<BrowseByTaxonomyPageComponent>;
let themeService: ThemeService;
let detail1: VocabularyEntryDetail; let detail1: VocabularyEntryDetail;
let detail2: VocabularyEntryDetail; let detail2: VocabularyEntryDetail;
const data = new BehaviorSubject(createDataWithBrowseDefinition(new HierarchicalBrowseDefinition()));
const activatedRouteStub = {
data
};
beforeEach(async () => { beforeEach(async () => {
themeService = jasmine.createSpyObj('themeService', {
getThemeName: 'dspace',
});
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
imports: [ TranslateModule.forRoot() ], imports: [ TranslateModule.forRoot() ],
declarations: [ BrowseByTaxonomyPageComponent ], declarations: [ BrowseByTaxonomyPageComponent ],
providers: [
{ provide: ActivatedRoute, useValue: activatedRouteStub },
{ provide: ThemeService, useValue: themeService },
],
schemas: [NO_ERRORS_SCHEMA] schemas: [NO_ERRORS_SCHEMA]
}) })
.compileComponents(); .compileComponents();

View File

@@ -6,13 +6,15 @@ import { getMockRequestService } from '../../shared/mocks/request.service.mock';
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub';
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
import { RequestService } from '../data/request.service'; import { RequestService } from '../data/request.service';
import { BrowseDefinition } from '../shared/browse-definition.model';
import { BrowseEntrySearchOptions } from './browse-entry-search-options.model'; import { BrowseEntrySearchOptions } from './browse-entry-search-options.model';
import { BrowseService } from './browse.service'; import { BrowseService } from './browse.service';
import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
import { createPaginatedList, getFirstUsedArgumentOfSpyMethod } from '../../shared/testing/utils.test'; import { createPaginatedList, getFirstUsedArgumentOfSpyMethod } from '../../shared/testing/utils.test';
import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock';
import { RequestEntry } from '../data/request-entry.model'; import { RequestEntry } from '../data/request-entry.model';
import { FlatBrowseDefinition } from '../shared/flat-browse-definition.model';
import { ValueListBrowseDefinition } from '../shared/value-list-browse-definition.model';
import { HierarchicalBrowseDefinition } from '../shared/hierarchical-browse-definition.model';
describe('BrowseService', () => { describe('BrowseService', () => {
let scheduler: TestScheduler; let scheduler: TestScheduler;
@@ -23,7 +25,7 @@ describe('BrowseService', () => {
const browsesEndpointURL = 'https://rest.api/browses'; const browsesEndpointURL = 'https://rest.api/browses';
const halService: any = new HALEndpointServiceStub(browsesEndpointURL); const halService: any = new HALEndpointServiceStub(browsesEndpointURL);
const browseDefinitions = [ const browseDefinitions = [
Object.assign(new BrowseDefinition(), { Object.assign(new FlatBrowseDefinition(), {
id: 'date', id: 'date',
metadataBrowse: false, metadataBrowse: false,
sortOptions: [ sortOptions: [
@@ -50,7 +52,7 @@ describe('BrowseService', () => {
items: { href: 'https://rest.api/discover/browses/dateissued/items' } items: { href: 'https://rest.api/discover/browses/dateissued/items' }
} }
}), }),
Object.assign(new BrowseDefinition(), { Object.assign(new ValueListBrowseDefinition(), {
id: 'author', id: 'author',
metadataBrowse: true, metadataBrowse: true,
sortOptions: [ sortOptions: [
@@ -78,7 +80,23 @@ describe('BrowseService', () => {
entries: { href: 'https://rest.api/discover/browses/author/entries' }, entries: { href: 'https://rest.api/discover/browses/author/entries' },
items: { href: 'https://rest.api/discover/browses/author/items' } items: { href: 'https://rest.api/discover/browses/author/items' }
} }
}) }),
Object.assign(new HierarchicalBrowseDefinition(), {
id: 'srsc',
browseType: 'hierarchicalBrowse',
facetType: 'subject',
vocabulary: 'srsc',
type: 'browse',
metadata: [
'dc.subject'
],
_links: {
vocabulary: { 'href': 'https://rest.api/submission/vocabularies/srsc/' },
items: { 'href': 'https://rest.api/discover/browses/srsc/items' },
entries: { 'href': 'https://rest.api/discover/browses/srsc/entries' },
self: { 'href': 'https://rest.api/discover/browses/srsc' }
}
}),
]; ];
let browseDefinitionDataService; let browseDefinitionDataService;

View File

@@ -16,7 +16,6 @@ import { RouterTestingModule } from '@angular/router/testing';
import { BrowseService } from '../core/browse/browse.service'; import { BrowseService } from '../core/browse/browse.service';
import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils';
import { buildPaginatedList } from '../core/data/paginated-list.model'; import { buildPaginatedList } from '../core/data/paginated-list.model';
import { BrowseDefinition } from '../core/shared/browse-definition.model';
import { BrowseByDataType } from '../browse-by/browse-by-switcher/browse-by-decorator'; import { BrowseByDataType } from '../browse-by/browse-by-switcher/browse-by-decorator';
import { Item } from '../core/shared/item.model'; import { Item } from '../core/shared/item.model';
import { AuthorizationDataService } from '../core/data/feature-authorization/authorization-data.service'; import { AuthorizationDataService } from '../core/data/feature-authorization/authorization-data.service';
@@ -28,6 +27,9 @@ import { authReducer } from '../core/auth/auth.reducer';
import { provideMockStore } from '@ngrx/store/testing'; import { provideMockStore } from '@ngrx/store/testing';
import { AuthTokenInfo } from '../core/auth/models/auth-token-info.model'; import { AuthTokenInfo } from '../core/auth/models/auth-token-info.model';
import { EPersonMock } from '../shared/testing/eperson.mock'; import { EPersonMock } from '../shared/testing/eperson.mock';
import { FlatBrowseDefinition } from '../core/shared/flat-browse-definition.model';
import { ValueListBrowseDefinition } from '../core/shared/value-list-browse-definition.model';
import { HierarchicalBrowseDefinition } from '../core/shared/hierarchical-browse-definition.model';
let comp: NavbarComponent; let comp: NavbarComponent;
let fixture: ComponentFixture<NavbarComponent>; let fixture: ComponentFixture<NavbarComponent>;
@@ -66,30 +68,35 @@ describe('NavbarComponent', () => {
beforeEach(waitForAsync(() => { beforeEach(waitForAsync(() => {
browseDefinitions = [ browseDefinitions = [
Object.assign( Object.assign(
new BrowseDefinition(), { new FlatBrowseDefinition(), {
id: 'title', id: 'title',
dataType: BrowseByDataType.Title, dataType: BrowseByDataType.Title,
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new FlatBrowseDefinition(), {
id: 'dateissued', id: 'dateissued',
dataType: BrowseByDataType.Date, dataType: BrowseByDataType.Date,
metadataKeys: ['dc.date.issued'] metadataKeys: ['dc.date.issued']
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new ValueListBrowseDefinition(), {
id: 'author', id: 'author',
dataType: BrowseByDataType.Metadata, dataType: BrowseByDataType.Metadata,
} }
), ),
Object.assign( Object.assign(
new BrowseDefinition(), { new ValueListBrowseDefinition(), {
id: 'subject', id: 'subject',
dataType: BrowseByDataType.Metadata, dataType: BrowseByDataType.Metadata,
} }
), ),
Object.assign(
new HierarchicalBrowseDefinition(), {
id: 'srsc',
}
),
]; ];
initialState = { initialState = {
core: { core: {