From 598f0a7a1bf5b866799871becd3d29146015eff6 Mon Sep 17 00:00:00 2001 From: Connor McArthur Date: Mon, 27 Jun 2016 13:16:29 +0000 Subject: [PATCH] chore: Add cron semi-safe mode tests fixes #7464 closes #7733 --- test/api/v3/unit/libs/cron.test.js | 36 +++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/test/api/v3/unit/libs/cron.test.js b/test/api/v3/unit/libs/cron.test.js index b6ed5b6c39..d4629b9104 100644 --- a/test/api/v3/unit/libs/cron.test.js +++ b/test/api/v3/unit/libs/cron.test.js @@ -1,6 +1,8 @@ /* eslint-disable global-require */ import moment from 'moment'; +import nconf from 'nconf'; import Bluebird from 'bluebird'; +import requireAgain from 'require-again'; import { recoverCron, cron } from '../../../../../website/server/libs/cron'; import { model as User } from '../../../../../website/server/models/user'; import * as Tasks from '../../../../../website/server/models/task'; @@ -9,6 +11,8 @@ import common from '../../../../../common'; // const scoreTask = common.ops.scoreTask; +let pathToCronLib = '../../../../../website/server/libs/cron'; + describe('cron', () => { let user; let tasksByType = {habits: [], dailys: [], todos: [], rewards: []}; @@ -159,7 +163,7 @@ describe('cron', () => { expect(user.purchased.plan.consecutive.trinkets).to.equal(0); }); - it('doest not increment plan.consecutive.gemCapExtra when user has reached a month that is a multiple of 3', () => { + it('does not increment plan.consecutive.gemCapExtra when user has reached a month that is a multiple of 3', () => { user.purchased.plan.consecutive.count = 5; cron({user, tasksByType, daysMissed, analytics}); expect(user.purchased.plan.consecutive.gemCapExtra).to.equal(0); @@ -319,6 +323,19 @@ describe('cron', () => { expect(user.stats.hp).to.be.lessThan(hpBefore); }); + it('should not do damage for missing a daily when CRON_SAFE_MODE is set', () => { + sandbox.stub(nconf, 'get').withArgs('CRON_SAFE_MODE').returns('true'); + let cronOverride = requireAgain(pathToCronLib).cron; + + daysMissed = 1; + let hpBefore = user.stats.hp; + tasksByType.dailys[0].startDate = moment(new Date()).subtract({days: 1}); + + cronOverride({user, tasksByType, daysMissed, analytics}); + + expect(user.stats.hp).to.equal(hpBefore); + }); + it('should not do damage for missing a daily if user stealth buff is greater than or equal to days missed', () => { daysMissed = 1; let hpBefore = user.stats.hp; @@ -443,6 +460,23 @@ describe('cron', () => { expect(user.stats.buffs.con).to.be.greaterThan(previousBuffs.con); }); + it('still grants a perfect day when CRON_SAFE_MODE is set', () => { + sandbox.stub(nconf, 'get').withArgs('CRON_SAFE_MODE').returns('true'); + let cronOverride = requireAgain(pathToCronLib).cron; + daysMissed = 1; + tasksByType.dailys[0].completed = false; + tasksByType.dailys[0].startDate = moment(new Date()).subtract({days: 1}); + + let previousBuffs = clone(user.stats.buffs); + + cronOverride({user, tasksByType, daysMissed, analytics}); + + expect(user.stats.buffs.str).to.be.greaterThan(previousBuffs.str); + expect(user.stats.buffs.int).to.be.greaterThan(previousBuffs.int); + expect(user.stats.buffs.per).to.be.greaterThan(previousBuffs.per); + expect(user.stats.buffs.con).to.be.greaterThan(previousBuffs.con); + }); + it('clears buffs if user does not have a perfect day', () => { daysMissed = 1; tasksByType.dailys[0].completed = false;