diff --git a/migrations/20190927_milestone_texts_not_required.sql b/migrations/20190927_milestone_texts_not_required.sql new file mode 100644 index 00000000..bda1c110 --- /dev/null +++ b/migrations/20190927_milestone_texts_not_required.sql @@ -0,0 +1,8 @@ +-- +-- UPDATE EXISTING TABLES: +-- milestones + +ALTER TABLE milestones ALTER COLUMN "plannedText" DROP NOT NULL; +ALTER TABLE milestones ALTER COLUMN "activeText" DROP NOT NULL; +ALTER TABLE milestones ALTER COLUMN "completedText" DROP NOT NULL; +ALTER TABLE milestones ALTER COLUMN "blockedText" DROP NOT NULL; \ No newline at end of file diff --git a/src/models/milestone.js b/src/models/milestone.js index ee79c860..dc31cf24 100644 --- a/src/models/milestone.js +++ b/src/models/milestone.js @@ -66,10 +66,10 @@ module.exports = (sequelize, DataTypes) => { type: { type: DataTypes.STRING(45), allowNull: false }, details: DataTypes.JSON, order: { type: DataTypes.INTEGER, allowNull: false }, - plannedText: { type: DataTypes.STRING(512), allowNull: false }, - activeText: { type: DataTypes.STRING(512), allowNull: false }, - completedText: { type: DataTypes.STRING(512), allowNull: false }, - blockedText: { type: DataTypes.STRING(512), allowNull: false }, + plannedText: { type: DataTypes.STRING(512) }, + activeText: { type: DataTypes.STRING(512) }, + completedText: { type: DataTypes.STRING(512) }, + blockedText: { type: DataTypes.STRING(512) }, hidden: { type: DataTypes.BOOLEAN, defaultValue: false }, deletedAt: DataTypes.DATE, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, diff --git a/src/routes/milestones/create.js b/src/routes/milestones/create.js index e7a713e7..23e0aa1b 100644 --- a/src/routes/milestones/create.js +++ b/src/routes/milestones/create.js @@ -31,10 +31,10 @@ const schema = { type: Joi.string().max(45).required(), details: Joi.object(), order: Joi.number().integer().required(), - plannedText: Joi.string().max(512).required(), - activeText: Joi.string().max(512).required(), - completedText: Joi.string().max(512).required(), - blockedText: Joi.string().max(512).required(), + plannedText: Joi.string().max(512), + activeText: Joi.string().max(512), + completedText: Joi.string().max(512), + blockedText: Joi.string().max(512), hidden: Joi.boolean().optional(), createdAt: Joi.any().strip(), updatedAt: Joi.any().strip(), diff --git a/src/routes/milestones/create.spec.js b/src/routes/milestones/create.spec.js index ec04afda..07a807f3 100644 --- a/src/routes/milestones/create.spec.js +++ b/src/routes/milestones/create.spec.js @@ -320,74 +320,6 @@ describe('CREATE milestone', () => { .expect(422, done); }); - it('should return 422 if missing plannedText', (done) => { - const invalidBody = { - param: _.assign({}, body.param, { - plannedText: undefined, - }), - }; - - request(server) - .post('/v4/timelines/1/milestones') - .set({ - Authorization: `Bearer ${testUtil.jwts.admin}`, - }) - .send(invalidBody) - .expect('Content-Type', /json/) - .expect(422, done); - }); - - it('should return 422 if missing activeText', (done) => { - const invalidBody = { - param: _.assign({}, body.param, { - activeText: undefined, - }), - }; - - request(server) - .post('/v4/timelines/1/milestones') - .set({ - Authorization: `Bearer ${testUtil.jwts.admin}`, - }) - .send(invalidBody) - .expect('Content-Type', /json/) - .expect(422, done); - }); - - it('should return 422 if missing completedText', (done) => { - const invalidBody = { - param: _.assign({}, body.param, { - completedText: undefined, - }), - }; - - request(server) - .post('/v4/timelines/1/milestones') - .set({ - Authorization: `Bearer ${testUtil.jwts.admin}`, - }) - .send(invalidBody) - .expect('Content-Type', /json/) - .expect(422, done); - }); - - it('should return 422 if missing blockedText', (done) => { - const invalidBody = { - param: _.assign({}, body.param, { - blockedText: undefined, - }), - }; - - request(server) - .post('/v4/timelines/1/milestones') - .set({ - Authorization: `Bearer ${testUtil.jwts.admin}`, - }) - .send(invalidBody) - .expect('Content-Type', /json/) - .expect(422, done); - }); - it('should return 422 if startDate is after endDate', (done) => { const invalidBody = { param: _.assign({}, body.param, {