mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 01:54:15 +00:00
Fixed issue with DataService's delete method that used wrong uuid to make the request
This commit is contained in:
@@ -230,10 +230,10 @@ describe('BitstreamFormatsComponent', () => {
|
||||
comp.deleteFormats();
|
||||
|
||||
expect(bitstreamFormatService.clearBitStreamFormatRequests).toHaveBeenCalled();
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat1);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat2);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat3);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat4);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat1.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat2.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat3.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat4.id);
|
||||
|
||||
expect(notificationsServiceStub.success).toHaveBeenCalledWith('admin.registries.bitstream-formats.delete.success.head',
|
||||
'admin.registries.bitstream-formats.delete.success.amount');
|
||||
@@ -276,10 +276,10 @@ describe('BitstreamFormatsComponent', () => {
|
||||
comp.deleteFormats();
|
||||
|
||||
expect(bitstreamFormatService.clearBitStreamFormatRequests).toHaveBeenCalled();
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat1);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat2);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat3);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat4);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat1.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat2.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat3.id);
|
||||
expect(bitstreamFormatService.delete).toHaveBeenCalledWith(bitstreamFormat4.id);
|
||||
|
||||
expect(notificationsServiceStub.error).toHaveBeenCalledWith('admin.registries.bitstream-formats.delete.failure.head',
|
||||
'admin.registries.bitstream-formats.delete.failure.amount');
|
||||
|
@@ -64,7 +64,7 @@ export class BitstreamFormatsComponent implements OnInit {
|
||||
const tasks$ = [];
|
||||
for (const format of formats) {
|
||||
if (hasValue(format.id)) {
|
||||
tasks$.push(this.bitstreamFormatService.delete(format));
|
||||
tasks$.push(this.bitstreamFormatService.delete(format.id));
|
||||
}
|
||||
}
|
||||
zip(...tasks$).subscribe((results: boolean[]) => {
|
||||
|
@@ -220,7 +220,7 @@ describe('ItemDeleteComponent', () => {
|
||||
spyOn(comp, 'notify');
|
||||
comp.performAction();
|
||||
expect(mockItemDataService.delete)
|
||||
.toHaveBeenCalledWith(mockItem, types.filter((type) => typesSelection[type]).map((type) => type.id));
|
||||
.toHaveBeenCalledWith(mockItem.id, types.filter((type) => typesSelection[type]).map((type) => type.id));
|
||||
expect(comp.notify).toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
|
@@ -312,7 +312,7 @@ export class ItemDeleteComponent
|
||||
)
|
||||
),
|
||||
).subscribe((types) => {
|
||||
this.itemDataService.delete(this.item, types).pipe(first()).subscribe(
|
||||
this.itemDataService.delete(this.item.id, types).pipe(first()).subscribe(
|
||||
(succeeded: boolean) => {
|
||||
this.notify(succeeded);
|
||||
}
|
||||
@@ -322,7 +322,7 @@ export class ItemDeleteComponent
|
||||
|
||||
/**
|
||||
* When the item is successfully delete, navigate to the homepage, otherwise navigate back to the item edit page
|
||||
* @param response
|
||||
* @param succeeded
|
||||
*/
|
||||
notify(succeeded: boolean) {
|
||||
if (succeeded) {
|
||||
|
@@ -282,7 +282,7 @@ describe('BitstreamFormatDataService', () => {
|
||||
format.id = 'format-id';
|
||||
|
||||
const expected = cold('(b|)', {b: true});
|
||||
const result = service.delete(format);
|
||||
const result = service.delete(format.id);
|
||||
|
||||
expect(result).toBeObservable(expected);
|
||||
});
|
||||
|
@@ -154,19 +154,19 @@ export class BitstreamFormatDataService extends DataService<BitstreamFormat> {
|
||||
|
||||
/**
|
||||
* Delete an existing DSpace Object on the server
|
||||
* @param format The DSpace Object to be removed
|
||||
* @param formatID The DSpace Object'id to be removed
|
||||
* Return an observable that emits true when the deletion was successful, false when it failed
|
||||
*/
|
||||
delete(format: BitstreamFormat): Observable<boolean> {
|
||||
delete(formatID: string): Observable<boolean> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
|
||||
const hrefObs = this.halService.getEndpoint(this.linkPath).pipe(
|
||||
map((endpoint: string) => this.getIDHref(endpoint, format.id)));
|
||||
map((endpoint: string) => this.getIDHref(endpoint, formatID)));
|
||||
|
||||
hrefObs.pipe(
|
||||
find((href: string) => hasValue(href)),
|
||||
map((href: string) => {
|
||||
const request = new DeleteByIDRequest(requestId, href, format.id);
|
||||
const request = new DeleteByIDRequest(requestId, href, formatID);
|
||||
this.requestService.configure(request);
|
||||
})
|
||||
).subscribe();
|
||||
|
@@ -152,7 +152,11 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
/**
|
||||
* Returns {@link RemoteData} of all object with a list of {@link FollowLinkConfig}, to indicate which embedded
|
||||
* info should be added to the objects
|
||||
*
|
||||
* @param options Find list options object
|
||||
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which {@link HALLink}s should be automatically resolved
|
||||
* @return {Observable<RemoteData<PaginatedList<T>>>}
|
||||
* Return an observable that emits object list
|
||||
*/
|
||||
findAll(options: FindListOptions = {}, ...linksToFollow: Array<FollowLinkConfig<T>>): Observable<RemoteData<PaginatedList<T>>> {
|
||||
return this.findList(this.getFindAllHref(options), options, ...linksToFollow);
|
||||
@@ -162,6 +166,7 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
* Returns an observable of {@link RemoteData} of an object, based on href observable,
|
||||
* with a list of {@link FollowLinkConfig}, to automatically resolve {@link HALLink}s of the object
|
||||
* @param href$ Observable of href of object we want to retrieve
|
||||
* @param options Find list options object
|
||||
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which {@link HALLink}s should be automatically resolved
|
||||
*/
|
||||
protected findList(href$, options: FindListOptions, ...linksToFollow: Array<FollowLinkConfig<T>>) {
|
||||
@@ -231,6 +236,7 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
* Returns a list of observables of {@link RemoteData} of objects, based on an href, with a list of {@link FollowLinkConfig},
|
||||
* to automatically resolve {@link HALLink}s of the object
|
||||
* @param href The url of object we want to retrieve
|
||||
* @param findListOptions Find list options object
|
||||
* @param linksToFollow List of {@link FollowLinkConfig} that indicate which {@link HALLink}s should be automatically resolved
|
||||
*/
|
||||
findAllByHref(href: string, findListOptions: FindListOptions = {}, ...linksToFollow: Array<FollowLinkConfig<T>>): Observable<RemoteData<PaginatedList<T>>> {
|
||||
@@ -259,6 +265,7 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
*
|
||||
* @param searchMethod The search method for the object
|
||||
* @param options The [[FindListOptions]] object
|
||||
* @param linksToFollow The array of [[FollowLinkConfig]]
|
||||
* @return {Observable<RemoteData<PaginatedList<T>>}
|
||||
* Return an observable that emits response from the server
|
||||
*/
|
||||
@@ -367,16 +374,16 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
|
||||
/**
|
||||
* Delete an existing DSpace Object on the server
|
||||
* @param dso The DSpace Object to be removed
|
||||
* @param dsoID The DSpace Object' id to be removed
|
||||
* @param copyVirtualMetadata (optional parameter) the identifiers of the relationship types for which the virtual
|
||||
* metadata should be saved as real metadata
|
||||
* @return an observable that emits true when the deletion was successful, false when it failed
|
||||
*/
|
||||
delete(dso: T, copyVirtualMetadata?: string[]): Observable<boolean> {
|
||||
delete(dsoID: string, copyVirtualMetadata?: string[]): Observable<boolean> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
|
||||
const hrefObs = this.halService.getEndpoint(this.linkPath).pipe(
|
||||
map((endpoint: string) => this.getIDHref(endpoint, dso.uuid)));
|
||||
map((endpoint: string) => this.getIDHref(endpoint, dsoID)));
|
||||
|
||||
hrefObs.pipe(
|
||||
find((href: string) => hasValue(href)),
|
||||
@@ -388,7 +395,7 @@ export abstract class DataService<T extends CacheableObject> {
|
||||
+ id
|
||||
);
|
||||
}
|
||||
const request = new DeleteByIDRequest(requestId, href, dso.uuid);
|
||||
const request = new DeleteByIDRequest(requestId, href, dsoID);
|
||||
this.requestService.configure(request);
|
||||
})
|
||||
).subscribe();
|
||||
|
@@ -125,7 +125,7 @@ describe('DeleteComColPageComponent', () => {
|
||||
it('should call delete on the data service', () => {
|
||||
comp.onConfirm(data1);
|
||||
fixture.detectChanges();
|
||||
expect(dsoDataService.delete).toHaveBeenCalledWith(data1);
|
||||
expect(dsoDataService.delete).toHaveBeenCalledWith(data1.id);
|
||||
});
|
||||
});
|
||||
|
||||
|
@@ -43,7 +43,7 @@ export class DeleteComColPageComponent<TDomain extends DSpaceObject> implements
|
||||
* Deletes an existing DSO and redirects to the home page afterwards, showing a notification that states whether or not the deletion was successful
|
||||
*/
|
||||
onConfirm(dso: TDomain) {
|
||||
this.dsoDataService.delete(dso)
|
||||
this.dsoDataService.delete(dso.id)
|
||||
.pipe(first())
|
||||
.subscribe((success: boolean) => {
|
||||
if (success) {
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import { ChangeDetectionStrategy, Injector, NO_ERRORS_SCHEMA } from '@angular/core';
|
||||
import { async, ComponentFixture, fakeAsync, TestBed } from '@angular/core/testing';
|
||||
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
import { Router } from '@angular/router';
|
||||
import { By } from '@angular/platform-browser';
|
||||
|
||||
@@ -141,7 +141,7 @@ describe('WorkspaceitemActionsComponent', () => {
|
||||
fixture.detectChanges();
|
||||
|
||||
fixture.whenStable().then(() => {
|
||||
expect(mockDataService.delete).toHaveBeenCalledWith(mockObject);
|
||||
expect(mockDataService.delete).toHaveBeenCalledWith(mockObject.id);
|
||||
});
|
||||
|
||||
});
|
||||
|
@@ -1,4 +1,4 @@
|
||||
import { Component, Injector, Input, OnDestroy } from '@angular/core';
|
||||
import { Component, Injector, Input } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
@@ -62,7 +62,7 @@ export class WorkspaceitemActionsComponent extends MyDSpaceActionsComponent<Work
|
||||
(result) => {
|
||||
if (result === 'ok') {
|
||||
this.processingDelete$.next(true);
|
||||
this.objectDataService.delete(this.object)
|
||||
this.objectDataService.delete(this.object.id)
|
||||
.subscribe((response: boolean) => {
|
||||
this.processingDelete$.next(false);
|
||||
this.handleActionResponse(response);
|
||||
|
Reference in New Issue
Block a user