From a046f00604d8613c62b66667fbfcd1dd5bcb012e Mon Sep 17 00:00:00 2001 From: Narek Vardzelyan Date: Wed, 11 Mar 2020 15:25:16 +0400 Subject: [PATCH] Fixes issue 3764. --- .../ProcessorServiceProjectMemberInvite.js | 6 ++-- test/e2e/processor.project.index.test.js | 30 +++++++++++++++---- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/services/ProcessorServiceProjectMemberInvite.js b/src/services/ProcessorServiceProjectMemberInvite.js index afa31c1..2f3f20f 100644 --- a/src/services/ProcessorServiceProjectMemberInvite.js +++ b/src/services/ProcessorServiceProjectMemberInvite.js @@ -57,8 +57,10 @@ create.schema = { const updateInvitesPromise = message => async (doc) => { // now merge the updated changes and re-index the document const invites = _.isArray(doc._source.invites) ? doc._source.invites : [] - _.remove(invites, invite => (!!message.email && invite.email === message.email) || - (!!message.userId && invite.userId === message.userId)) + const removedInvites = _.remove(invites, invite => message.id === invite.id) + if (!removedInvites.length) { + throw new Error(`Invite with id "${message.id}" is not found and not removed.`) + } return _.assign(doc._source, { invites }) } diff --git a/test/e2e/processor.project.index.test.js b/test/e2e/processor.project.index.test.js index ae12eb1..6656e17 100644 --- a/test/e2e/processor.project.index.test.js +++ b/test/e2e/processor.project.index.test.js @@ -887,9 +887,18 @@ describe('TC Project Member Invite Topic Tests', () => { it('update project member invite message - not found', async () => { const message = _.cloneDeep(projectMemberInviteUpdatedMessage) message.payload.id = notFoundId - await ProcessorService.update(message) - const data = await testHelper.getProjectESData(projectId) - expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined') + try { + await ProcessorService.create(projectMemberInviteCreatedMessage) + await ProcessorService.update(message) + } catch (err) { + logger.logFullError(err) + expect(err).to.exist // eslint-disable-line + expect(err.name).to.equal('Error') + const msg = 'not found and not removed.' + expect(err.message.indexOf(msg) >= 0).to.equal(true) + return + } + throw new Error('There should be not found error.') }) it('delete project member invite message', async () => { @@ -905,9 +914,18 @@ describe('TC Project Member Invite Topic Tests', () => { it('delete project member invite message - not found', async () => { const message = _.cloneDeep(projectMemberInviteDeletedMessage) message.payload.id = notFoundId - await ProcessorService.deleteMessage(message) - const data = await testHelper.getProjectESData(projectId) - expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined') + try { + await ProcessorService.create(projectMemberInviteCreatedMessage) + await ProcessorService.deleteMessage(message) + } catch (err) { + logger.logFullError(err) + expect(err).to.exist // eslint-disable-line + expect(err.name).to.equal('Error') + const msg = 'not found and not removed.' + expect(err.message.indexOf(msg) >= 0).to.equal(true) + return + } + throw new Error('There should be not found error.') }) it('test logger', async () => {