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

Commit 8f3e409

Browse files
committed
fix #45
1 parent affcad6 commit 8f3e409

File tree

5 files changed

+35
-4
lines changed

5 files changed

+35
-4
lines changed

src/common/constants.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,10 @@ module.exports = {
157157
title: 'Your project has a new owner',
158158
content: (data) => `${data.firstName} ${data.lastName} is now responsible for project <a href="${data.projectUrl}" rel="nofollow">${data.projectName}</a>. Good luck ${data.firstName}.`,
159159
},
160+
ownerAdded: {
161+
title: 'Ownership changed',
162+
content: (data) => `Your project has a new owner ${data.firstName} ${data.lastName} is now responsible for project Project title. Good luck ${data.firstName}!`,
163+
},
160164
},
161165
},
162166
project: {

src/handlers/memberEvents.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
const config = require('config');
1111
const constants = require('../common/constants');
1212
const util = require('./util');
13+
const _ = require('lodash');
1314

1415
/**
1516
* Create notifications from project.member.added events
@@ -28,16 +29,18 @@ function* memberAdded(logger, data) {
2829
copilot: [],
2930
},
3031
};
31-
32-
if (data.role === constants.memberRoles.customer) {
32+
if (data.role === constants.memberRoles.customer && data.isPrimary) {
33+
topic = constants.notifications.discourse.teamMembers.ownerAdded;
34+
} else if (data.role === constants.memberRoles.customer) {
3335
topic = constants.notifications.discourse.teamMembers.added;
3436
} else if (data.role === constants.memberRoles.manager) {
3537
topic = constants.notifications.discourse.teamMembers.managerJoined;
3638
} else if (data.role === constants.memberRoles.copilot) {
3739
topic = constants.notifications.discourse.teamMembers.copilotJoined;
3840
// Notify project claimed
3941
const slackNotification = util.buildSlackNotification(
40-
{ project,
42+
{
43+
project,
4144
firstName: addedMember.firstName,
4245
lastName: addedMember.lastName,
4346
},

src/test/app.test.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const sampleEvents = {
2727
updatedReviewedAnotherStatus: require('./data/events.updated.reviewed.anotherStatus.json'),
2828
updatedReviewedSameStatus: require('./data/events.updated.reviewed.sameStatus.json'),
2929
memberAddedTeamMember: require('./data/events.memberAdded.teamMember.json'),
30+
memberAddedOwner: require('./data/events.memberAdded.owner.json'),
3031
memberAddedManager: require('./data/events.memberAdded.manager.json'),
3132
memberAddedCopilot: require('./data/events.memberAdded.copilot.json'),
3233
memberRemovedLeft: require('./data/events.memberRemoved.left.json'),
@@ -341,6 +342,18 @@ describe('app', () => {
341342
});
342343

343344
describe('`project.member.added` event', () => {
345+
it('should create `Project.Member.ownerAdded` notification', (done) => {
346+
sendTestEvent(sampleEvents.memberAddedOwner, 'project.member.added');
347+
setTimeout(() => {
348+
const expectedTitle = 'Ownership changed';
349+
const expectedBody = 'Your project has a new owner F_user L_user is now responsible for project Project title. Good luck F_user!';
350+
const params = spy.lastCall.args;
351+
assert.equal(params[2], expectedTitle);
352+
assert.equal(params[3], expectedBody);
353+
done();
354+
}, testTimeout);
355+
});
356+
344357
it('should create `Project.Member.TeamMemberAdded` notification', (done) => {
345358
sendTestEvent(sampleEvents.memberAddedTeamMember, 'project.member.added');
346359
setTimeout(() => {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"id": 1185,
3+
"userId": 40051331,
4+
"role": "customer",
5+
"isPrimary": true,
6+
"createdAt": "2016-11-04T03:57:57.000Z",
7+
"updatedAt": "2016-11-04T03:57:57.000Z",
8+
"createdBy": 40152856,
9+
"updatedBy": 40152856,
10+
"projectId": 1
11+
}

src/test/data/events.memberAdded.teamMember.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"id": 1185,
33
"userId": 40051331,
44
"role": "customer",
5-
"isPrimary": true,
5+
"isPrimary": false,
66
"createdAt": "2016-11-04T03:57:57.000Z",
77
"updatedAt": "2016-11-04T03:57:57.000Z",
88
"createdBy": 40152856,

0 commit comments

Comments
 (0)