mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
* Sleep status is tracked by analytics when toggled. * Modify test: test that analytics is called with 'sleep' event and data passed includes the user's new sleep status
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
generateUser,
|
generateUser,
|
||||||
} from '../../../../helpers/api-integration/v3';
|
} from '../../../../helpers/api-integration/v3';
|
||||||
|
import { mockAnalyticsService as analytics } from '../../../../../website/server/libs/analyticsService';
|
||||||
|
|
||||||
describe('POST /user/sleep', () => {
|
describe('POST /user/sleep', () => {
|
||||||
let user;
|
let user;
|
||||||
@@ -22,4 +23,15 @@ describe('POST /user/sleep', () => {
|
|||||||
await user.sync();
|
await user.sync();
|
||||||
expect(user.preferences.sleep).to.be.false;
|
expect(user.preferences.sleep).to.be.false;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('sends sleep status to analytics service', async () => {
|
||||||
|
sandbox.spy(analytics, 'track');
|
||||||
|
|
||||||
|
await user.post('/user/sleep');
|
||||||
|
await user.sync();
|
||||||
|
expect(analytics.track).to.be.calledOnce;
|
||||||
|
expect(analytics.track).to.be.calledWith('sleep', sandbox.match.has('status', user.preferences.sleep));
|
||||||
|
|
||||||
|
sandbox.restore();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,14 @@
|
|||||||
module.exports = function sleep (user) {
|
module.exports = function sleep (user, req = {}, analytics) {
|
||||||
user.preferences.sleep = !user.preferences.sleep;
|
user.preferences.sleep = !user.preferences.sleep;
|
||||||
|
|
||||||
|
if (analytics) {
|
||||||
|
analytics.track('sleep', {
|
||||||
|
uuid: user._id,
|
||||||
|
status: user.preferences.sleep,
|
||||||
|
category: 'behavior',
|
||||||
|
headers: req.headers,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return [user.preferences.sleep];
|
return [user.preferences.sleep];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -729,7 +729,7 @@ api.sleep = {
|
|||||||
url: '/user/sleep',
|
url: '/user/sleep',
|
||||||
async handler (req, res) {
|
async handler (req, res) {
|
||||||
let user = res.locals.user;
|
let user = res.locals.user;
|
||||||
let sleepRes = common.ops.sleep(user);
|
let sleepRes = common.ops.sleep(user, req, res.analytics);
|
||||||
await user.save();
|
await user.save();
|
||||||
res.respond(200, ...sleepRes);
|
res.respond(200, ...sleepRes);
|
||||||
},
|
},
|
||||||
@@ -787,7 +787,6 @@ api.buy = {
|
|||||||
let quantity = 1;
|
let quantity = 1;
|
||||||
if (req.body.quantity) quantity = req.body.quantity;
|
if (req.body.quantity) quantity = req.body.quantity;
|
||||||
req.quantity = quantity;
|
req.quantity = quantity;
|
||||||
|
|
||||||
buyRes = common.ops.buy(user, req, res.analytics);
|
buyRes = common.ops.buy(user, req, res.analytics);
|
||||||
|
|
||||||
await user.save();
|
await user.save();
|
||||||
|
|||||||
Reference in New Issue
Block a user