mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-10 03:23:07 +00:00
Move SubmissionRestService to submission core dir
This commit is contained in:
@@ -68,7 +68,7 @@ import { WorkflowitemDataService } from './submission/workflowitem-data.service'
|
||||
import { NotificationsService } from '../shared/notifications/notifications.service';
|
||||
import { UploaderService } from '../shared/uploader/uploader.service';
|
||||
import { FileService } from './shared/file.service';
|
||||
import { SubmissionRestService } from '../submission/submission-rest.service';
|
||||
import { SubmissionRestService } from './submission/submission-rest.service';
|
||||
import { BrowseItemsResponseParsingService } from './data/browse-items-response-parsing-service';
|
||||
import { DSpaceObjectDataService } from './data/dspace-object-data.service';
|
||||
import { MetadataschemaParsingService } from './data/metadataschema-parsing.service';
|
||||
|
@@ -2,18 +2,18 @@ import { TestScheduler } from 'rxjs/testing';
|
||||
import { getTestScheduler } from 'jasmine-marbles';
|
||||
|
||||
import { SubmissionRestService } from './submission-rest.service';
|
||||
import { RequestService } from '../core/data/request.service';
|
||||
import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service';
|
||||
import { getMockRequestService } from '../shared/mocks/mock-request.service';
|
||||
import { getMockRemoteDataBuildService } from '../shared/mocks/mock-remote-data-build.service';
|
||||
import { HALEndpointServiceStub } from '../shared/testing/hal-endpoint-service-stub';
|
||||
import { RequestService } from '../data/request.service';
|
||||
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||
import { getMockRequestService } from '../../shared/mocks/mock-request.service';
|
||||
import { getMockRemoteDataBuildService } from '../../shared/mocks/mock-remote-data-build.service';
|
||||
import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service-stub';
|
||||
import {
|
||||
SubmissionDeleteRequest,
|
||||
SubmissionPatchRequest,
|
||||
SubmissionPostRequest,
|
||||
SubmissionRequest
|
||||
} from '../core/data/request.models';
|
||||
import { FormFieldMetadataValueObject } from '../shared/form/builder/models/form-field-metadata-value.model';
|
||||
} from '../data/request.models';
|
||||
import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model';
|
||||
|
||||
describe('SubmissionRestService test suite', () => {
|
||||
let scheduler: TestScheduler;
|
@@ -3,8 +3,8 @@ import { Injectable } from '@angular/core';
|
||||
import { merge as observableMerge, Observable, throwError as observableThrowError } from 'rxjs';
|
||||
import { distinctUntilChanged, filter, flatMap, map, mergeMap, tap } from 'rxjs/operators';
|
||||
|
||||
import { RequestService } from '../core/data/request.service';
|
||||
import { isNotEmpty } from '../shared/empty.util';
|
||||
import { RequestService } from '../data/request.service';
|
||||
import { isNotEmpty } from '../../shared/empty.util';
|
||||
import {
|
||||
DeleteRequest,
|
||||
PostRequest,
|
||||
@@ -13,14 +13,17 @@ import {
|
||||
SubmissionPatchRequest,
|
||||
SubmissionPostRequest,
|
||||
SubmissionRequest
|
||||
} from '../core/data/request.models';
|
||||
import { SubmitDataResponseDefinitionObject } from '../core/shared/submit-data-response-definition.model';
|
||||
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
|
||||
import { HALEndpointService } from '../core/shared/hal-endpoint.service';
|
||||
import { RemoteDataBuildService } from '../core/cache/builders/remote-data-build.service';
|
||||
import { ErrorResponse, RestResponse, SubmissionSuccessResponse } from '../core/cache/response.models';
|
||||
import { getResponseFromEntry } from '../core/shared/operators';
|
||||
} from '../data/request.models';
|
||||
import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model';
|
||||
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
|
||||
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||
import { ErrorResponse, RestResponse, SubmissionSuccessResponse } from '../cache/response.models';
|
||||
import { getResponseFromEntry } from '../shared/operators';
|
||||
|
||||
/**
|
||||
* The service handling all submission requests
|
||||
*/
|
||||
@Injectable()
|
||||
export class SubmissionRestService {
|
||||
protected linkPath = 'workspaceitems';
|
||||
@@ -31,6 +34,14 @@ export class SubmissionRestService {
|
||||
protected halService: HALEndpointService) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch a RestRequest
|
||||
*
|
||||
* @param requestId
|
||||
* The base endpoint for the type of object
|
||||
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||
* server response
|
||||
*/
|
||||
protected fetchRequest(requestId: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||
const responses = this.requestService.getByUUID(requestId).pipe(
|
||||
getResponseFromEntry()
|
||||
@@ -47,10 +58,28 @@ export class SubmissionRestService {
|
||||
return observableMerge(errorResponses, successResponses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create the HREF for a specific submission object based on its identifier
|
||||
*
|
||||
* @param endpoint
|
||||
* The base endpoint for the type of object
|
||||
* @param resourceID
|
||||
* The identifier for the object
|
||||
*/
|
||||
protected getEndpointByIDHref(endpoint, resourceID): string {
|
||||
return isNotEmpty(resourceID) ? `${endpoint}/${resourceID}` : `${endpoint}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an existing submission Object on the server
|
||||
*
|
||||
* @param scopeId
|
||||
* The submission Object to be removed
|
||||
* @param linkName
|
||||
* The endpoint link name
|
||||
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||
* server response
|
||||
*/
|
||||
public deleteById(scopeId: string, linkName?: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
return this.halService.getEndpoint(linkName || this.linkPath).pipe(
|
||||
@@ -59,11 +88,21 @@ export class SubmissionRestService {
|
||||
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, scopeId)),
|
||||
map((endpointURL: string) => new SubmissionDeleteRequest(requestId, endpointURL)),
|
||||
tap((request: DeleteRequest) => this.requestService.configure(request)),
|
||||
flatMap((request: DeleteRequest) => this.fetchRequest(requestId)),
|
||||
flatMap(() => this.fetchRequest(requestId)),
|
||||
distinctUntilChanged());
|
||||
}
|
||||
|
||||
public getDataById(linkName: string, id: string): Observable<any> {
|
||||
/**
|
||||
* Return an existing submission Object from the server
|
||||
*
|
||||
* @param linkName
|
||||
* The endpoint link name
|
||||
* @param id
|
||||
* The submission Object to retrieve
|
||||
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||
* server response
|
||||
*/
|
||||
public getDataById(linkName: string, id: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
return this.halService.getEndpoint(linkName).pipe(
|
||||
map((endpointURL: string) => this.getEndpointByIDHref(endpointURL, id)),
|
||||
@@ -71,10 +110,24 @@ export class SubmissionRestService {
|
||||
distinctUntilChanged(),
|
||||
map((endpointURL: string) => new SubmissionRequest(requestId, endpointURL)),
|
||||
tap((request: RestRequest) => this.requestService.configure(request, true)),
|
||||
flatMap((request: RestRequest) => this.fetchRequest(requestId)),
|
||||
flatMap(() => this.fetchRequest(requestId)),
|
||||
distinctUntilChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a new post request
|
||||
*
|
||||
* @param linkName
|
||||
* The endpoint link name
|
||||
* @param body
|
||||
* The post request body
|
||||
* @param scopeId
|
||||
* The submission Object id
|
||||
* @param options
|
||||
* The [HttpOptions] object
|
||||
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||
* server response
|
||||
*/
|
||||
public postToEndpoint(linkName: string, body: any, scopeId?: string, options?: HttpOptions): Observable<SubmitDataResponseDefinitionObject> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
return this.halService.getEndpoint(linkName).pipe(
|
||||
@@ -83,10 +136,22 @@ export class SubmissionRestService {
|
||||
distinctUntilChanged(),
|
||||
map((endpointURL: string) => new SubmissionPostRequest(requestId, endpointURL, body, options)),
|
||||
tap((request: PostRequest) => this.requestService.configure(request)),
|
||||
flatMap((request: PostRequest) => this.fetchRequest(requestId)),
|
||||
flatMap(() => this.fetchRequest(requestId)),
|
||||
distinctUntilChanged());
|
||||
}
|
||||
|
||||
/**
|
||||
* Make a new patch to a specified object
|
||||
*
|
||||
* @param linkName
|
||||
* The endpoint link name
|
||||
* @param body
|
||||
* The post request body
|
||||
* @param scopeId
|
||||
* The submission Object id
|
||||
* @return Observable<SubmitDataResponseDefinitionObject>
|
||||
* server response
|
||||
*/
|
||||
public patchToEndpoint(linkName: string, body: any, scopeId?: string): Observable<SubmitDataResponseDefinitionObject> {
|
||||
const requestId = this.requestService.generateRequestId();
|
||||
return this.halService.getEndpoint(linkName).pipe(
|
||||
@@ -95,7 +160,7 @@ export class SubmissionRestService {
|
||||
distinctUntilChanged(),
|
||||
map((endpointURL: string) => new SubmissionPatchRequest(requestId, endpointURL, body)),
|
||||
tap((request: PostRequest) => this.requestService.configure(request)),
|
||||
flatMap((request: PostRequest) => this.fetchRequest(requestId)),
|
||||
flatMap(() => this.fetchRequest(requestId)),
|
||||
distinctUntilChanged());
|
||||
}
|
||||
|
@@ -13,7 +13,7 @@ import { mockSubmissionId } from '../../../shared/mocks/mock-submission';
|
||||
import { SubmissionService } from '../../submission.service';
|
||||
import { SubmissionRestServiceStub } from '../../../shared/testing/submission-rest-service-stub';
|
||||
import { SubmissionFormFooterComponent } from './submission-form-footer.component';
|
||||
import { SubmissionRestService } from '../../submission-rest.service';
|
||||
import { SubmissionRestService } from '../../../core/submission/submission-rest.service';
|
||||
import { createTestComponent } from '../../../shared/testing/utils';
|
||||
|
||||
describe('SubmissionFormFooterComponent Component', () => {
|
||||
|
@@ -4,7 +4,7 @@ import { Observable, of as observableOf } from 'rxjs';
|
||||
import { map } from 'rxjs/operators';
|
||||
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
||||
|
||||
import { SubmissionRestService } from '../../submission-rest.service';
|
||||
import { SubmissionRestService } from '../../../core/submission/submission-rest.service';
|
||||
import { SubmissionService } from '../../submission.service';
|
||||
import { SubmissionScopeType } from '../../../core/submission/submission-scope-type';
|
||||
import { isNotEmpty } from '../../../shared/empty.util';
|
||||
|
@@ -160,7 +160,6 @@ export class UploadSectionComponent extends SectionModelComponent {
|
||||
return acc;
|
||||
}, []),
|
||||
).subscribe((entries: AccessConditionGroupsMapEntry[]) => {
|
||||
console.log(entries);
|
||||
entries.forEach((entry: AccessConditionGroupsMapEntry) => {
|
||||
this.availableGroups.set(entry.accessCondition, entry.groups);
|
||||
});
|
||||
|
@@ -19,7 +19,6 @@ import { submissionEffects } from './submission.effects';
|
||||
import { UploadSectionComponent } from './sections/upload/section-upload.component';
|
||||
import { SectionUploadService } from './sections/upload/section-upload.service';
|
||||
import { SubmissionUploadFilesComponent } from './form/submission-upload-files/submission-upload-files.component';
|
||||
import { SubmissionRestService } from './submission-rest.service';
|
||||
import { LicenseSectionComponent } from './sections/license/section-license.component';
|
||||
import { SubmissionUploadsConfigService } from '../core/config/submission-uploads-config.service';
|
||||
import { SubmissionEditComponent } from './edit/submission-edit.component';
|
||||
@@ -69,9 +68,12 @@ import { SubmissionSubmitComponent } from './submit/submission-submit.component'
|
||||
providers: [
|
||||
SectionUploadService,
|
||||
SectionsService,
|
||||
SubmissionRestService,
|
||||
SubmissionUploadsConfigService
|
||||
]
|
||||
})
|
||||
|
||||
/**
|
||||
* This module handles all components that are necessary for the submission process
|
||||
*/
|
||||
export class SubmissionModule {
|
||||
}
|
||||
|
@@ -11,7 +11,7 @@ import { cold, getTestScheduler, hot, } from 'jasmine-marbles';
|
||||
import { MockRouter } from '../shared/mocks/mock-router';
|
||||
import { SubmissionService } from './submission.service';
|
||||
import { submissionReducers } from './submission.reducers';
|
||||
import { SubmissionRestService } from './submission-rest.service';
|
||||
import { SubmissionRestService } from '../core/submission/submission-rest.service';
|
||||
import { RouteService } from '../shared/services/route.service';
|
||||
import { SubmissionRestServiceStub } from '../shared/testing/submission-rest-service-stub';
|
||||
import { MockActivatedRoute } from '../shared/mocks/mock-active-router';
|
||||
|
@@ -31,7 +31,7 @@ import { submissionObjectFromIdSelector } from './selectors';
|
||||
import { GlobalConfig } from '../../config/global-config.interface';
|
||||
import { GLOBAL_CONFIG } from '../../config';
|
||||
import { HttpOptions } from '../core/dspace-rest-v2/dspace-rest-v2.service';
|
||||
import { SubmissionRestService } from './submission-rest.service';
|
||||
import { SubmissionRestService } from '../core/submission/submission-rest.service';
|
||||
import { SectionDataObject } from './sections/models/section-data.model';
|
||||
import { SubmissionScopeType } from '../core/submission/submission-scope-type';
|
||||
import { SubmissionObject } from '../core/submission/models/submission-object.model';
|
||||
|
Reference in New Issue
Block a user