Merge pull request #2962 from atmire/fix-submission-lost-changes-after-save-8.0.0-next

Fix submission lost changes after save
This commit is contained in:
Tim Donohue
2024-04-24 16:27:24 -05:00
committed by GitHub
2 changed files with 32 additions and 0 deletions

View File

@@ -17,6 +17,9 @@ describe('SubmissionJsonPatchOperationsService', () => {
const rdbService = {} as RemoteDataBuildService; const rdbService = {} as RemoteDataBuildService;
const halEndpointService = {} as HALEndpointService; const halEndpointService = {} as HALEndpointService;
const uuid = '91ecbeda-99fe-42ac-9430-b9b75af56f78';
const href = 'https://rest.api/some/self/link?with=maybe&a=few&other=parameters';
function initTestService() { function initTestService() {
return new SubmissionJsonPatchOperationsService( return new SubmissionJsonPatchOperationsService(
requestService, requestService,
@@ -36,4 +39,16 @@ describe('SubmissionJsonPatchOperationsService', () => {
expect((service as any).patchRequestConstructor).toEqual(SubmissionPatchRequest); expect((service as any).patchRequestConstructor).toEqual(SubmissionPatchRequest);
}); });
describe(`getRequestInstance`, () => {
it(`should add a parameter to embed the item to the request URL`, () => {
const result = (service as any).getRequestInstance(uuid, href);
const resultURL = new URL(result.href);
expect(resultURL.searchParams.get('embed')).toEqual('item');
// if we delete the embed item param, it should be identical to the original url
resultURL.searchParams.delete('embed', 'item');
expect(href).toEqual(resultURL.toString());
});
});
}); });

View File

@@ -8,6 +8,7 @@ import { RequestService } from '../data/request.service';
import { JsonPatchOperationsService } from '../json-patch/json-patch-operations.service'; import { JsonPatchOperationsService } from '../json-patch/json-patch-operations.service';
import { HALEndpointService } from '../shared/hal-endpoint.service'; import { HALEndpointService } from '../shared/hal-endpoint.service';
import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model'; import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model';
import { URLCombiner } from '../url-combiner/url-combiner';
/** /**
* A service that provides methods to make JSON Patch requests. * A service that provides methods to make JSON Patch requests.
@@ -26,4 +27,20 @@ export class SubmissionJsonPatchOperationsService extends JsonPatchOperationsSer
super(); super();
} }
/**
* Return an instance for RestRequest class
*
* @param uuid
* The request uuid
* @param href
* The request href
* @param body
* The request body
* @return Object<PatchRequestDefinition>
* instance of PatchRequestDefinition
*/
protected getRequestInstance(uuid: string, href: string, body?: any): SubmissionPatchRequest {
return new this.patchRequestConstructor(uuid, new URLCombiner(href, '?embed=item').toString(), body);
}
} }