mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
Send questInvited webhooks
This commit is contained in:
@@ -2,6 +2,7 @@ import { v4 as generateUUID } from 'uuid';
|
|||||||
import {
|
import {
|
||||||
createAndPopulateGroup,
|
createAndPopulateGroup,
|
||||||
translate as t,
|
translate as t,
|
||||||
|
server,
|
||||||
sleep,
|
sleep,
|
||||||
} from '../../../../helpers/api-integration/v3';
|
} from '../../../../helpers/api-integration/v3';
|
||||||
import { quests as questScrolls } from '../../../../../website/common/script/content/quests';
|
import { quests as questScrolls } from '../../../../../website/common/script/content/quests';
|
||||||
@@ -210,5 +211,39 @@ describe('POST /groups/:groupId/quests/invite/:questKey', () => {
|
|||||||
const returnedGroup = await groupLeader.get(`/groups/${group._id}`);
|
const returnedGroup = await groupLeader.get(`/groups/${group._id}`);
|
||||||
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
context('sending quest activity webhooks', () => {
|
||||||
|
before(async () => {
|
||||||
|
await server.start();
|
||||||
|
});
|
||||||
|
|
||||||
|
after(async () => {
|
||||||
|
await server.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('sends quest invited webhook', async () => {
|
||||||
|
const uuid = generateUUID();
|
||||||
|
|
||||||
|
await member.post('/user/webhook', {
|
||||||
|
url: `http://localhost:${server.port}/webhooks/${uuid}`,
|
||||||
|
type: 'questActivity',
|
||||||
|
enabled: true,
|
||||||
|
options: {
|
||||||
|
questInvited: true,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
|
||||||
|
|
||||||
|
await sleep();
|
||||||
|
|
||||||
|
const body = server.getWebhookData(uuid);
|
||||||
|
|
||||||
|
expect(body.type).to.eql('questInvited');
|
||||||
|
expect(body.group.id).to.eql(questingGroup.id);
|
||||||
|
expect(body.group.name).to.eql(questingGroup.name);
|
||||||
|
expect(body.quest.key).to.eql(PET_QUEST);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ import {
|
|||||||
import common from '../../../common';
|
import common from '../../../common';
|
||||||
import { sendNotification as sendPushNotification } from '../../libs/pushNotifications';
|
import { sendNotification as sendPushNotification } from '../../libs/pushNotifications';
|
||||||
import apiError from '../../libs/apiError';
|
import apiError from '../../libs/apiError';
|
||||||
|
import { questActivityWebhook } from '../../libs/webhook';
|
||||||
|
|
||||||
const questScrolls = common.content.quests;
|
const questScrolls = common.content.quests;
|
||||||
|
|
||||||
@@ -79,7 +80,7 @@ api.inviteToQuest = {
|
|||||||
'party._id': group._id,
|
'party._id': group._id,
|
||||||
_id: { $ne: user._id },
|
_id: { $ne: user._id },
|
||||||
})
|
})
|
||||||
.select('auth.facebook auth.google auth.local preferences.emailNotifications preferences.pushNotifications preferences.language profile.name pushDevices')
|
.select('auth.facebook auth.google auth.local preferences.emailNotifications preferences.pushNotifications preferences.language profile.name pushDevices webhooks')
|
||||||
.exec();
|
.exec();
|
||||||
|
|
||||||
group.markModified('quest');
|
group.markModified('quest');
|
||||||
@@ -132,6 +133,13 @@ api.inviteToQuest = {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send webhooks
|
||||||
|
questActivityWebhook.send(member, {
|
||||||
|
type: 'questInvited',
|
||||||
|
group,
|
||||||
|
quest,
|
||||||
|
});
|
||||||
|
|
||||||
return member.preferences.emailNotifications.invitedQuest !== false;
|
return member.preferences.emailNotifications.invitedQuest !== false;
|
||||||
});
|
});
|
||||||
sendTxnEmail(membersToEmail, `invite-${quest.boss ? 'boss' : 'collection'}-quest`, [
|
sendTxnEmail(membersToEmail, `invite-${quest.boss ? 'boss' : 'collection'}-quest`, [
|
||||||
|
|||||||
Reference in New Issue
Block a user