Skip to content

Commit b3b65de

Browse files
committed
Merge branch 'develop' into feature/link-attachments
2 parents 5fa1745 + 8f29834 commit b3b65de

File tree

8 files changed

+892
-45
lines changed

8 files changed

+892
-45
lines changed

package-lock.json

Lines changed: 838 additions & 31 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/services/ProcessorServiceProject.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ function createSchema () {
4747
createdAt: Joi.date(),
4848
createdBy: Joi.number().integer().positive(),
4949
updatedAt: Joi.date(),
50-
updatedBy: Joi.number().integer().positive(),
50+
updatedBy: Joi.number().integer().positive()
5151
})).optional().allow(null),
5252
external: Joi.object().keys({
5353
id: Joi.string(),

src/services/ProcessorServiceProjectMemberInvite.js

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ function createSchema () {
2222
.email()
2323
.optional()
2424
.allow(null),
25+
hashEmail: Joi.string().optional().allow(null),
2526
status: Joi.any()
2627
.valid(_.values(INVITE_STATUS))
2728
.required()
@@ -52,33 +53,48 @@ create.schema = {
5253
message: createSchema()
5354
}
5455

56+
// handle ES Update or Delete on invites
57+
const updateInvitesPromise = message => async (doc) => {
58+
// now merge the updated changes and re-index the document
59+
const invites = _.isArray(doc._source.invites) ? doc._source.invites : []
60+
_.remove(invites, invite => (!!message.email && invite.email === message.email) ||
61+
(!!message.userId && invite.userId === message.userId))
62+
return _.assign(doc._source, { invites })
63+
}
64+
5565
/**
5666
* Update message in Elasticsearch.
5767
* @param {Object} message the challenge updated message
5868
* @return {Promise} promise result
5969
*/
6070
async function update (message) {
61-
// handle ES Update
62-
async function updateDocPromise (doc) {
63-
// now merge the updated changes and reindex the document
64-
const invites = _.isArray(doc._source.invites) ? doc._source.invites : []
65-
_.remove(invites, invite => (!!message.email && invite.email === message.email) ||
66-
(!!message.userId && invite.userId === message.userId))
67-
return _.assign(doc._source, { invites })
68-
}
69-
70-
await helper.updateProjectESPromise(message.projectId, updateDocPromise)
71+
await helper.updateProjectESPromise(message.projectId, updateInvitesPromise(message))
7172
logger.debug(`Member invite updated successfully in elasticsearch index, (memberInviteId: ${message.id})`)
7273
}
7374

7475
update.schema = {
7576
message: createSchema()
7677
}
7778

79+
/**
80+
* Delete message in Elasticsearch.
81+
* @param {Object} message the deleted message
82+
* @return {Promise} promise result
83+
*/
84+
async function deleteMessage (message) {
85+
await helper.updateProjectESPromise(message.projectId, updateInvitesPromise(message))
86+
logger.debug(`Member invite deleted successfully in elasticsearch index, (memberInviteId: ${message.id})`)
87+
}
88+
89+
deleteMessage.schema = {
90+
message: createSchema()
91+
}
92+
7893
// Exports
7994
module.exports = {
8095
create,
81-
update
96+
update,
97+
deleteMessage
8298
}
8399

84100
logger.buildService(module.exports)

test/common/testData.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ const projectMemberInviteCreatedMessage = require(
100100
const projectMemberInviteUpdatedMessage = require(
101101
'../data/project.member.invite/project.action.update.json'
102102
)
103+
const projectMemberInviteDeletedMessage = require(
104+
'../data/project.member.invite/project.action.delete.json'
105+
)
103106
const orgConfigCreatedMessage = require('../data/project.orgConfig/project.action.create.json')
104107
const orgConfigUpdatedMessage = require('../data/project.orgConfig/project.action.update.json')
105108
const orgConfigDeletedMessage = require('../data/project.orgConfig/project.action.delete.json')
@@ -202,6 +205,7 @@ module.exports = {
202205
orgConfigDeletedMessage,
203206
projectMemberInviteUpdatedMessage,
204207
projectMemberInviteCreatedMessage,
208+
projectMemberInviteDeletedMessage,
205209
projectMemberUpdatedMessage,
206210
projectMemberCreatedMessage,
207211
projectMemberDeletedMessage,
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"topic":"project.action.create","originator":"project-api","timestamp":"2019-06-21T04:58:12.671Z","mime-type":"application/json","payload":{"resource":"project.member.invite","createdAt":"2019-06-21T04:58:12.594Z","updatedAt":"2019-06-21T04:58:12.594Z","id":1,"projectId":1,"role":"customer","status":"pending","createdBy":40051334,"updatedBy":40051334,"userId":40051331,"email":null,"deletedAt":null,"deletedBy":null}}
1+
{"topic":"project.action.create","originator":"project-api","timestamp":"2019-06-21T04:58:12.671Z","mime-type":"application/json","payload":{"resource":"project.member.invite","createdAt":"2019-06-21T04:58:12.594Z","updatedAt":"2019-06-21T04:58:12.594Z","id":1,"projectId":1,"role":"customer","status":"pending","createdBy":40051334,"updatedBy":40051334,"userId":40051331,"email":"test@topcoder.com","hashEmail":"dummy_value","deletedAt":null,"deletedBy":null}}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"topic":"project.action.update","originator":"project-api","timestamp":"2019-06-21T04:59:38.562Z","mime-type":"application/json","payload":{"resource":"project.member.invite","status":"canceled","userId":40051331,"email":"test@topcoder.com","hashEmail":"dummy_value","id":1,"projectId":1}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"topic":"project.action.update","originator":"project-api","timestamp":"2019-06-21T04:59:38.562Z","mime-type":"application/json","payload":{"resource":"project.member.invite","status":"pending","userId":40051331,"email":"test@topcoder.com","id":1,"projectId":1}}
1+
{"topic":"project.action.update","originator":"project-api","timestamp":"2019-06-21T04:59:38.562Z","mime-type":"application/json","payload":{"resource":"project.member.invite","status":"pending","userId":40051331,"email":"test@topcoder.com","hashEmail":"dummy_value","id":1,"projectId":1}}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const {
2323
projectMemberInviteId,
2424
projectMemberInviteUpdatedMessage,
2525
projectMemberInviteCreatedMessage,
26+
projectMemberInviteDeletedMessage,
2627
projectMemberUpdatedMessage,
2728
projectMemberCreatedMessage,
2829
projectMemberDeletedMessage,
@@ -891,6 +892,24 @@ describe('TC Project Member Invite Topic Tests', () => {
891892
expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined')
892893
})
893894

895+
it('delete project member invite message', async () => {
896+
await ProcessorService.create(projectMemberInviteCreatedMessage)
897+
let data = await testHelper.getProjectESData(projectId)
898+
testHelper.expectObj(_.find(data.invites, { id: projectMemberInviteId }), projectMemberInviteCreatedMessage.payload,
899+
_.keys(_.omit(projectMemberInviteCreatedMessage.payload, ['resource'])))
900+
await ProcessorService.deleteMessage(projectMemberInviteDeletedMessage)
901+
data = await testHelper.getProjectESData(projectId)
902+
expect(_.find(data.invites, { id: projectMemberInviteId })).to.be.an('undefined')
903+
})
904+
905+
it('delete project member invite message - not found', async () => {
906+
const message = _.cloneDeep(projectMemberInviteDeletedMessage)
907+
message.payload.id = notFoundId
908+
await ProcessorService.deleteMessage(message)
909+
const data = await testHelper.getProjectESData(projectId)
910+
expect(_.find(data.invites, { id: notFoundId })).to.be.an('undefined')
911+
})
912+
894913
it('test logger', async () => {
895914
/**
896915
* test long array

0 commit comments

Comments
 (0)