mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-12 20:43:08 +00:00
79768: Update & add MetadataService unit tests
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { fakeAsync, tick } from '@angular/core/testing';
|
||||
import { Meta, Title } from '@angular/platform-browser';
|
||||
import { Router, NavigationEnd } from '@angular/router';
|
||||
import { NavigationEnd, Router } from '@angular/router';
|
||||
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
import { Observable, of } from 'rxjs';
|
||||
@@ -8,11 +8,8 @@ import { Observable, of } from 'rxjs';
|
||||
import { RemoteData } from '../data/remote-data';
|
||||
import { Item } from '../shared/item.model';
|
||||
|
||||
import { ItemMock, MockBitstream1, MockBitstream3, } from '../../shared/mocks/item.mock';
|
||||
import {
|
||||
createSuccessfulRemoteDataObject$,
|
||||
createSuccessfulRemoteDataObject
|
||||
} from '../../shared/remote-data.utils';
|
||||
import { ItemMock, MockBitstream1, MockBitstream3 } from '../../shared/mocks/item.mock';
|
||||
import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils';
|
||||
import { PaginatedList } from '../data/paginated-list.model';
|
||||
import { Bitstream } from '../shared/bitstream.model';
|
||||
import { MetadataValue } from '../shared/metadata.models';
|
||||
@@ -24,6 +21,11 @@ import { createPaginatedList } from '../../shared/testing/utils.test';
|
||||
import { getMockTranslateService } from '../../shared/mocks/translate.service.mock';
|
||||
import { DSONameService } from '../breadcrumbs/dso-name.service';
|
||||
import { HardRedirectService } from '../services/hard-redirect.service';
|
||||
import { getMockStore, MockStore } from '@ngrx/store/testing';
|
||||
import { CoreState } from '../core.reducers';
|
||||
import { MetaTagState } from './meta-tag.reducer';
|
||||
import { AddMetaTagAction, ClearMetaTagAction } from './meta-tag.actions';
|
||||
import { Community } from '../shared/community.model';
|
||||
|
||||
describe('MetadataService', () => {
|
||||
let metadataService: MetadataService;
|
||||
@@ -41,6 +43,10 @@ describe('MetadataService', () => {
|
||||
let hardRedirectService: HardRedirectService;
|
||||
|
||||
let router: Router;
|
||||
let store;
|
||||
|
||||
const initialState = { 'core': { metaTag: { tagsInUse: ['title', 'description'] }}};
|
||||
|
||||
|
||||
beforeEach(() => {
|
||||
rootService = jasmine.createSpyObj({
|
||||
@@ -53,7 +59,7 @@ describe('MetadataService', () => {
|
||||
findByItemAndName: mockBundleRD$([MockBitstream3])
|
||||
});
|
||||
translateService = getMockTranslateService();
|
||||
meta = jasmine.createSpyObj({
|
||||
meta = jasmine.createSpyObj('meta', {
|
||||
addTag: {},
|
||||
removeTag: {}
|
||||
});
|
||||
@@ -73,6 +79,11 @@ describe('MetadataService', () => {
|
||||
hardRedirectService = jasmine.createSpyObj( {
|
||||
getRequestOrigin: 'https://request.org',
|
||||
});
|
||||
|
||||
//@ts-ignore
|
||||
store = getMockStore({ initialState });
|
||||
spyOn(store, 'dispatch');
|
||||
|
||||
metadataService = new MetadataService(
|
||||
router,
|
||||
translateService,
|
||||
@@ -83,6 +94,7 @@ describe('MetadataService', () => {
|
||||
bitstreamDataService,
|
||||
undefined,
|
||||
rootService,
|
||||
store,
|
||||
hardRedirectService
|
||||
);
|
||||
});
|
||||
@@ -332,6 +344,30 @@ describe('MetadataService', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('tagstore', () => {
|
||||
beforeEach(fakeAsync(() => {
|
||||
(metadataService as any).processRouteChange({
|
||||
data: {
|
||||
value: {
|
||||
dso: createSuccessfulRemoteDataObject(ItemMock),
|
||||
}
|
||||
}
|
||||
});
|
||||
tick();
|
||||
}));
|
||||
|
||||
it('should remove previous tags on route change', fakeAsync(() => {
|
||||
expect(meta.removeTag).toHaveBeenCalledWith('property=\'title\'');
|
||||
expect(meta.removeTag).toHaveBeenCalledWith('property=\'description\'');
|
||||
}));
|
||||
|
||||
it('should clear all tags and add new ones on route change', () => {
|
||||
expect(store.dispatch.calls.argsFor(0)).toEqual([new ClearMetaTagAction()]);
|
||||
expect(store.dispatch.calls.argsFor(1)).toEqual([new AddMetaTagAction('title')]);
|
||||
expect(store.dispatch.calls.argsFor(2)).toEqual([new AddMetaTagAction('description')]);
|
||||
});
|
||||
});
|
||||
|
||||
const mockType = (mockItem: Item, type: string): Item => {
|
||||
const typedMockItem = Object.assign(new Item(), mockItem) as Item;
|
||||
typedMockItem.metadata['dc.type'] = [{ value: type }] as MetadataValue[];
|
||||
|
@@ -5,10 +5,10 @@ import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
||||
|
||||
import { TranslateService } from '@ngx-translate/core';
|
||||
|
||||
import { BehaviorSubject, combineLatest, Observable, of as observableOf, EMPTY } from 'rxjs';
|
||||
import { filter, map, take, switchMap, expand } from 'rxjs/operators';
|
||||
import { BehaviorSubject, combineLatest, EMPTY, Observable, of as observableOf } from 'rxjs';
|
||||
import { expand, filter, map, switchMap, take } from 'rxjs/operators';
|
||||
|
||||
import { hasValue, hasNoValue } from '../../shared/empty.util';
|
||||
import { hasNoValue, hasValue } from '../../shared/empty.util';
|
||||
import { DSONameService } from '../breadcrumbs/dso-name.service';
|
||||
import { BitstreamDataService } from '../data/bitstream-data.service';
|
||||
import { BitstreamFormatDataService } from '../data/bitstream-format-data.service';
|
||||
@@ -18,10 +18,7 @@ import { BitstreamFormat } from '../shared/bitstream-format.model';
|
||||
import { Bitstream } from '../shared/bitstream.model';
|
||||
import { DSpaceObject } from '../shared/dspace-object.model';
|
||||
import { Item } from '../shared/item.model';
|
||||
import {
|
||||
getFirstSucceededRemoteDataPayload,
|
||||
getFirstCompletedRemoteData
|
||||
} from '../shared/operators';
|
||||
import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload } from '../shared/operators';
|
||||
import { RootDataService } from '../data/root-data.service';
|
||||
import { getBitstreamDownloadRoute } from '../../app-routing-paths';
|
||||
import { BundleDataService } from '../data/bundle-data.service';
|
||||
@@ -31,11 +28,10 @@ import { PaginatedList } from '../data/paginated-list.model';
|
||||
import { URLCombiner } from '../url-combiner/url-combiner';
|
||||
import { HardRedirectService } from '../services/hard-redirect.service';
|
||||
import { MetaTagState } from './meta-tag.reducer';
|
||||
import { Store, createSelector, select, MemoizedSelector } from '@ngrx/store';
|
||||
import { createSelector, select, Store } from '@ngrx/store';
|
||||
import { AddMetaTagAction, ClearMetaTagAction } from './meta-tag.actions';
|
||||
import { coreSelector } from '../core.selectors';
|
||||
import { CoreState } from '../core.reducers';
|
||||
import { ObjectCacheEntry, ObjectCacheState } from '../cache/object-cache.reducer';
|
||||
|
||||
/**
|
||||
* The base selector function to select the metaTag section in the store
|
||||
@@ -84,7 +80,7 @@ export class MetadataService {
|
||||
private bitstreamDataService: BitstreamDataService,
|
||||
private bitstreamFormatDataService: BitstreamFormatDataService,
|
||||
private rootService: RootDataService,
|
||||
private store: Store<MetaTagState>,
|
||||
private store: Store<CoreState>,
|
||||
private hardRedirectService: HardRedirectService,
|
||||
) {
|
||||
}
|
||||
|
Reference in New Issue
Block a user