diff --git a/test/api/v3/integration/tasks/POST-tasks_user.test.js b/test/api/v3/integration/tasks/POST-tasks_user.test.js index 4f90dedd49..1210d56323 100644 --- a/test/api/v3/integration/tasks/POST-tasks_user.test.js +++ b/test/api/v3/integration/tasks/POST-tasks_user.test.js @@ -133,6 +133,7 @@ describe('POST /tasks/user', () => { expect(task.completed).to.equal(false); expect(task.streak).not.to.equal('never'); expect(task.value).not.to.equal(324); + expect(task.yesterDaily).to.equal(true); }); it('ignores invalid fields', async () => { diff --git a/test/api/v3/integration/tasks/PUT-tasks_id.test.js b/test/api/v3/integration/tasks/PUT-tasks_id.test.js index 433b263179..b2b802f837 100644 --- a/test/api/v3/integration/tasks/PUT-tasks_id.test.js +++ b/test/api/v3/integration/tasks/PUT-tasks_id.test.js @@ -396,6 +396,7 @@ describe('PUT /tasks/:id', () => { notes: 'some new notes', frequency: 'daily', everyX: 5, + yesterDaily: false, startDate: moment().add(1, 'days').toDate(), }); @@ -405,6 +406,7 @@ describe('PUT /tasks/:id', () => { expect(savedDaily.everyX).to.eql(5); expect(savedDaily.isDue).to.be.false; expect(savedDaily.nextDue.length).to.eql(6); + expect(savedDaily.yesterDaily).to.be.false; }); it('can update checklists (replace it)', async () => { diff --git a/website/common/script/libs/taskDefaults.js b/website/common/script/libs/taskDefaults.js index 26c81e02ea..a1ce59bf38 100644 --- a/website/common/script/libs/taskDefaults.js +++ b/website/common/script/libs/taskDefaults.js @@ -25,6 +25,7 @@ module.exports = function taskDefaults (task = {}) { challenge: { shortName: 'None', }, + yesterDaily: true, reminders: [], attribute: 'str', createdAt: new Date(), // TODO these are going to be overwritten by the server... diff --git a/website/server/controllers/api-v3/cron.js b/website/server/controllers/api-v3/cron.js index cf5e3b2e2d..6d69ab3eb6 100644 --- a/website/server/controllers/api-v3/cron.js +++ b/website/server/controllers/api-v3/cron.js @@ -1,5 +1,5 @@ import { authWithHeaders } from '../../middlewares/auth'; -import cron from '../middlewares/cron'; +import cron from '../../middlewares/cron'; let api = {}; diff --git a/website/server/models/task.js b/website/server/models/task.js index ee09612d46..ac1d5aa18d 100644 --- a/website/server/models/task.js +++ b/website/server/models/task.js @@ -128,7 +128,7 @@ TaskSchema.statics.findByIdOrAlias = async function findByIdOrAlias (identifier, TaskSchema.statics.sanitizeUserChallengeTask = function sanitizeUserChallengeTask (taskObj) { let initialSanitization = this.sanitize(taskObj); - return _.pick(initialSanitization, ['streak', 'checklist', 'attribute', 'reminders', 'tags', 'notes', 'collapseChecklist', 'alias']); + return _.pick(initialSanitization, ['streak', 'checklist', 'attribute', 'reminders', 'tags', 'notes', 'collapseChecklist', 'alias', 'yesterDaily']); }; // Sanitize checklist objects (disallowing id) @@ -244,6 +244,7 @@ export let DailySchema = new Schema(_.defaults({ weeksOfMonth: {type: [Number], default: []}, // Weeks of the month that the daily should repeat on isDue: {type: Boolean}, nextDue: [{type: String}], + yesterDaily: {type: Boolean, default: true}, }, habitDailySchema(), dailyTodoSchema()), subDiscriminatorOptions); export let daily = Task.discriminator('daily', DailySchema);