Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit b3e0fbc

Browse files
author
vikasrohit
authored
Merge pull request #78 from topcoder-platform/feature/slient-project-team-activity
Feature/slient project team activity
2 parents 277fca1 + 4973d2e commit b3e0fbc

File tree

3 files changed

+33
-53
lines changed

3 files changed

+33
-53
lines changed

src/common/constants.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,30 +189,37 @@ module.exports = {
189189
added: {
190190
title: 'A new team member has joined your project',
191191
content: data => `${data.firstName} ${data.lastName} has joined project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Welcome ${data.firstName}! Looking forward to working with you.`,
192+
disabled: true,
192193
},
193194
managerJoined: {
194195
title: 'A Topcoder project manager has joined your project',
195196
content: data => `${data.firstName} ${data.lastName} has joined your project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a> as a project manager.`,
197+
disabled: true,
196198
},
197199
copilotJoined: {
198200
title: 'A Topcoder copilot has joined your project',
199201
content: data => `${data.firstName} ${data.lastName} has joined your project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a> as a copilot.`,
202+
disabled: true,
200203
},
201204
left: {
202205
title: 'A team member has left your project',
203206
content: data => `${data.firstName} ${data.lastName} has left project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Thanks for all your work ${data.firstName}.`,
207+
disabled: true,
204208
},
205209
removed: {
206210
title: 'A team member has left your project',
207211
content: data => `${data.firstName} ${data.lastName} has left project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Thanks for all your work ${data.firstName}.`,
212+
disabled: true,
208213
},
209214
ownerChanged: {
210215
title: 'Your project has a new owner',
211216
content: data => `${data.firstName} ${data.lastName} is now responsible for project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Good luck ${data.firstName}.`,
217+
disabled: true,
212218
},
213219
ownerAdded: {
214220
title: 'Ownership changed',
215221
content: data => `Your project has a new owner. ${data.firstName} ${data.lastName} is now responsible for project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Good luck ${data.firstName}!`,
222+
disabled: true,
216223
},
217224
},
218225
},

src/handlers/memberEvents.js

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,13 @@ function* memberAdded(logger, data) {
5959
lastName: addedMember.lastName,
6060
};
6161

62-
notifications.discourse = [{
63-
projectId: project.id,
64-
title: topic.title,
65-
content: topic.content(topicData),
66-
}];
62+
if (topic && !topic.disabled) {
63+
notifications.discourse = [{
64+
projectId: project.id,
65+
title: topic.title,
66+
content: topic.content(topicData),
67+
}];
68+
}
6769
return notifications;
6870
}
6971

@@ -79,6 +81,7 @@ function* memberRemoved(logger, data) {
7981
];
8082

8183
let topic;
84+
const notifications = {};
8285
if (data.updatedBy === data.userId) {
8386
// Left
8487
topic = constants.notifications.discourse.teamMembers.left;
@@ -93,13 +96,13 @@ function* memberRemoved(logger, data) {
9396
lastName: removedMember.lastName,
9497
};
9598

96-
const notifications = {
97-
discourse: [{
99+
if (topic && !topic.disabled) {
100+
notifications.discourse = [{
98101
projectId: project.id,
99102
title: topic.title,
100103
content: topic.content(topicData),
101-
}],
102-
};
104+
}];
105+
}
103106
return notifications;
104107
}
105108

@@ -119,20 +122,22 @@ function* memberUpdated(logger, data) {
119122
];
120123

121124
const topic = constants.notifications.discourse.teamMembers.ownerChanged;
125+
126+
const notifications = {};
122127
const topicData = {
123128
projectName: project.name,
124129
projectUrl: `https://connect.${config.get('AUTH_DOMAIN')}/projects/${project.id}/`,
125130
firstName: updatedMember.firstName,
126131
lastName: updatedMember.lastName,
127132
};
128133

129-
const notifications = {
130-
discourse: [{
134+
if (topic && !topic.disabled) {
135+
notifications.discourse = [{
131136
projectId: project.id,
132137
title: topic.title,
133138
content: topic.content(topicData),
134-
}],
135-
};
139+
}];
140+
}
136141
return notifications;
137142
}
138143

src/test/app.test.js

Lines changed: 8 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -345,47 +345,31 @@ describe('app', () => {
345345
it('should create `Project.Member.ownerAdded` notification', (done) => {
346346
sendTestEvent(sampleEvents.memberAddedOwner, 'project.member.added');
347347
setTimeout(() => {
348-
const expectedTitle = 'Ownership changed';
349-
const expectedBody = 'Your project has a new owner. F_user L_user is now responsible for project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a>. Good luck F_user!';
350-
const params = spy.lastCall.args;
351-
assert.equal(params[2], expectedTitle);
352-
assert.equal(params[3], expectedBody);
348+
sinon.assert.notCalled(spy);
353349
done();
354350
}, testTimeout);
355351
});
356352

357353
it('should create `Project.Member.TeamMemberAdded` notification', (done) => {
358354
sendTestEvent(sampleEvents.memberAddedTeamMember, 'project.member.added');
359355
setTimeout(() => {
360-
const expectedTitle = 'A new team member has joined your project';
361-
const expectedBody = 'F_user L_user has joined project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a>. Welcome F_user! Looking forward to working with you.';
362-
const params = spy.lastCall.args;
363-
assert.equal(params[2], expectedTitle);
364-
assert.equal(params[3], expectedBody);
356+
sinon.assert.notCalled(spy);
365357
done();
366358
}, testTimeout);
367359
});
368360

369361
it('should create `Project.Member.ManagerJoined` notification', (done) => {
370362
sendTestEvent(sampleEvents.memberAddedManager, 'project.member.added');
371363
setTimeout(() => {
372-
const expectedTitle = 'A Topcoder project manager has joined your project';
373-
const expectedBody = 'F_user L_user has joined your project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a> as a project manager.';
374-
const params = spy.lastCall.args;
375-
assert.equal(params[2], expectedTitle);
376-
assert.equal(params[3], expectedBody);
364+
sinon.assert.notCalled(spy);
377365
done();
378366
}, testTimeout);
379367
});
380368

381369
it('should create `Project.Member.CopilotJoined` notification', (done) => {
382370
sendTestEvent(sampleEvents.memberAddedCopilot, 'project.member.added');
383371
setTimeout(() => {
384-
const expectedTitle = 'A Topcoder copilot has joined your project';
385-
const expectedBody = 'F_user L_user has joined your project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a> as a copilot.';
386-
const params = spy.lastCall.args;
387-
assert.equal(params[2], expectedTitle);
388-
assert.equal(params[3], expectedBody);
372+
sinon.assert.notCalled(spy);
389373
done();
390374
}, testTimeout);
391375
});
@@ -399,11 +383,7 @@ describe('app', () => {
399383

400384
sendTestEvent(sampleEvents.memberAddedCopilot, 'project.member.added');
401385
setTimeout(() => {
402-
const expectedTitle = 'A Topcoder copilot has joined your project';
403-
const expectedBody = 'F_user L_user has joined your project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">test</a> as a copilot.';
404-
const params = spy.lastCall.args;
405-
assert.equal(params[2], expectedTitle);
406-
assert.equal(params[3], expectedBody);
386+
sinon.assert.notCalled(spy);
407387
const slackParams = slackSpy.lastCall.args;
408388
const expectedTestCopilotNotificaton = _.cloneDeep(expectedClaimedSlackCopilotNotification);
409389
_.extend(expectedTestCopilotNotificaton.attachments[0], {
@@ -421,23 +401,15 @@ describe('app', () => {
421401
it('should create `Project.Member.Left` notification', (done) => {
422402
sendTestEvent(sampleEvents.memberRemovedLeft, 'project.member.removed');
423403
setTimeout(() => {
424-
const expectedTitle = 'A team member has left your project';
425-
const expectedBody = 'F_user L_user has left project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a>. Thanks for all your work F_user.';
426-
const params = spy.lastCall.args;
427-
assert.equal(params[2], expectedTitle);
428-
assert.equal(params[3], expectedBody);
404+
sinon.assert.notCalled(spy);
429405
done();
430406
}, testTimeout);
431407
});
432408

433409
it('should create `Project.Member.Removed` notification', (done) => {
434410
sendTestEvent(sampleEvents.memberRemovedRemoved, 'project.member.removed');
435411
setTimeout(() => {
436-
const expectedTitle = 'A team member has left your project';
437-
const expectedBody = 'F_user L_user has left project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a>. Thanks for all your work F_user.';
438-
const params = spy.lastCall.args;
439-
assert.equal(params[2], expectedTitle);
440-
assert.equal(params[3], expectedBody);
412+
sinon.assert.notCalled(spy);
441413
done();
442414
}, testTimeout);
443415
});
@@ -447,11 +419,7 @@ describe('app', () => {
447419
it('should create `Project.OwnerChanged` notification', (done) => {
448420
sendTestEvent(sampleEvents.memberUpdated, 'project.member.updated');
449421
setTimeout(() => {
450-
const expectedTitle = 'Your project has a new owner';
451-
const expectedBody = 'F_user L_user is now responsible for project <a href="https://connect.topcoder-dev.com/projects/1/" rel="nofollow">Project name 1</a>. Good luck F_user.';
452-
const params = spy.lastCall.args;
453-
assert.equal(params[2], expectedTitle);
454-
assert.equal(params[3], expectedBody);
422+
sinon.assert.notCalled(spy);
455423
done();
456424
}, testTimeout);
457425
});

0 commit comments

Comments
 (0)