Require Dailies to have a Start Date (#8649)

* Require Dailies to have a Start Date

* Add preliminary test

* Fix lint errors
This commit is contained in:
MathWhiz 2017-06-06 10:05:17 -07:00 committed by Matteo Pagliazzi
parent c852d9d581
commit f6f99ec57e
3 changed files with 51 additions and 38 deletions

View file

@ -615,6 +615,18 @@ describe('POST /tasks/user', () => {
expect((new Date(task.startDate)).getDay()).to.eql(today); expect((new Date(task.startDate)).getDay()).to.eql(today);
}); });
it('returns an error if the start date is empty', async () => {
await expect(user.post('/tasks/user', {
text: 'test daily',
type: 'daily',
startDate: '',
})).to.eventually.be.rejected.and.eql({
code: 400,
error: 'BadRequest',
message: 'daily validation failed',
});
});
it('can create checklists', async () => { it('can create checklists', async () => {
let task = await user.post('/tasks/user', { let task = await user.post('/tasks/user', {
text: 'test daily', text: 'test daily',

View file

@ -229,6 +229,7 @@ export let DailySchema = new Schema(_.defaults({
default () { default () {
return moment().startOf('day').toDate(); return moment().startOf('day').toDate();
}, },
required: true,
}, },
repeat: { // used only for 'weekly' frequency, repeat: { // used only for 'weekly' frequency,
m: {type: Boolean, default: true}, m: {type: Boolean, default: true},

View file

@ -1,38 +1,38 @@
fieldset.option-group.advanced-option(ng-show="task.type === 'daily'") fieldset.option-group.advanced-option(ng-show="task.type === 'daily'")
legend.option-title legend.option-title
span.hint(popover-title=env.t('startDateHelpTitle'), popover=env.t("startDateHelp"), popover-trigger='mouseenter') span.hint(popover-title=env.t('startDateHelpTitle'), popover=env.t("startDateHelp"), popover-trigger='mouseenter')
=env.t('startDate') =env.t('startDate')
input.form-control(type='text', ng-model='task._edit.startDate', input.form-control(type='text', ng-model='task._edit.startDate',
datepicker-popup='{{::user.preferences.dateFormat}}', is-open='datepickerOpened', datepicker-popup='{{::user.preferences.dateFormat}}', is-open='datepickerOpened',
ng-click='datepickerOpened = true', ng-disabled='!canEdit(task)') ng-click='datepickerOpened = true', ng-disabled='!canEdit(task)')
br br
select.form-control(ng-model='task._edit.frequency', ng-disabled='!canEdit(task)') select.form-control(ng-model='task._edit.frequency', ng-disabled='!canEdit(task)')
option(value='daily')=env.t('daily') option(value='daily')=env.t('daily')
option(value='weekly')=env.t('weekly') option(value='weekly')=env.t('weekly')
option(value='monthly')=env.t('monthly') option(value='monthly')=env.t('monthly')
option(value='yearly')=env.t('yearly') option(value='yearly')=env.t('yearly')
//- select.form-control(ng-model='task._edit.frequency', ng-disabled='!canEdit(task)') //- select.form-control(ng-model='task._edit.frequency', ng-disabled='!canEdit(task)')
//- option(value='weekly')=env.t('repeatWeek') //- option(value='weekly')=env.t('repeatWeek')
//- option(value='daily')=env.t('repeatDays') //- option(value='daily')=env.t('repeatDays')
include ./dailies/repeat_options include ./dailies/repeat_options
.form-group(ng-show='task._edit.frequency === "monthly"') .form-group(ng-show='task._edit.frequency === "monthly"')
legend.option-title=env.t('repeatsOn') legend.option-title=env.t('repeatsOn')
label label
input(type="radio", ng-model='task._edit.repeatsOn', value='dayOfMonth', ng-disabled='!canEdit(task)') input(type="radio", ng-model='task._edit.repeatsOn', value='dayOfMonth', ng-disabled='!canEdit(task)')
=env.t('dayOfMonth') =env.t('dayOfMonth')
label label
input(type="radio", ng-model='task._edit.repeatsOn', value='dayOfWeek', ng-disabled='!canEdit(task)') input(type="radio", ng-model='task._edit.repeatsOn', value='dayOfWeek', ng-disabled='!canEdit(task)')
=env.t('dayOfWeek') =env.t('dayOfWeek')
.form-group .form-group
legend.option-title=env.t('summary') legend.option-title=env.t('summary')
div {{summary}} div {{summary}}
.form-group(ng-if='nextDue') .form-group(ng-if='nextDue')
legend.option-title=env.t('nextDue') legend.option-title=env.t('nextDue')
div {{nextDue}} div {{nextDue}}