chore(lint): lint files in preparation for eslint v2

This commit is contained in:
Blade Barringer
2016-04-15 08:15:09 -05:00
parent 1a64886f7d
commit 33c0cdd569
48 changed files with 140 additions and 122 deletions

View File

@@ -2,7 +2,7 @@
let pathToCommon; let pathToCommon;
if (process.env.NODE_ENV === 'production') { if (process.env.NODE_ENV === 'production') { // eslint-disable-line no-process-env
pathToCommon = './transpiled-babel/index'; pathToCommon = './transpiled-babel/index';
} else { } else {
pathToCommon = './script/index'; pathToCommon = './script/index';

View File

@@ -11,27 +11,32 @@ function getStatToAllocate (user) {
let suggested; let suggested;
switch (user.preferences.allocationMode) { switch (user.preferences.allocationMode) {
case 'flat': case 'flat': {
let stats = _.pick(user.stats, splitWhitespace('con str per int')); let stats = _.pick(user.stats, splitWhitespace('con str per int'));
return _.invert(stats)[_.min(stats)]; return _.invert(stats)[_.min(stats)];
case 'classbased': }
case 'classbased': {
let lvlDiv7 = user.stats.lvl / 7; let lvlDiv7 = user.stats.lvl / 7;
let ideal = [lvlDiv7 * 3, lvlDiv7 * 2, lvlDiv7, lvlDiv7]; let ideal = [lvlDiv7 * 3, lvlDiv7 * 2, lvlDiv7, lvlDiv7];
let preference; let preference;
switch (user.stats.class) { switch (user.stats.class) {
case 'wizard': case 'wizard': {
preference = ['int', 'per', 'con', 'str']; preference = ['int', 'per', 'con', 'str'];
break; break;
case 'rogue': }
case 'rogue': {
preference = ['per', 'str', 'int', 'con']; preference = ['per', 'str', 'int', 'con'];
break; break;
case 'healer': }
case 'healer': {
preference = ['con', 'int', 'str', 'per']; preference = ['con', 'int', 'str', 'per'];
break; break;
default: }
default: {
preference = ['str', 'con', 'per', 'int']; preference = ['str', 'con', 'per', 'int'];
} }
}
let diff = [ let diff = [
user.stats[preference[0]] - ideal[0], user.stats[preference[0]] - ideal[0],
@@ -45,7 +50,8 @@ function getStatToAllocate (user) {
}); });
return suggested !== -1 ? preference[suggested] : 'str'; return suggested !== -1 ? preference[suggested] : 'str';
case 'taskbased': }
case 'taskbased': {
suggested = _.invert(user.stats.training)[_.max(user.stats.training)]; suggested = _.invert(user.stats.training)[_.max(user.stats.training)];
let training = user.stats.training; let training = user.stats.training;
@@ -55,9 +61,11 @@ function getStatToAllocate (user) {
training.per = 0; training.per = 0;
return suggested || 'str'; return suggested || 'str';
default: }
default: {
return 'str'; return 'str';
} }
}
} }
module.exports = function autoAllocate (user) { module.exports = function autoAllocate (user) {

View File

@@ -21,24 +21,24 @@ module.exports = function equip (user, req = {}) {
let message; let message;
switch (type) { switch (type) {
case 'mount': case 'mount': {
if (!user.items.mounts[key]) { if (!user.items.mounts[key]) {
throw new NotFound(i18n.t('mountNotOwned', req.language)); throw new NotFound(i18n.t('mountNotOwned', req.language));
} }
user.items.currentMount = user.items.currentMount === key ? '' : key; user.items.currentMount = user.items.currentMount === key ? '' : key;
break; break;
}
case 'pet': case 'pet': {
if (!user.items.pets[key]) { if (!user.items.pets[key]) {
throw new NotFound(i18n.t('petNotOwned', req.language)); throw new NotFound(i18n.t('petNotOwned', req.language));
} }
user.items.currentPet = user.items.currentPet === key ? '' : key; user.items.currentPet = user.items.currentPet === key ? '' : key;
break; break;
}
case 'costume': case 'costume':
case 'equipped': case 'equipped': {
if (!user.items.gear.owned[key]) { if (!user.items.gear.owned[key]) {
throw new NotFound(i18n.t('gearNotOwned', req.language)); throw new NotFound(i18n.t('gearNotOwned', req.language));
} }
@@ -56,6 +56,7 @@ module.exports = function equip (user, req = {}) {
} }
break; break;
} }
}
let res = { let res = {
data: user.items, data: user.items,

View File

@@ -19,8 +19,8 @@ describe('POST /user/tasks/clear-completed', () => {
await user.post(`/user/tasks/${toComplete._id}/up`); await user.post(`/user/tasks/${toComplete._id}/up`);
let todos = await user.get(`/user/tasks?type=todo`); let todos = await user.get('/user/tasks?type=todo');
let uncomplete = await user.post(`/user/tasks/clear-completed`); let uncomplete = await user.post('/user/tasks/clear-completed');
expect(todos.length).to.equal(uncomplete.length + 1); expect(todos.length).to.equal(uncomplete.length + 1);
}); });
}); });

View File

@@ -11,7 +11,7 @@ import { v4 as generateUUID } from 'uuid';
describe('DELETE /challenges/:challengeId', () => { describe('DELETE /challenges/:challengeId', () => {
it('returns error when challengeId is not a valid UUID', async () => { it('returns error when challengeId is not a valid UUID', async () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.del(`/challenges/test`)).to.eventually.be.rejected.and.eql({ await expect(user.del('/challenges/test')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -29,7 +29,7 @@ describe('GET challenges/user', () => {
it('should return challenges user has joined', async () => { it('should return challenges user has joined', async () => {
await nonMember.post(`/challenges/${challenge._id}/join`); await nonMember.post(`/challenges/${challenge._id}/join`);
let challenges = await nonMember.get(`/challenges/user`); let challenges = await nonMember.get('/challenges/user');
let foundChallenge = _.find(challenges, { _id: challenge._id }); let foundChallenge = _.find(challenges, { _id: challenge._id });
expect(foundChallenge).to.exist; expect(foundChallenge).to.exist;
@@ -46,7 +46,7 @@ describe('GET challenges/user', () => {
}); });
it('should return challenges user has created', async () => { it('should return challenges user has created', async () => {
let challenges = await user.get(`/challenges/user`); let challenges = await user.get('/challenges/user');
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); let foundChallenge1 = _.find(challenges, { _id: challenge._id });
expect(foundChallenge1).to.exist; expect(foundChallenge1).to.exist;
@@ -75,7 +75,7 @@ describe('GET challenges/user', () => {
}); });
it('should return challenges in user\'s group', async () => { it('should return challenges in user\'s group', async () => {
let challenges = await member.get(`/challenges/user`); let challenges = await member.get('/challenges/user');
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); let foundChallenge1 = _.find(challenges, { _id: challenge._id });
expect(foundChallenge1).to.exist; expect(foundChallenge1).to.exist;
@@ -114,7 +114,7 @@ describe('GET challenges/user', () => {
let privateChallenge = await generateChallenge(groupLeader, group); let privateChallenge = await generateChallenge(groupLeader, group);
let challenges = await nonMember.get(`/challenges/user`); let challenges = await nonMember.get('/challenges/user');
let foundChallenge = _.find(challenges, { _id: privateChallenge._id }); let foundChallenge = _.find(challenges, { _id: privateChallenge._id });
expect(foundChallenge).to.not.exist; expect(foundChallenge).to.not.exist;

View File

@@ -19,7 +19,7 @@ describe('POST /challenges', () => {
it('returns error when groupId is not for a valid group', async () => { it('returns error when groupId is not for a valid group', async () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.post(`/challenges`, { await expect(user.post('/challenges', {
group: generateUUID(), group: generateUUID(),
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 404, code: 404,
@@ -31,7 +31,7 @@ describe('POST /challenges', () => {
it('returns error when creating a challenge in the tavern with no prize', async () => { it('returns error when creating a challenge in the tavern with no prize', async () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.post(`/challenges`, { await expect(user.post('/challenges', {
group: 'habitrpg', group: 'habitrpg',
prize: 0, prize: 0,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
@@ -50,7 +50,7 @@ describe('POST /challenges', () => {
}, },
}); });
await expect(user.post(`/challenges`, { await expect(user.post('/challenges', {
group: group._id, group: group._id,
prize: 4, prize: 4,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
@@ -85,7 +85,7 @@ describe('POST /challenges', () => {
}); });
it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => { it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => {
await expect(groupMember.post(`/challenges`, { await expect(groupMember.post('/challenges', {
group: group._id, group: group._id,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
@@ -95,7 +95,7 @@ describe('POST /challenges', () => {
}); });
it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => { it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => {
await expect(groupMember.post(`/challenges`, { await expect(groupMember.post('/challenges', {
group: group._id, group: group._id,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
@@ -112,7 +112,7 @@ describe('POST /challenges', () => {
group = populatedGroup.group; group = populatedGroup.group;
groupMember = populatedGroup.members[0]; groupMember = populatedGroup.members[0];
let chal = await groupMember.post(`/challenges`, { let chal = await groupMember.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -128,7 +128,7 @@ describe('POST /challenges', () => {
let oldUserBalance = groupLeader.balance; let oldUserBalance = groupLeader.balance;
let oldGroupBalance = group.balance; let oldGroupBalance = group.balance;
await groupLeader.post(`/challenges`, { await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -140,7 +140,7 @@ describe('POST /challenges', () => {
}); });
it('returns error when user and group can\'t pay prize', async () => { it('returns error when user and group can\'t pay prize', async () => {
await expect(groupLeader.post(`/challenges`, { await expect(groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -157,7 +157,7 @@ describe('POST /challenges', () => {
let oldGroupBalance = group.balance; let oldGroupBalance = group.balance;
let prize = 4; let prize = 4;
await groupLeader.post(`/challenges`, { await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -172,7 +172,7 @@ describe('POST /challenges', () => {
let oldUserBalance = groupLeader.balance; let oldUserBalance = groupLeader.balance;
let prize = 8; let prize = 8;
await groupLeader.post(`/challenges`, { await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -188,7 +188,7 @@ describe('POST /challenges', () => {
let prize = 8; let prize = 8;
await group.update({ balance: 0}); await group.update({ balance: 0});
await groupLeader.post(`/challenges`, { await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -202,7 +202,7 @@ describe('POST /challenges', () => {
it('increases challenge count of group', async () => { it('increases challenge count of group', async () => {
let oldChallengeCount = group.challengeCount; let oldChallengeCount = group.challengeCount;
await groupLeader.post(`/challenges`, { await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -218,7 +218,7 @@ describe('POST /challenges', () => {
}, },
}); });
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -229,7 +229,7 @@ describe('POST /challenges', () => {
}); });
it('doesn\'t set challenge as official if official flag is set by non-admin', async () => { it('doesn\'t set challenge as official if official flag is set by non-admin', async () => {
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
@@ -245,7 +245,7 @@ describe('POST /challenges', () => {
let oldUserChallenges = groupLeader.challenges; let oldUserChallenges = groupLeader.challenges;
let oldGroupBalance = group.balance; let oldGroupBalance = group.balance;
await expect(groupLeader.post(`/challenges`, { await expect(groupLeader.post('/challenges', {
group: group._id, group: group._id,
prize: 8, prize: 8,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
@@ -269,7 +269,7 @@ describe('POST /challenges', () => {
let description = 'Test Description'; let description = 'Test Description';
let prize = 4; let prize = 4;
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name, name,
shortName, shortName,
@@ -296,7 +296,7 @@ describe('POST /challenges', () => {
}); });
it('adds challenge to creator\'s challenges', async () => { it('adds challenge to creator\'s challenges', async () => {
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post('/challenges', {
group: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',

View File

@@ -16,7 +16,7 @@ describe('GET /coupons/', () => {
it('returns an error if user has no sudo permission', async () => { it('returns an error if user has no sudo permission', async () => {
await user.get('/user'); // needed so the request after this will authenticate with the correct cookie session await user.get('/user'); // needed so the request after this will authenticate with the correct cookie session
await expect(user.get(`/coupons`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/coupons')).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t('noSudoAccess'), message: t('noSudoAccess'),
@@ -29,7 +29,7 @@ describe('GET /coupons/', () => {
}); });
let coupons = await user.post('/coupons/generate/wondercon?count=11'); let coupons = await user.post('/coupons/generate/wondercon?count=11');
let res = await user.get(`/coupons`); let res = await user.get('/coupons');
let splitRes = res.split('\n'); let splitRes = res.split('\n');
expect(splitRes.length).to.equal(13); expect(splitRes.length).to.equal(13);

View File

@@ -20,7 +20,7 @@ describe('POST /coupons/enter/:code', () => {
}); });
it('returns an error if code is missing', async () => { it('returns an error if code is missing', async () => {
await expect(user.post(`/coupons/enter`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/enter')).to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',
message: 'Not found.', message: 'Not found.',
@@ -28,7 +28,7 @@ describe('POST /coupons/enter/:code', () => {
}); });
it('returns an error if code is invalid', async () => { it('returns an error if code is invalid', async () => {
await expect(user.post(`/coupons/enter/notValid`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/enter/notValid')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidCoupon'), message: t('invalidCoupon'),

View File

@@ -22,7 +22,7 @@ describe('POST /coupons/generate/:event', () => {
'contributor.sudo': false, 'contributor.sudo': false,
}); });
await expect(user.post(`/coupons/generate/aaa`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/generate/aaa')).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t('noSudoAccess'), message: t('noSudoAccess'),
@@ -30,7 +30,7 @@ describe('POST /coupons/generate/:event', () => {
}); });
it('returns an error if event is missing', async () => { it('returns an error if event is missing', async () => {
await expect(user.post(`/coupons/generate`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/generate')).to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',
message: 'Not found.', message: 'Not found.',
@@ -38,7 +38,7 @@ describe('POST /coupons/generate/:event', () => {
}); });
it('returns an error if event is invalid', async () => { it('returns an error if event is invalid', async () => {
await expect(user.post(`/coupons/generate/notValid?count=1`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/generate/notValid?count=1')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: 'Coupon validation failed', message: 'Coupon validation failed',
@@ -46,7 +46,7 @@ describe('POST /coupons/generate/:event', () => {
}); });
it('returns an error if count is missing', async () => { it('returns an error if count is missing', async () => {
await expect(user.post(`/coupons/generate/notValid`)).to.eventually.be.rejected.and.eql({ await expect(user.post('/coupons/generate/notValid')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -12,7 +12,7 @@ describe('POST /coupons/validate/:code', () => {
}); });
it('returns an error if code is missing', async () => { it('returns an error if code is missing', async () => {
await expect(api.post(`/coupons/validate`)).to.eventually.be.rejected.and.eql({ await expect(api.post('/coupons/validate')).to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',
message: 'Not found.', message: 'Not found.',
@@ -30,7 +30,7 @@ describe('POST /coupons/validate/:code', () => {
}); });
it('returns false if coupon code is valid', async () => { it('returns false if coupon code is valid', async () => {
let res = await api.post(`/coupons/validate/notValid`); let res = await api.post('/coupons/validate/notValid');
expect(res).to.eql({valid: false}); expect(res).to.eql({valid: false});
}); });
}); });

View File

@@ -12,7 +12,7 @@ describe('GET /export/avatar-:memberId.html', () => {
}); });
it('validates req.params.memberId', async () => { it('validates req.params.memberId', async () => {
await expect(user.get(`/export/avatar-:memberId.html`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/export/avatar-:memberId.html')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -34,7 +34,7 @@ describe('GET /export/history.csv', () => {
return user.get(`/tasks/${task._id}`); return user.get(`/tasks/${task._id}`);
})); }));
let res = await user.get(`/export/history.csv`); let res = await user.get('/export/history.csv');
let splitRes = res.split('\n'); let splitRes = res.split('\n');
expect(splitRes[0]).to.equal('Task Name,Task ID,Task Type,Date,Value'); expect(splitRes[0]).to.equal('Task Name,Task ID,Task Type,Date,Value');
expect(splitRes[1]).to.equal(`habit 1,${tasks[0]._id},habit,${moment(tasks[0].history[0].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[0].history[0].value}`); expect(splitRes[1]).to.equal(`habit 1,${tasks[0]._id},habit,${moment(tasks[0].history[0].date).format('YYYY-MM-DD HH:mm:ss')},${tasks[0].history[0].value}`);

View File

@@ -12,7 +12,7 @@ describe('GET /export/userdata.json', () => {
{type: 'todo', text: 'todo 1'}, {type: 'todo', text: 'todo 1'},
]); ]);
let res = await user.get(`/export/userdata.json`); let res = await user.get('/export/userdata.json');
expect(res._id).to.equal(user._id); expect(res._id).to.equal(user._id);
expect(res).to.contain.all.keys(['tasks', 'flags', 'tasksOrder', 'auth']); expect(res).to.contain.all.keys(['tasks', 'flags', 'tasksOrder', 'auth']);
expect(res.auth.local).not.to.have.keys(['salt', 'hashed_password']); expect(res.auth.local).not.to.have.keys(['salt', 'hashed_password']);

View File

@@ -21,7 +21,7 @@ describe('GET /export/userdata.xml', () => {
]); ]);
let response = await user.get(`/export/userdata.xml`); let response = await user.get('/export/userdata.xml');
let {user: res} = await Q.npost(xml2js, 'parseString', [response, {explicitArray: false}]); let {user: res} = await Q.npost(xml2js, 'parseString', [response, {explicitArray: false}]);
expect(res._id).to.equal(user._id); expect(res._id).to.equal(user._id);

View File

@@ -13,7 +13,7 @@ describe('GET /groups/:groupId/invites', () => {
}); });
it('validates optional req.query.lastId to be an UUID', async () => { it('validates optional req.query.lastId to be an UUID', async () => {
await expect(user.get(`/groups/groupId/invites?lastId=invalidUUID`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/groups/groupId/invites?lastId=invalidUUID')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),
@@ -42,7 +42,7 @@ describe('GET /groups/:groupId/invites', () => {
let group = await generateGroup(user, {type: 'party', name: generateUUID()}); let group = await generateGroup(user, {type: 'party', name: generateUUID()});
let invited = await generateUser(); let invited = await generateUser();
await user.post(`/groups/${group._id}/invite`, {uuids: [invited._id]}); await user.post(`/groups/${group._id}/invite`, {uuids: [invited._id]});
let res = await user.get(`/groups/party/invites`); let res = await user.get('/groups/party/invites');
expect(res).to.be.an('array'); expect(res).to.be.an('array');
expect(res.length).to.equal(1); expect(res.length).to.equal(1);
@@ -56,7 +56,7 @@ describe('GET /groups/:groupId/invites', () => {
let group = await generateGroup(user, {type: 'party', name: generateUUID()}); let group = await generateGroup(user, {type: 'party', name: generateUUID()});
let invited = await generateUser(); let invited = await generateUser();
await user.post(`/groups/${group._id}/invite`, {uuids: [invited._id]}); await user.post(`/groups/${group._id}/invite`, {uuids: [invited._id]});
let res = await user.get(`/groups/party/invites`); let res = await user.get('/groups/party/invites');
expect(res[0]).to.have.all.keys(['_id', 'profile']); expect(res[0]).to.have.all.keys(['_id', 'profile']);
expect(res[0].profile).to.have.all.keys(['name']); expect(res[0].profile).to.have.all.keys(['name']);
}); });
@@ -70,7 +70,7 @@ describe('GET /groups/:groupId/invites', () => {
let generatedInvites = await Promise.all(invitesToGenerate); let generatedInvites = await Promise.all(invitesToGenerate);
await user.post(`/groups/${group._id}/invite`, {uuids: generatedInvites.map(invite => invite._id)}); await user.post(`/groups/${group._id}/invite`, {uuids: generatedInvites.map(invite => invite._id)});
let res = await user.get(`/groups/party/invites`); let res = await user.get('/groups/party/invites');
expect(res.length).to.equal(30); expect(res.length).to.equal(30);
res.forEach(member => { res.forEach(member => {
expect(member).to.have.all.keys(['_id', 'profile']); expect(member).to.have.all.keys(['_id', 'profile']);

View File

@@ -13,7 +13,7 @@ describe('GET /groups/:groupId/members', () => {
}); });
it('validates optional req.query.lastId to be an UUID', async () => { it('validates optional req.query.lastId to be an UUID', async () => {
await expect(user.get(`/groups/groupId/members?lastId=invalidUUID`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/groups/groupId/members?lastId=invalidUUID')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),
@@ -40,7 +40,7 @@ describe('GET /groups/:groupId/members', () => {
it('works when passing party as req.params.groupId', async () => { it('works when passing party as req.params.groupId', async () => {
await generateGroup(user, {type: 'party', name: generateUUID()}); await generateGroup(user, {type: 'party', name: generateUUID()});
let res = await user.get(`/groups/party/members`); let res = await user.get('/groups/party/members');
expect(res).to.be.an('array'); expect(res).to.be.an('array');
expect(res.length).to.equal(1); expect(res.length).to.equal(1);
expect(res[0]).to.eql({ expect(res[0]).to.eql({
@@ -51,7 +51,7 @@ describe('GET /groups/:groupId/members', () => {
it('populates only some fields', async () => { it('populates only some fields', async () => {
await generateGroup(user, {type: 'party', name: generateUUID()}); await generateGroup(user, {type: 'party', name: generateUUID()});
let res = await user.get(`/groups/party/members`); let res = await user.get('/groups/party/members');
expect(res[0]).to.have.all.keys(['_id', 'profile']); expect(res[0]).to.have.all.keys(['_id', 'profile']);
expect(res[0].profile).to.have.all.keys(['name']); expect(res[0].profile).to.have.all.keys(['name']);
}); });
@@ -65,7 +65,7 @@ describe('GET /groups/:groupId/members', () => {
} }
await Promise.all(usersToGenerate); await Promise.all(usersToGenerate);
let res = await user.get(`/groups/party/members`); let res = await user.get('/groups/party/members');
expect(res.length).to.equal(30); expect(res.length).to.equal(30);
res.forEach(member => { res.forEach(member => {
expect(member).to.have.all.keys(['_id', 'profile']); expect(member).to.have.all.keys(['_id', 'profile']);

View File

@@ -24,7 +24,7 @@ describe('GET /heroes/:heroId', () => {
}); });
it('validates req.params.heroId', async () => { it('validates req.params.heroId', async () => {
await expect(user.get(`/hall/heroes/invalidUUID`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/hall/heroes/invalidUUID')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -14,7 +14,7 @@ describe('GET /hall/patrons', () => {
}); });
it('fails if req.query.page is not numeric', async () => { it('fails if req.query.page is not numeric', async () => {
await expect(user.get(`/hall/patrons?page=notNumber`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/hall/patrons?page=notNumber')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -24,7 +24,7 @@ describe('PUT /heroes/:heroId', () => {
}); });
it('validates req.params.heroId', async () => { it('validates req.params.heroId', async () => {
await expect(user.put(`/hall/heroes/invalidUUID`)).to.eventually.be.rejected.and.eql({ await expect(user.put('/hall/heroes/invalidUUID')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -12,7 +12,7 @@ describe('GET /members/:memberId', () => {
}); });
it('validates req.params.memberId', async () => { it('validates req.params.memberId', async () => {
await expect(user.get(`/members/invalidUUID`)).to.eventually.be.rejected.and.eql({ await expect(user.get('/members/invalidUUID')).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
message: t('invalidReqParams'), message: t('invalidReqParams'),

View File

@@ -94,7 +94,7 @@ describe('POST /tasks/:id/score/:direction', () => {
beforeEach(async () => { beforeEach(async () => {
await user.post(`/tasks/${todo._id}/score/up`); await user.post(`/tasks/${todo._id}/score/up`);
updatedUser = await user.get(`/user`); updatedUser = await user.get('/user');
}); });
it('increases user\'s mp', () => { it('increases user\'s mp', () => {
@@ -115,7 +115,7 @@ describe('POST /tasks/:id/score/:direction', () => {
beforeEach(async () => { beforeEach(async () => {
await user.post(`/tasks/${todo._id}/score/down`); await user.post(`/tasks/${todo._id}/score/down`);
updatedUser = await user.get(`/user`); updatedUser = await user.get('/user');
}); });
it('decreases user\'s mp', () => { it('decreases user\'s mp', () => {
@@ -165,7 +165,7 @@ describe('POST /tasks/:id/score/:direction', () => {
beforeEach(async () => { beforeEach(async () => {
await user.post(`/tasks/${daily._id}/score/up`); await user.post(`/tasks/${daily._id}/score/up`);
updatedUser = await user.get(`/user`); updatedUser = await user.get('/user');
}); });
it('increases user\'s mp', () => { it('increases user\'s mp', () => {
@@ -186,7 +186,7 @@ describe('POST /tasks/:id/score/:direction', () => {
beforeEach(async () => { beforeEach(async () => {
await user.post(`/tasks/${daily._id}/score/down`); await user.post(`/tasks/${daily._id}/score/down`);
updatedUser = await user.get(`/user`); updatedUser = await user.get('/user');
}); });
it('decreases user\'s mp', () => { it('decreases user\'s mp', () => {
@@ -238,28 +238,28 @@ describe('POST /tasks/:id/score/:direction', () => {
it('increases user\'s mp when direction is up', async () => { it('increases user\'s mp when direction is up', async () => {
await user.post(`/tasks/${habit._id}/score/up`); await user.post(`/tasks/${habit._id}/score/up`);
let updatedUser = await user.get(`/user`); let updatedUser = await user.get('/user');
expect(updatedUser.stats.mp).to.be.greaterThan(user.stats.mp); expect(updatedUser.stats.mp).to.be.greaterThan(user.stats.mp);
}); });
it('decreases user\'s mp when direction is down', async () => { it('decreases user\'s mp when direction is down', async () => {
await user.post(`/tasks/${habit._id}/score/down`); await user.post(`/tasks/${habit._id}/score/down`);
let updatedUser = await user.get(`/user`); let updatedUser = await user.get('/user');
expect(updatedUser.stats.mp).to.be.lessThan(user.stats.mp); expect(updatedUser.stats.mp).to.be.lessThan(user.stats.mp);
}); });
it('increases user\'s exp when direction is up', async () => { it('increases user\'s exp when direction is up', async () => {
await user.post(`/tasks/${habit._id}/score/up`); await user.post(`/tasks/${habit._id}/score/up`);
let updatedUser = await user.get(`/user`); let updatedUser = await user.get('/user');
expect(updatedUser.stats.exp).to.be.greaterThan(user.stats.exp); expect(updatedUser.stats.exp).to.be.greaterThan(user.stats.exp);
}); });
it('increases user\'s gold when direction is up', async () => { it('increases user\'s gold when direction is up', async () => {
await user.post(`/tasks/${habit._id}/score/up`); await user.post(`/tasks/${habit._id}/score/up`);
let updatedUser = await user.get(`/user`); let updatedUser = await user.get('/user');
expect(updatedUser.stats.gp).to.be.greaterThan(user.stats.gp); expect(updatedUser.stats.gp).to.be.greaterThan(user.stats.gp);
}); });
@@ -276,7 +276,7 @@ describe('POST /tasks/:id/score/:direction', () => {
}); });
await user.post(`/tasks/${reward._id}/score/up`); await user.post(`/tasks/${reward._id}/score/up`);
updatedUser = await user.get(`/user`); updatedUser = await user.get('/user');
}); });
it('purchases reward', () => { it('purchases reward', () => {

View File

@@ -13,7 +13,7 @@ describe('POST /user/allocate', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error if an invalid attribute is supplied', async () => { it('returns an error if an invalid attribute is supplied', async () => {
await expect(user.post(`/user/allocate?stat=invalid`)) await expect(user.post('/user/allocate?stat=invalid'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
@@ -22,7 +22,7 @@ describe('POST /user/allocate', () => {
}); });
it('returns an error if the user doesn\'t have attribute points', async () => { it('returns an error if the user doesn\'t have attribute points', async () => {
await expect(user.post(`/user/allocate`)) await expect(user.post('/user/allocate'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -32,7 +32,7 @@ describe('POST /user/allocate', () => {
it('allocates attribute points', async () => { it('allocates attribute points', async () => {
await user.update({'stats.points': 1}); await user.update({'stats.points': 1});
let res = await user.post(`/user/allocate?stat=con`); let res = await user.post('/user/allocate?stat=con');
await user.sync(); await user.sync();
expect(user.stats.con).to.equal(1); expect(user.stats.con).to.equal(1);
expect(user.stats.points).to.equal(0); expect(user.stats.points).to.equal(0);

View File

@@ -15,7 +15,7 @@ describe('POST /user/allocate-now', () => {
'preferences.allocationMode': 'flat', 'preferences.allocationMode': 'flat',
}); });
let res = await user.post(`/user/allocate-now`); let res = await user.post('/user/allocate-now');
await user.sync(); await user.sync();
expect(res).to.eql({ expect(res).to.eql({

View File

@@ -18,7 +18,7 @@ describe('POST /user/buy/:key', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error if the item is not found', async () => { it('returns an error if the item is not found', async () => {
await expect(user.post(`/user/buy/notExisting`)) await expect(user.post('/user/buy/notExisting'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',
@@ -28,7 +28,7 @@ describe('POST /user/buy/:key', () => {
it('buys an item', async () => { it('buys an item', async () => {
let potion = content.potion; let potion = content.potion;
let res = await user.post(`/user/buy/potion`); let res = await user.post('/user/buy/potion');
await user.sync(); await user.sync();
expect(res.data).to.eql({ expect(res.data).to.eql({

View File

@@ -15,7 +15,7 @@ describe('POST /user/buy-mystery-set/:key', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error if the mystery set is not found', async () => { it('returns an error if the mystery set is not found', async () => {
await expect(user.post(`/user/buy-mystery-set/notExisting`)) await expect(user.post('/user/buy-mystery-set/notExisting'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',

View File

@@ -16,7 +16,7 @@ describe('POST /user/buy-quest/:key', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error if the quest is not found', async () => { it('returns an error if the quest is not found', async () => {
await expect(user.post(`/user/buy-quest/notExisting`)) await expect(user.post('/user/buy-quest/notExisting'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',

View File

@@ -16,7 +16,7 @@ describe('POST /user/buy-special-spell/:key', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error if the special spell is not found', async () => { it('returns an error if the special spell is not found', async () => {
await expect(user.post(`/user/buy-special-spell/notExisting`)) await expect(user.post('/user/buy-special-spell/notExisting'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',

View File

@@ -15,7 +15,7 @@ describe('POST /user/change-class', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('changes class', async () => { it('changes class', async () => {
let res = await user.post(`/user/change-class?class=rogue`); let res = await user.post('/user/change-class?class=rogue');
await user.sync(); await user.sync();
expect(res).to.eql({ expect(res).to.eql({

View File

@@ -38,7 +38,7 @@ describe('POST /user/class/cast/:spellId', () => {
it('returns an error if spell.mana > user.mana', async () => { it('returns an error if spell.mana > user.mana', async () => {
await user.update({'stats.class': 'rogue'}); await user.update({'stats.class': 'rogue'});
await expect(user.post(`/user/class/cast/backStab`)) await expect(user.post('/user/class/cast/backStab'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -47,7 +47,7 @@ describe('POST /user/class/cast/:spellId', () => {
}); });
it('returns an error if spell.value > user.gold', async () => { it('returns an error if spell.value > user.gold', async () => {
await expect(user.post(`/user/class/cast/birthday`)) await expect(user.post('/user/class/cast/birthday'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -57,7 +57,7 @@ describe('POST /user/class/cast/:spellId', () => {
it('returns an error if spell.lvl > user.level', async () => { it('returns an error if spell.lvl > user.level', async () => {
await user.update({'stats.mp': 200, 'stats.class': 'wizard'}); await user.update({'stats.mp': 200, 'stats.class': 'wizard'});
await expect(user.post(`/user/class/cast/earth`)) await expect(user.post('/user/class/cast/earth'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -66,7 +66,7 @@ describe('POST /user/class/cast/:spellId', () => {
}); });
it('returns an error if user doesn\'t own the spell', async () => { it('returns an error if user doesn\'t own the spell', async () => {
await expect(user.post(`/user/class/cast/snowball`)) await expect(user.post('/user/class/cast/snowball'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -85,7 +85,7 @@ describe('POST /user/class/cast/:spellId', () => {
it('returns an error if targetId is required but missing', async () => { it('returns an error if targetId is required but missing', async () => {
await user.update({'stats.class': 'rogue', 'stats.lvl': 11}); await user.update({'stats.class': 'rogue', 'stats.lvl': 11});
await expect(user.post(`/user/class/cast/pickPocket`)) await expect(user.post('/user/class/cast/pickPocket'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 400, code: 400,
error: 'BadRequest', error: 'BadRequest',
@@ -153,7 +153,7 @@ describe('POST /user/class/cast/:spellId', () => {
members: 1, members: 1,
}); });
await groupLeader.update({'stats.mp': 200, 'stats.class': 'wizard', 'stats.lvl': 13}); await groupLeader.update({'stats.mp': 200, 'stats.class': 'wizard', 'stats.lvl': 13});
await groupLeader.post(`/user/class/cast/earth`); await groupLeader.post('/user/class/cast/earth');
await sleep(1); await sleep(1);
await group.sync(); await group.sync();
expect(group.chat[0]).to.exists; expect(group.chat[0]).to.exists;

View File

@@ -12,7 +12,7 @@ describe('POST /user/disable-classes', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('disable classes', async () => { it('disable classes', async () => {
let res = await user.post(`/user/disable-classes`); let res = await user.post('/user/disable-classes');
await user.sync(); await user.sync();
expect(res).to.eql({ expect(res).to.eql({

View File

@@ -31,8 +31,8 @@ describe('POST /user/equip/:type/:key', () => {
'stats.gp': 200, 'stats.gp': 200,
}); });
await user.post(`/user/equip/equipped/weapon_warrior_1`); await user.post('/user/equip/equipped/weapon_warrior_1');
let res = await user.post(`/user/equip/equipped/weapon_warrior_2`); let res = await user.post('/user/equip/equipped/weapon_warrior_2');
await user.sync(); await user.sync();
expect(res).to.eql({ expect(res).to.eql({

View File

@@ -26,7 +26,7 @@ describe('POST /user/feed/:pet/:food', () => {
let potionText = content.hatchingPotions[potion] ? content.hatchingPotions[potion].text() : potion; let potionText = content.hatchingPotions[potion] ? content.hatchingPotions[potion].text() : potion;
let eggText = content.eggs[egg] ? content.eggs[egg].text() : egg; let eggText = content.eggs[egg] ? content.eggs[egg].text() : egg;
let res = await user.post(`/user/feed/Wolf-Base/Milk`); let res = await user.post('/user/feed/Wolf-Base/Milk');
await user.sync(); await user.sync();
expect(res).to.eql({ expect(res).to.eql({
data: user.items.pets['Wolf-Base'], data: user.items.pets['Wolf-Base'],

View File

@@ -17,7 +17,7 @@ describe('POST /user/hatch/:egg/:hatchingPotion', () => {
'items.eggs.Wolf': 1, 'items.eggs.Wolf': 1,
'items.hatchingPotions.Base': 1, 'items.hatchingPotions.Base': 1,
}); });
let res = await user.post(`/user/hatch/Wolf/Base`); let res = await user.post('/user/hatch/Wolf/Base');
await user.sync(); await user.sync();
expect(user.items.pets['Wolf-Base']).to.equal(5); expect(user.items.pets['Wolf-Base']).to.equal(5);
expect(user.items.eggs.Wolf).to.equal(0); expect(user.items.eggs.Wolf).to.equal(0);

View File

@@ -16,7 +16,7 @@ describe('POST /user/open-mystery-item', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('opens a mystery item', async () => { it('opens a mystery item', async () => {
let response = await user.post(`/user/open-mystery-item`); let response = await user.post('/user/open-mystery-item');
await user.sync(); await user.sync();
expect(user.items.gear.owned[mysteryItemKey]).to.be.true; expect(user.items.gear.owned[mysteryItemKey]).to.be.true;

View File

@@ -17,7 +17,7 @@ describe('POST /user/purchase/:type/:key', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('returns an error when key is not provided', async () => { it('returns an error when key is not provided', async () => {
await expect(user.post(`/user/purchase/gems/gem`)) await expect(user.post('/user/purchase/gems/gem'))
.to.eventually.be.rejected.and.eql({ .to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',

View File

@@ -12,14 +12,14 @@ describe('POST /user/sleep', () => {
// More tests in common code unit tests // More tests in common code unit tests
it('toggles sleep status', async () => { it('toggles sleep status', async () => {
let res = await user.post(`/user/sleep`); let res = await user.post('/user/sleep');
expect(res).to.eql({ expect(res).to.eql({
preferences: {sleep: true}, preferences: {sleep: true},
}); });
await user.sync(); await user.sync();
expect(user.preferences.sleep).to.be.true; expect(user.preferences.sleep).to.be.true;
let res2 = await user.post(`/user/sleep`); let res2 = await user.post('/user/sleep');
expect(res2).to.eql({ expect(res2).to.eql({
preferences: {sleep: false}, preferences: {sleep: false},
}); });

View File

@@ -108,7 +108,7 @@ describe('PUT /user', () => {
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
message: t(`mustPurchaseToSet`, { val: 'round', key: 'preferences.size' }), message: t('mustPurchaseToSet', { val: 'round', key: 'preferences.size' }),
}); });
}); });

View File

@@ -30,7 +30,7 @@ api.getCoupons = function(req,res,next) {
res.set({ res.set({
'Content-Type': 'text/csv', 'Content-Type': 'text/csv',
'Content-disposition': `attachment; filename=habitica-coupons.csv`, 'Content-disposition': 'attachment; filename=habitica-coupons.csv',
}); });
csvStringify(output, (err, csv) => { csvStringify(output, (err, csv) => {
if (err) return next(err); if (err) return next(err);

View File

@@ -44,7 +44,7 @@ dataexport.history = function(req, res) {
res.set({ res.set({
'Content-Type': 'text/csv', 'Content-Type': 'text/csv',
'Content-disposition': `attachment; filename=habitica-tasks-history.csv`, 'Content-disposition': 'attachment; filename=habitica-tasks-history.csv',
}); });
csvStringify(output, (err, csv) => { csvStringify(output, (err, csv) => {

View File

@@ -224,7 +224,7 @@ api.flagChat = {
if (group._id === TAVERN_ID) { if (group._id === TAVERN_ID) {
groupUrl = '/#/options/groups/tavern'; groupUrl = '/#/options/groups/tavern';
} else if (group.type === 'guild') { } else if (group.type === 'guild') {
groupUrl = `/#/options/groups/guilds/{$group._id}`; groupUrl = `/#/options/groups/guilds/${group._id}`;
} else { } else {
groupUrl = 'party'; groupUrl = 'party';
} }
@@ -236,12 +236,12 @@ api.flagChat = {
{name: 'REPORTER_USERNAME', content: user.profile.name}, {name: 'REPORTER_USERNAME', content: user.profile.name},
{name: 'REPORTER_UUID', content: user._id}, {name: 'REPORTER_UUID', content: user._id},
{name: 'REPORTER_EMAIL', content: reporterEmailContent}, {name: 'REPORTER_EMAIL', content: reporterEmailContent},
{name: 'REPORTER_MODAL_URL', content: `/static/front/#?memberId={$user._id}`}, {name: 'REPORTER_MODAL_URL', content: `/static/front/#?memberId=${user._id}`},
{name: 'AUTHOR_USERNAME', content: message.user}, {name: 'AUTHOR_USERNAME', content: message.user},
{name: 'AUTHOR_UUID', content: message.uuid}, {name: 'AUTHOR_UUID', content: message.uuid},
{name: 'AUTHOR_EMAIL', content: authorEmailContent}, {name: 'AUTHOR_EMAIL', content: authorEmailContent},
{name: 'AUTHOR_MODAL_URL', content: `/static/front/#?memberId={$message.uuid}`}, {name: 'AUTHOR_MODAL_URL', content: `/static/front/#?memberId=${message.uuid}`},
{name: 'GROUP_NAME', content: group.name}, {name: 'GROUP_NAME', content: group.name},
{name: 'GROUP_TYPE', content: group.type}, {name: 'GROUP_TYPE', content: group.type},

View File

@@ -32,7 +32,7 @@ api.getCoupons = {
res.set({ res.set({
'Content-Type': 'text/csv', 'Content-Type': 'text/csv',
'Content-disposition': `attachment; filename=habitica-coupons.csv`, 'Content-disposition': 'attachment; filename=habitica-coupons.csv',
}); });
res.status(200).send(csv); res.status(200).send(csv);
}, },

View File

@@ -159,7 +159,7 @@ api.updateUser = {
let purchasable = requiresPurchase[key]; let purchasable = requiresPurchase[key];
if (purchasable && !checkPreferencePurchase(user, purchasable, val)) { if (purchasable && !checkPreferencePurchase(user, purchasable, val)) {
throw new NotAuthorized(res.t(`mustPurchaseToSet`, { val, key })); throw new NotAuthorized(res.t('mustPurchaseToSet', { val, key }));
} }
if (acceptablePUTPaths[key]) { if (acceptablePUTPaths[key]) {

View File

@@ -64,7 +64,7 @@ api.exportUserHistory = {
res.set({ res.set({
'Content-Type': 'text/csv', 'Content-Type': 'text/csv',
'Content-disposition': `attachment; filename=habitica-tasks-history.csv`, 'Content-disposition': 'attachment; filename=habitica-tasks-history.csv',
}); });
let csvRes = await csvStringify(output); let csvRes = await csvStringify(output);
@@ -111,7 +111,7 @@ api.exportUserDataJson = {
res.set({ res.set({
'Content-Type': 'application/json', 'Content-Type': 'application/json',
'Content-disposition': `attachment; filename=habitica-user-data.json`, 'Content-disposition': 'attachment; filename=habitica-user-data.json',
}); });
let jsonRes = JSON.stringify(userData); let jsonRes = JSON.stringify(userData);
@@ -137,7 +137,7 @@ api.exportUserDataXml = {
res.set({ res.set({
'Content-Type': 'text/xml', 'Content-Type': 'text/xml',
'Content-disposition': `attachment; filename=habitica-user-data.xml`, 'Content-disposition': 'attachment; filename=habitica-user-data.xml',
}); });
res.status(200).send(js2xml('user', userData)); res.status(200).send(js2xml('user', userData));
}, },

View File

@@ -39,8 +39,8 @@ _.each(staticPages, (name) => {
async handler (req, res) { async handler (req, res) {
res.render(`static/${name}.jade`, { res.render(`static/${name}.jade`, {
env: res.locals.habitrpg, env: res.locals.habitrpg,
marked: marked, marked,
userCount: TOTAL_USER_COUNT userCount: TOTAL_USER_COUNT,
}); });
}, },
}; };
@@ -57,8 +57,8 @@ _.each(shareables, (name) => {
async handler (req, res) { async handler (req, res) {
res.render(`social/${name}`, { res.render(`social/${name}`, {
env: res.locals.habitrpg, env: res.locals.habitrpg,
marked: marked, marked,
userCount: TOTAL_USER_COUNT userCount: TOTAL_USER_COUNT,
}); });
}, },
}; };

View File

@@ -1,4 +1,5 @@
'use strict'; 'use strict';
/* eslint-disable global-require, no-process-env */
// Register babel hook so we can write the real entry file (server.js) in ES6 // Register babel hook so we can write the real entry file (server.js) in ES6
// In production, the es6 code is pre-transpiled so it doesn't need it // In production, the es6 code is pre-transpiled so it doesn't need it

View File

@@ -161,10 +161,11 @@ schema.statics.getGroups = async function getGroups (options = {}) {
types.forEach(type => { types.forEach(type => {
switch (type) { switch (type) {
case 'party': case 'party': {
queries.push(this.getGroup({user, groupId: 'party', fields: groupFields, populateLeader})); queries.push(this.getGroup({user, groupId: 'party', fields: groupFields, populateLeader}));
break; break;
case 'privateGuilds': }
case 'privateGuilds': {
let privateGroupQuery = this.find({ let privateGroupQuery = this.find({
type: 'guild', type: 'guild',
privacy: 'private', privacy: 'private',
@@ -174,7 +175,8 @@ schema.statics.getGroups = async function getGroups (options = {}) {
privateGroupQuery.sort(sort).exec(); privateGroupQuery.sort(sort).exec();
queries.push(privateGroupQuery); queries.push(privateGroupQuery);
break; break;
case 'publicGuilds': }
case 'publicGuilds': {
let publicGroupQuery = this.find({ let publicGroupQuery = this.find({
type: 'guild', type: 'guild',
privacy: 'public', privacy: 'public',
@@ -183,12 +185,14 @@ schema.statics.getGroups = async function getGroups (options = {}) {
publicGroupQuery.sort(sort).exec(); publicGroupQuery.sort(sort).exec();
queries.push(publicGroupQuery); // TODO use lean? queries.push(publicGroupQuery); // TODO use lean?
break; break;
case 'tavern': }
case 'tavern': {
if (types.indexOf('publicGuilds') === -1) { if (types.indexOf('publicGuilds') === -1) {
queries.push(this.getGroup({user, groupId: TAVERN_ID, fields: groupFields})); queries.push(this.getGroup({user, groupId: TAVERN_ID, fields: groupFields}));
} }
break; break;
} }
}
}); });
let groupsArray = _.reduce(await Q.all(queries), (previousValue, currentValue) => { let groupsArray = _.reduce(await Q.all(queries), (previousValue, currentValue) => {
@@ -436,23 +440,27 @@ schema.methods.finishQuest = function finishQuest (quest) {
let dropK = item.key; let dropK = item.key;
switch (item.type) { switch (item.type) {
case 'gear': case 'gear': {
// TODO This means they can lose their new gear on death, is that what we want? // TODO This means they can lose their new gear on death, is that what we want?
updates.$set[`items.gear.owned.${dropK}`] = true; updates.$set[`items.gear.owned.${dropK}`] = true;
break; break;
}
case 'eggs': case 'eggs':
case 'food': case 'food':
case 'hatchingPotions': case 'hatchingPotions':
case 'quests': case 'quests': {
updates.$inc[`items.${item.type}.${dropK}`] = _.where(quest.drop.items, {type: item.type, key: item.key}).length; updates.$inc[`items.${item.type}.${dropK}`] = _.where(quest.drop.items, {type: item.type, key: item.key}).length;
break; break;
case 'pets': }
case 'pets': {
updates.$set[`items.pets.${dropK}`] = 5; updates.$set[`items.pets.${dropK}`] = 5;
break; break;
case 'mounts': }
case 'mounts': {
updates.$set[`items.mounts.${dropK}`] = true; updates.$set[`items.mounts.${dropK}`] = true;
break; break;
} }
}
}); });
let q = this._id === TAVERN_ID ? {} : {_id: {$in: _.keys(this.quest.members)}}; let q = this._id === TAVERN_ID ? {} : {_id: {$in: _.keys(this.quest.members)}};

View File

@@ -549,7 +549,7 @@ export let publicFields = `preferences.size preferences.hair preferences.skin pr
backer contributor auth.timestamps items`; backer contributor auth.timestamps items`;
// The minimum amount of data needed when populating multiple users // The minimum amount of data needed when populating multiple users
export let nameFields = `profile.name`; export let nameFields = 'profile.name';
schema.post('init', function postInitUser (doc) { schema.post('init', function postInitUser (doc) {
shared.wrap(doc); shared.wrap(doc);