diff --git a/package-lock.json b/package-lock.json index 0df2013836..03dd14d492 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "@angular/platform-browser-dynamic": "^13.2.6", "@angular/router": "^13.2.6", "@ckeditor/ckeditor5-angular": "^2.0.2", - "@dasch-swiss/dsp-js": "^7.3.0", + "@dasch-swiss/dsp-js": "^7.4.0", "@datadog/browser-rum": "^3.11.0", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "6.0.0", @@ -2425,9 +2425,9 @@ } }, "node_modules/@dasch-swiss/dsp-js": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-7.3.0.tgz", - "integrity": "sha512-mtE9zwEX58A3oj6btmLxv6DbLBKtpB4W3UZxjhGDO29aKEqQIC2kNqS7YjQijXo0ZSc1P9/gv0uaZ9P8QcU1YQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-7.4.0.tgz", + "integrity": "sha512-HQdOGHCcn6pj5dAkrfkLScAnA4mHKt2WliTxwpyqbVx3FSZttgoP+xLLJ76A6aNALWB2o/aKtv5572/ANOs5kw==", "dependencies": { "@babel/helper-compilation-targets": "^7.16.7", "@types/jsonld": "^1.5.6", @@ -17117,9 +17117,9 @@ } }, "@dasch-swiss/dsp-js": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-7.3.0.tgz", - "integrity": "sha512-mtE9zwEX58A3oj6btmLxv6DbLBKtpB4W3UZxjhGDO29aKEqQIC2kNqS7YjQijXo0ZSc1P9/gv0uaZ9P8QcU1YQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@dasch-swiss/dsp-js/-/dsp-js-7.4.0.tgz", + "integrity": "sha512-HQdOGHCcn6pj5dAkrfkLScAnA4mHKt2WliTxwpyqbVx3FSZttgoP+xLLJ76A6aNALWB2o/aKtv5572/ANOs5kw==", "requires": { "@babel/helper-compilation-targets": "^7.16.7", "@types/jsonld": "^1.5.6", diff --git a/package.json b/package.json index 7649186ef3..5ec4c6cb8f 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "@angular/platform-browser-dynamic": "^13.2.6", "@angular/router": "^13.2.6", "@ckeditor/ckeditor5-angular": "^2.0.2", - "@dasch-swiss/dsp-js": "^7.3.0", + "@dasch-swiss/dsp-js": "^7.4.0", "@datadog/browser-rum": "^3.11.0", "@ngx-translate/core": "^13.0.0", "@ngx-translate/http-loader": "6.0.0", diff --git a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.spec.ts b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.spec.ts index 7b049b6b20..426ae1e52d 100644 --- a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.spec.ts +++ b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.spec.ts @@ -77,7 +77,7 @@ describe('EditListItemComponent', () => { const listsEndpointSpyObj = { admin: { - listsEndpoint: jasmine.createSpyObj('listsEndpoint', ['getListNodeInfo', 'updateChildNode', 'createChildNode']) + listsEndpoint: jasmine.createSpyObj('listsEndpoint', ['getListNodeInfo', 'updateChildNode', 'createChildNode', 'deleteChildComments']) } }; @@ -213,6 +213,40 @@ describe('EditListItemComponent', () => { expect(dspConnSpy.admin.listsEndpoint.updateChildNode).toHaveBeenCalledTimes(1); expect(dspConnSpy.admin.listsEndpoint.updateChildNode).toHaveBeenCalledWith(updateChildNodeRequest); }); + + it('should delete the child node comments', () => { + const dspConnSpy = TestBed.inject(DspApiConnectionToken); + + testHostComponent.editListItem.handleData([{ 'value': 'Tree list node 01', 'language': 'en' }, { 'value': 'Baumlistenknoten 01', 'language': 'de' }], 'labels'); + testHostComponent.editListItem.handleData([], 'comments'); + + (dspConnSpy.admin.listsEndpoint as jasmine.SpyObj).updateChildNode.and.callFake( + () => { + const response = new ListNodeInfoResponse(); + response.nodeinfo.id = 'http://rdfh.ch/lists/0001/otherTreeList01'; + response.nodeinfo.labels = [{ 'value': 'Tree list node 01', 'language': 'en' }, { 'value': 'Baumlistenknoten 01', 'language': 'de' }]; + response.nodeinfo.comments = []; + + expect(testHostComponent.editListItem.labels).toEqual(response.nodeinfo.labels); + expect(testHostComponent.editListItem.comments.length).toEqual(0); + + return of(ApiResponseData.fromAjaxResponse({ response } as AjaxResponse)); + } + ); + + const updateChildNodeRequest: UpdateChildNodeRequest = new UpdateChildNodeRequest(); + updateChildNodeRequest.projectIri = testHostComponent.editListItem.projectIri; + updateChildNodeRequest.listIri = testHostComponent.editListItem.iri; + updateChildNodeRequest.labels = testHostComponent.editListItem.labels; + updateChildNodeRequest.comments = undefined; + + testHostComponent.editListItem.updateChildNode(); + expect(dspConnSpy.admin.listsEndpoint.updateChildNode).toHaveBeenCalledTimes(1); + expect(dspConnSpy.admin.listsEndpoint.updateChildNode).toHaveBeenCalledWith(updateChildNodeRequest); + + expect(dspConnSpy.admin.listsEndpoint.deleteChildComments).toHaveBeenCalledTimes(1); + expect(dspConnSpy.admin.listsEndpoint.deleteChildComments).toHaveBeenCalledWith(updateChildNodeRequest.listIri); + }); }); describe('insert list child node', () => { diff --git a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts index d220ca599b..9913363c7f 100644 --- a/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts +++ b/src/app/project/list/list-item-form/edit-list-item/edit-list-item.component.ts @@ -4,6 +4,7 @@ import { ApiResponseError, ChildNodeInfoResponse, CreateChildNodeRequest, + DeleteChildNodeCommentsResponse, KnoraApiConnection, List, ListNodeInfo, @@ -163,6 +164,12 @@ export class EditListItemComponent implements OnInit { this._dspApiConnection.admin.listsEndpoint.updateChildNode(childNodeUpdateData).subscribe( (response: ApiResponseData) => { + if (!childNodeUpdateData.comments) { + this._dspApiConnection.admin.listsEndpoint.deleteChildComments(childNodeUpdateData.listIri).subscribe( + (res: ApiResponseData) => {}, + (error: ApiResponseError) => this._errorHandler.showMessage(error) + ); + } this.loading = false; this.closeDialog.emit(response.body.nodeinfo); },