mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
117803: Add ItemBitsreamsService tests
This commit is contained in:
@@ -0,0 +1,28 @@
|
|||||||
|
export class ObjectUpdatesServiceStub {
|
||||||
|
|
||||||
|
initialize = jasmine.createSpy('initialize');
|
||||||
|
saveFieldUpdate = jasmine.createSpy('saveFieldUpdate');
|
||||||
|
getObjectEntry = jasmine.createSpy('getObjectEntry');
|
||||||
|
getFieldState = jasmine.createSpy('getFieldState');
|
||||||
|
getFieldUpdates = jasmine.createSpy('getFieldUpdates');
|
||||||
|
getFieldUpdatesExclusive = jasmine.createSpy('getFieldUpdatesExclusive');
|
||||||
|
isValid = jasmine.createSpy('isValid');
|
||||||
|
isValidPage = jasmine.createSpy('isValidPage');
|
||||||
|
saveAddFieldUpdate = jasmine.createSpy('saveAddFieldUpdate');
|
||||||
|
saveRemoveFieldUpdate = jasmine.createSpy('saveRemoveFieldUpdate');
|
||||||
|
saveChangeFieldUpdate = jasmine.createSpy('saveChangeFieldUpdate');
|
||||||
|
isSelectedVirtualMetadata = jasmine.createSpy('isSelectedVirtualMetadata');
|
||||||
|
setSelectedVirtualMetadata = jasmine.createSpy('setSelectedVirtualMetadata');
|
||||||
|
setEditableFieldUpdate = jasmine.createSpy('setEditableFieldUpdate');
|
||||||
|
setValidFieldUpdate = jasmine.createSpy('setValidFieldUpdate');
|
||||||
|
discardFieldUpdates = jasmine.createSpy('discardFieldUpdates');
|
||||||
|
discardAllFieldUpdates = jasmine.createSpy('discardAllFieldUpdates');
|
||||||
|
reinstateFieldUpdates = jasmine.createSpy('reinstateFieldUpdates');
|
||||||
|
removeSingleFieldUpdate = jasmine.createSpy('removeSingleFieldUpdate');
|
||||||
|
getUpdateFields = jasmine.createSpy('getUpdateFields');
|
||||||
|
hasUpdates = jasmine.createSpy('hasUpdates');
|
||||||
|
isReinstatable = jasmine.createSpy('isReinstatable');
|
||||||
|
getLastModified = jasmine.createSpy('getLastModified');
|
||||||
|
createPatch = jasmine.createSpy('getPatch');
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,129 @@
|
|||||||
|
import { ItemBitstreamsService } from './item-bitstreams.service';
|
||||||
|
import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub';
|
||||||
|
import { getMockTranslateService } from '../../../shared/mocks/translate.service.mock';
|
||||||
|
import { ObjectUpdatesServiceStub } from '../../../core/data/object-updates/object-updates.service.stub';
|
||||||
|
import { BitstreamDataServiceStub } from '../../../shared/testing/bitstream-data-service.stub';
|
||||||
|
import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock';
|
||||||
|
import { NotificationsService } from '../../../shared/notifications/notifications.service';
|
||||||
|
import { ObjectUpdatesService } from '../../../core/data/object-updates/object-updates.service';
|
||||||
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { BitstreamDataService } from '../../../core/data/bitstream-data.service';
|
||||||
|
import { DSONameService } from '../../../core/breadcrumbs/dso-name.service';
|
||||||
|
import { Bitstream } from '../../../core/shared/bitstream.model';
|
||||||
|
import { BitstreamFormat } from '../../../core/shared/bitstream-format.model';
|
||||||
|
import {
|
||||||
|
createSuccessfulRemoteDataObject$,
|
||||||
|
createFailedRemoteDataObject,
|
||||||
|
createSuccessfulRemoteDataObject
|
||||||
|
} from '../../../shared/remote-data.utils';
|
||||||
|
|
||||||
|
describe('ItemBitstreamsService', () => {
|
||||||
|
let service: ItemBitstreamsService;
|
||||||
|
let notificationsService: NotificationsService;
|
||||||
|
let translateService: TranslateService;
|
||||||
|
let objectUpdatesService: ObjectUpdatesService;
|
||||||
|
let bitstreamDataService: BitstreamDataService;
|
||||||
|
let dsoNameService: DSONameService;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
notificationsService = new NotificationsServiceStub() as any;
|
||||||
|
translateService = getMockTranslateService();
|
||||||
|
objectUpdatesService = new ObjectUpdatesServiceStub() as any;
|
||||||
|
bitstreamDataService = new BitstreamDataServiceStub() as any;
|
||||||
|
dsoNameService = new DSONameServiceMock() as any;
|
||||||
|
|
||||||
|
service = new ItemBitstreamsService(
|
||||||
|
notificationsService,
|
||||||
|
translateService,
|
||||||
|
objectUpdatesService,
|
||||||
|
bitstreamDataService,
|
||||||
|
dsoNameService,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('displayNotifications', () => {
|
||||||
|
it('should display an error notification if a response failed', () => {
|
||||||
|
const responses = [
|
||||||
|
createFailedRemoteDataObject(),
|
||||||
|
];
|
||||||
|
|
||||||
|
const key = 'some.key';
|
||||||
|
|
||||||
|
service.displayNotifications(key, responses);
|
||||||
|
|
||||||
|
expect(notificationsService.success).not.toHaveBeenCalled();
|
||||||
|
expect(notificationsService.error).toHaveBeenCalled();
|
||||||
|
expect(translateService.instant).toHaveBeenCalledWith('some.key.failed.title');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should display a success notification if a response succeeded', () => {
|
||||||
|
const responses = [
|
||||||
|
createSuccessfulRemoteDataObject(undefined),
|
||||||
|
];
|
||||||
|
|
||||||
|
const key = 'some.key';
|
||||||
|
|
||||||
|
service.displayNotifications(key, responses);
|
||||||
|
|
||||||
|
expect(notificationsService.success).toHaveBeenCalled();
|
||||||
|
expect(notificationsService.error).not.toHaveBeenCalled();
|
||||||
|
expect(translateService.instant).toHaveBeenCalledWith('some.key.saved.title');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should display both notifications if some failed and some succeeded', () => {
|
||||||
|
const responses = [
|
||||||
|
createFailedRemoteDataObject(),
|
||||||
|
createSuccessfulRemoteDataObject(undefined),
|
||||||
|
];
|
||||||
|
|
||||||
|
const key = 'some.key';
|
||||||
|
|
||||||
|
service.displayNotifications(key, responses);
|
||||||
|
|
||||||
|
expect(notificationsService.success).toHaveBeenCalled();
|
||||||
|
expect(notificationsService.error).toHaveBeenCalled();
|
||||||
|
expect(translateService.instant).toHaveBeenCalledWith('some.key.saved.title');
|
||||||
|
expect(translateService.instant).toHaveBeenCalledWith('some.key.saved.title');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('mapBitstreamsToTableEntries', () => {
|
||||||
|
it('should correctly map a Bitstream to a BitstreamTableEntry', () => {
|
||||||
|
const format: BitstreamFormat = new BitstreamFormat();
|
||||||
|
|
||||||
|
const bitstream: Bitstream = Object.assign(new Bitstream(), {
|
||||||
|
uuid: 'testUUID',
|
||||||
|
format: createSuccessfulRemoteDataObject$(format),
|
||||||
|
});
|
||||||
|
|
||||||
|
spyOn(dsoNameService, 'getName').and.returnValue('Test Name');
|
||||||
|
spyOn(bitstream, 'firstMetadataValue').and.returnValue('description');
|
||||||
|
|
||||||
|
const tableEntry = service.mapBitstreamsToTableEntries([bitstream])[0];
|
||||||
|
|
||||||
|
expect(tableEntry.name).toEqual('Test Name');
|
||||||
|
expect(tableEntry.nameStripped).toEqual('TestName');
|
||||||
|
expect(tableEntry.bitstream).toBe(bitstream);
|
||||||
|
expect(tableEntry.id).toEqual('testUUID');
|
||||||
|
expect(tableEntry.description).toEqual('description');
|
||||||
|
expect(tableEntry.downloadUrl).toEqual('/bitstreams/testUUID/download');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('nameToHeader', () => {
|
||||||
|
it('should correctly transform a string to an appropriate header ID', () => {
|
||||||
|
const stringA = 'Test String';
|
||||||
|
const stringAResult = 'TestString';
|
||||||
|
expect(service.nameToHeader(stringA)).toEqual(stringAResult);
|
||||||
|
|
||||||
|
const stringB = 'Test String Two';
|
||||||
|
const stringBResult = 'TestStringTwo';
|
||||||
|
expect(service.nameToHeader(stringB)).toEqual(stringBResult);
|
||||||
|
|
||||||
|
const stringC = 'Test String Three';
|
||||||
|
const stringCResult = 'TestStringThree';
|
||||||
|
expect(service.nameToHeader(stringC)).toEqual(stringCResult);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
Reference in New Issue
Block a user