Skip to content

Commit 7f4714a

Browse files
committed
Fix issue 29, Throw error if no invite has been removed when it should.
1 parent f367adf commit 7f4714a

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

src/services/ProcessorServiceProjectMemberInvite.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,11 @@ create.schema = {
5757
const updateInvitesPromise = message => async (doc) => {
5858
// now merge the updated changes and re-index the document
5959
const invites = _.isArray(doc._source.invites) ? doc._source.invites : []
60-
_.remove(invites, invite => (!!message.email && invite.email === message.email) ||
60+
const removedInvites = _.remove(invites, invite => (!!message.email && invite.email === message.email) ||
6161
(!!message.userId && invite.userId === message.userId))
62+
if (invites.length && !removedInvites.length) {
63+
throw new Error(`Invite with email "${message.email}" and userId "${message.userId}" is not found and not removed.`)
64+
}
6265
return _.assign(doc._source, { invites })
6366
}
6467

test/e2e/processor.project.index.test.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -892,6 +892,24 @@ describe('TC Project Member Invite Topic Tests', () => {
892892
expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined')
893893
})
894894

895+
it('update project member invite message - invalid parameters, not existing member', async () => {
896+
const message = _.cloneDeep(projectMemberInviteUpdatedMessage)
897+
message.payload.userId = '11111111'
898+
message.payload.email = 'wrong@mail.com'
899+
try {
900+
await ProcessorService.create(projectMemberInviteCreatedMessage)
901+
await ProcessorService.update(message)
902+
} catch (err) {
903+
logger.logFullError(err)
904+
expect(err).to.exist // eslint-disable-line
905+
expect(err.name).to.equal('Error')
906+
const msg = 'not found and not removed.'
907+
expect(err.message.indexOf(msg) >= 0).to.equal(true)
908+
return
909+
}
910+
throw new Error('There should be not found error.')
911+
})
912+
895913
it('delete project member invite message', async () => {
896914
await ProcessorService.create(projectMemberInviteCreatedMessage)
897915
let data = await testHelper.getProjectESData(projectId)
@@ -910,6 +928,24 @@ describe('TC Project Member Invite Topic Tests', () => {
910928
expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined')
911929
})
912930

931+
it('delete project member invite message - invalid parameters, not existing member', async () => {
932+
const message = _.cloneDeep(projectMemberInviteDeletedMessage)
933+
message.payload.userId = '11111111'
934+
message.payload.email = 'wrong@mail.com'
935+
try {
936+
await ProcessorService.create(projectMemberInviteCreatedMessage)
937+
await ProcessorService.deleteMessage(message)
938+
} catch (err) {
939+
logger.logFullError(err)
940+
expect(err).to.exist // eslint-disable-line
941+
expect(err.name).to.equal('Error')
942+
const msg = 'not found and not removed.'
943+
expect(err.message.indexOf(msg) >= 0).to.equal(true)
944+
return
945+
}
946+
throw new Error('There should be not found error.')
947+
})
948+
913949
it('test logger', async () => {
914950
/**
915951
* test long array

0 commit comments

Comments
 (0)