Commit fbdd4999 by Clinton Blackburn

Validating course verification deadline

This field is validated to ensure the verification deadline always occurs after the course seats' upgrade deadlines.

XCOM-581
parent 7d198b78
......@@ -65,6 +65,24 @@ define([
type: {
required: true,
msg: gettext('You must select a course type.')
},
verification_deadline: function (value) {
var invalid;
// No validation is needed for empty values
if (_.isEmpty(value)) {
return;
}
// Find seats where the verification deadline occurs before the upgrade deadline.
invalid = _.some(this.seats(), function (seat) {
var expires = seat.get('expires');
return expires && moment(value).isBefore(expires);
});
if (invalid) {
return gettext('The verification deadline must occur AFTER the upgrade deadline.');
}
}
},
......
......@@ -218,6 +218,27 @@ define([
expect(model.get('products')).toEqual(jasmine.any(ProductCollection));
});
});
describe('verification deadline validation', function () {
it('succeeds if the verification deadline is after the course seats\' expiration dates', function () {
var seat = model.getOrCreateSeat('verified');
model.set('verification_deadline', '2016-01-01T00:00:00Z');
seat.set('expires', '2015-01-01T00:00:00Z');
expect(model.validate()).toBeUndefined();
expect(model.isValid(true)).toBeTruthy();
});
it('fails if the verification deadline is before the course seats\' expiration dates', function () {
var seat = model.getOrCreateSeat('verified'),
msg = 'The verification deadline must occur AFTER the upgrade deadline.';
model.set('verification_deadline', '2014-01-01T00:00:00Z');
seat.set('expires', '2015-01-01T00:00:00Z');
expect(model.validate().verification_deadline).toEqual(msg);
expect(model.isValid(true)).toBeFalsy();
});
});
});
}
);
......@@ -120,7 +120,12 @@ define([
validate: true
}
},
'input[name=verification_deadline]': 'verification_deadline'
'input[name=verification_deadline]': {
observe: 'verification_deadline',
setOptions: {
validate: true
}
}
},
initialize: function (options) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment