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

Remove system activity posts on dashboard for notifications launch #79

Merged
merged 4 commits into from
Feb 5, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions src/common/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,30 +189,37 @@ module.exports = {
added: {
title: 'A new team member has joined your project',
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.`,
disabled: true,
},
managerJoined: {
title: 'A Topcoder project manager has joined your project',
content: data => `${data.firstName} ${data.lastName} has joined your project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a> as a project manager.`,
disabled: true,
},
copilotJoined: {
title: 'A Topcoder copilot has joined your project',
content: data => `${data.firstName} ${data.lastName} has joined your project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a> as a copilot.`,
disabled: true,
},
left: {
title: 'A team member has left your project',
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}.`,
disabled: true,
},
removed: {
title: 'A team member has left your project',
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}.`,
disabled: true,
},
ownerChanged: {
title: 'Your project has a new owner',
content: data => `${data.firstName} ${data.lastName} is now responsible for project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Good luck ${data.firstName}.`,
disabled: true,
},
ownerAdded: {
title: 'Ownership changed',
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}!`,
disabled: true,
},
},
},
Expand Down
31 changes: 18 additions & 13 deletions src/handlers/memberEvents.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,13 @@ function* memberAdded(logger, data) {
lastName: addedMember.lastName,
};

notifications.discourse = [{
projectId: project.id,
title: topic.title,
content: topic.content(topicData),
}];
if (topic && !topic.disabled) {
notifications.discourse = [{
projectId: project.id,
title: topic.title,
content: topic.content(topicData),
}];
}
return notifications;
}

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

let topic;
const notifications = {};
if (data.updatedBy === data.userId) {
// Left
topic = constants.notifications.discourse.teamMembers.left;
Expand All @@ -93,13 +96,13 @@ function* memberRemoved(logger, data) {
lastName: removedMember.lastName,
};

const notifications = {
discourse: [{
if (topic && !topic.disabled) {
notifications.discourse = [{
projectId: project.id,
title: topic.title,
content: topic.content(topicData),
}],
};
}];
}
return notifications;
}

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

const topic = constants.notifications.discourse.teamMembers.ownerChanged;

const notifications = {};
const topicData = {
projectName: project.name,
projectUrl: `https://connect.${config.get('AUTH_DOMAIN')}/projects/${project.id}/`,
firstName: updatedMember.firstName,
lastName: updatedMember.lastName,
};

const notifications = {
discourse: [{
if (topic && !topic.disabled) {
notifications.discourse = [{
projectId: project.id,
title: topic.title,
content: topic.content(topicData),
}],
};
}];
}
return notifications;
}

Expand Down
48 changes: 8 additions & 40 deletions src/test/app.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -345,47 +345,31 @@ describe('app', () => {
it('should create `Project.Member.ownerAdded` notification', (done) => {
sendTestEvent(sampleEvents.memberAddedOwner, 'project.member.added');
setTimeout(() => {
const expectedTitle = 'Ownership changed';
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!';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});

it('should create `Project.Member.TeamMemberAdded` notification', (done) => {
sendTestEvent(sampleEvents.memberAddedTeamMember, 'project.member.added');
setTimeout(() => {
const expectedTitle = 'A new team member has joined your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});

it('should create `Project.Member.ManagerJoined` notification', (done) => {
sendTestEvent(sampleEvents.memberAddedManager, 'project.member.added');
setTimeout(() => {
const expectedTitle = 'A Topcoder project manager has joined your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});

it('should create `Project.Member.CopilotJoined` notification', (done) => {
sendTestEvent(sampleEvents.memberAddedCopilot, 'project.member.added');
setTimeout(() => {
const expectedTitle = 'A Topcoder copilot has joined your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});
Expand All @@ -399,11 +383,7 @@ describe('app', () => {

sendTestEvent(sampleEvents.memberAddedCopilot, 'project.member.added');
setTimeout(() => {
const expectedTitle = 'A Topcoder copilot has joined your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
const slackParams = slackSpy.lastCall.args;
const expectedTestCopilotNotificaton = _.cloneDeep(expectedClaimedSlackCopilotNotification);
_.extend(expectedTestCopilotNotificaton.attachments[0], {
Expand All @@ -421,23 +401,15 @@ describe('app', () => {
it('should create `Project.Member.Left` notification', (done) => {
sendTestEvent(sampleEvents.memberRemovedLeft, 'project.member.removed');
setTimeout(() => {
const expectedTitle = 'A team member has left your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});

it('should create `Project.Member.Removed` notification', (done) => {
sendTestEvent(sampleEvents.memberRemovedRemoved, 'project.member.removed');
setTimeout(() => {
const expectedTitle = 'A team member has left your project';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});
Expand All @@ -447,11 +419,7 @@ describe('app', () => {
it('should create `Project.OwnerChanged` notification', (done) => {
sendTestEvent(sampleEvents.memberUpdated, 'project.member.updated');
setTimeout(() => {
const expectedTitle = 'Your project has a new owner';
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.';
const params = spy.lastCall.args;
assert.equal(params[2], expectedTitle);
assert.equal(params[3], expectedBody);
sinon.assert.notCalled(spy);
done();
}, testTimeout);
});
Expand Down