Skip to content

Commit 737c0e6

Browse files
committed
- Removed setTimeout calls.
- startDate and endDate are now forbidden from being present in the payload. - Removed explicit check against startDate and endDate parameters, since now they are forbidden.
1 parent ccf7136 commit 737c0e6

File tree

2 files changed

+80
-130
lines changed

2 files changed

+80
-130
lines changed

src/routes/milestones/update.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ const schema = {
5656
name: Joi.string().max(255).optional(),
5757
description: Joi.string().max(255),
5858
duration: Joi.number().integer().min(1).optional(),
59-
startDate: Joi.date().optional(),
60-
endDate: Joi.date().allow(null),
59+
startDate: Joi.any().forbidden(),
60+
endDate: Joi.any().forbidden(),
6161
completionDate: Joi.date().allow(null),
6262
status: Joi.string().max(45).optional(),
6363
type: Joi.string().max(45).optional(),
@@ -107,16 +107,6 @@ module.exports = [
107107
apiErr.status = 404;
108108
return Promise.reject(apiErr);
109109
}
110-
// if any of these keys was provided and is different from what's in the database, error
111-
if (['startDate', 'endDate']
112-
.some(key => entityToUpdate[key] && (
113-
!milestone[key] ||
114-
(milestone[key] && entityToUpdate[key].getTime() !== milestone[key].getTime())
115-
))) {
116-
const apiErr = new Error('Updating a milestone startDate or endDate is not allowed');
117-
apiErr.status = 422;
118-
return Promise.reject(apiErr);
119-
}
120110

121111
if (entityToUpdate.completionDate && entityToUpdate.completionDate < milestone.startDate) {
122112
const apiErr = new Error('The milestone completionDate should be greater or equal than the startDate.');

src/routes/milestones/update.spec.js

Lines changed: 78 additions & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -462,56 +462,23 @@ describe('UPDATE Milestone', () => {
462462
.expect(200, done);
463463
});
464464

465-
it('should return 422 if startDate is after endDate', (done) => {
466-
const invalidBody = {
467-
param: _.assign({}, body.param, {
468-
startDate: '2018-05-29T00:00:00.000Z',
469-
endDate: '2018-05-28T00:00:00.000Z',
470-
}),
471-
};
472-
473-
request(server)
474-
.patch('/v4/timelines/1/milestones/1')
475-
.set({
476-
Authorization: `Bearer ${testUtil.jwts.admin}`,
477-
})
478-
.send(invalidBody)
479-
.expect('Content-Type', /json/)
480-
.expect(422, done);
481-
});
482-
483-
it('should return 422 if startDate is different than the original startDate', (done) => {
484-
const invalidBody = {
485-
param: _.assign({}, body.param, {
486-
startDate: '2018-07-01T00:00:00.000Z',
487-
}),
488-
};
489-
490-
request(server)
491-
.patch('/v4/timelines/1/milestones/1')
492-
.set({
493-
Authorization: `Bearer ${testUtil.jwts.admin}`,
494-
})
495-
.send(invalidBody)
496-
.expect('Content-Type', /json/)
497-
.expect(422, done);
498-
});
499-
500-
it('should return 422 if endDate is different than the original endDate', (done) => {
501-
const invalidBody = {
502-
param: _.assign({}, body.param, {
503-
endDate: '2018-07-01T00:00:00.000Z',
504-
}),
505-
};
506-
507-
request(server)
508-
.patch('/v4/timelines/1/milestones/1')
509-
.set({
510-
Authorization: `Bearer ${testUtil.jwts.admin}`,
511-
})
512-
.send(invalidBody)
513-
.expect('Content-Type', /json/)
514-
.expect(422, done);
465+
['startDate', 'endDate'].forEach((field) => {
466+
it(`should return 422 if ${field} is present in the payload`, (done) => {
467+
const invalidBody = {
468+
param: _.assign({}, body.param, {
469+
[field]: '2018-07-01T00:00:00.000Z',
470+
}),
471+
};
472+
473+
request(server)
474+
.patch('/v4/timelines/1/milestones/1')
475+
.set({
476+
Authorization: `Bearer ${testUtil.jwts.admin}`,
477+
})
478+
.send(invalidBody)
479+
.expect('Content-Type', /json/)
480+
.expect(422, done);
481+
});
515482
});
516483

517484
it('should return 200 for admin', (done) => {
@@ -717,14 +684,13 @@ describe('UPDATE Milestone', () => {
717684
.expect(200)
718685
.end(() => {
719686
// Milestone 6: order 0
720-
setTimeout(() => {
721-
models.Milestone.findById(6)
722-
.then((milestone) => {
723-
milestone.order.should.be.eql(0);
724-
725-
done();
726-
});
727-
}, 3000);
687+
models.Milestone.findById(6)
688+
.then((milestone) => {
689+
milestone.order.should.be.eql(0);
690+
691+
done();
692+
})
693+
.catch(done);
728694
});
729695
});
730696

@@ -782,22 +748,21 @@ describe('UPDATE Milestone', () => {
782748
// Milestone 6: order 1 => 1
783749
// Milestone 7: order 3 => 3
784750
// Milestone 8: order 4 => 2
785-
setTimeout(() => {
786-
models.Milestone.findById(6)
787-
.then((milestone) => {
788-
milestone.order.should.be.eql(1);
789-
})
790-
.then(() => models.Milestone.findById(7))
791-
.then((milestone) => {
792-
milestone.order.should.be.eql(3);
793-
})
794-
.then(() => models.Milestone.findById(8))
795-
.then((milestone) => {
796-
milestone.order.should.be.eql(2);
797-
798-
done();
799-
});
800-
}, 3000);
751+
models.Milestone.findById(6)
752+
.then((milestone) => {
753+
milestone.order.should.be.eql(1);
754+
})
755+
.then(() => models.Milestone.findById(7))
756+
.then((milestone) => {
757+
milestone.order.should.be.eql(3);
758+
})
759+
.then(() => models.Milestone.findById(8))
760+
.then((milestone) => {
761+
milestone.order.should.be.eql(2);
762+
763+
done();
764+
})
765+
.catch(done);
801766
});
802767
});
803768
});
@@ -856,22 +821,21 @@ describe('UPDATE Milestone', () => {
856821
// Milestone 6: order 1 => 1
857822
// Milestone 7: order 2 => 3
858823
// Milestone 8: order 4 => 2
859-
setTimeout(() => {
860-
models.Milestone.findById(6)
861-
.then((milestone) => {
862-
milestone.order.should.be.eql(1);
863-
})
864-
.then(() => models.Milestone.findById(7))
865-
.then((milestone) => {
866-
milestone.order.should.be.eql(3);
867-
})
868-
.then(() => models.Milestone.findById(8))
869-
.then((milestone) => {
870-
milestone.order.should.be.eql(2);
871-
872-
done();
873-
});
874-
}, 3000);
824+
models.Milestone.findById(6)
825+
.then((milestone) => {
826+
milestone.order.should.be.eql(1);
827+
})
828+
.then(() => models.Milestone.findById(7))
829+
.then((milestone) => {
830+
milestone.order.should.be.eql(3);
831+
})
832+
.then(() => models.Milestone.findById(8))
833+
.then((milestone) => {
834+
milestone.order.should.be.eql(2);
835+
836+
done();
837+
})
838+
.catch(done);
875839
});
876840
});
877841
});
@@ -895,20 +859,18 @@ describe('UPDATE Milestone', () => {
895859
// endDate: null to '2018-05-21T00:00:00.000Z'
896860
// Milestone 4: startDate: '2018-05-14T00:00:00.000Z' to '2018-05-22T00:00:00.000Z'
897861
// endDate: null to '2018-05-24T00:00:00.000Z'
898-
setTimeout(() => {
899-
models.Milestone.findById(3)
900-
.then((milestone) => {
901-
milestone.startDate.should.be.eql(new Date('2018-05-19T00:00:00.000Z'));
902-
milestone.endDate.should.be.eql(new Date('2018-05-21T00:00:00.000Z'));
903-
return models.Milestone.findById(4);
904-
})
905-
.then((milestone) => {
906-
milestone.startDate.should.be.eql(new Date('2018-05-22T00:00:00.000Z'));
907-
milestone.endDate.should.be.eql(new Date('2018-05-24T00:00:00.000Z'));
908-
done();
909-
})
910-
.catch(done);
911-
}, 3000);
862+
models.Milestone.findById(3)
863+
.then((milestone) => {
864+
milestone.startDate.should.be.eql(new Date('2018-05-19T00:00:00.000Z'));
865+
milestone.endDate.should.be.eql(new Date('2018-05-21T00:00:00.000Z'));
866+
return models.Milestone.findById(4);
867+
})
868+
.then((milestone) => {
869+
milestone.startDate.should.be.eql(new Date('2018-05-22T00:00:00.000Z'));
870+
milestone.endDate.should.be.eql(new Date('2018-05-24T00:00:00.000Z'));
871+
done();
872+
})
873+
.catch(done);
912874
});
913875
});
914876

@@ -929,20 +891,18 @@ describe('UPDATE Milestone', () => {
929891
// endDate: null to '2018-05-21T00:00:00.000Z'
930892
// Milestone 4: startDate: '2018-05-14T00:00:00.000Z' to '2018-05-22T00:00:00.000Z'
931893
// endDate: null to '2018-05-24T00:00:00.000Z'
932-
setTimeout(() => {
933-
models.Milestone.findById(3)
934-
.then((milestone) => {
935-
milestone.startDate.should.be.eql(new Date('2018-05-19T00:00:00.000Z'));
936-
milestone.endDate.should.be.eql(new Date('2018-05-21T00:00:00.000Z'));
937-
return models.Milestone.findById(4);
938-
})
939-
.then((milestone) => {
940-
milestone.startDate.should.be.eql(new Date('2018-05-22T00:00:00.000Z'));
941-
milestone.endDate.should.be.eql(new Date('2018-05-24T00:00:00.000Z'));
942-
done();
943-
})
944-
.catch(done);
945-
}, 3000);
894+
models.Milestone.findById(3)
895+
.then((milestone) => {
896+
milestone.startDate.should.be.eql(new Date('2018-05-19T00:00:00.000Z'));
897+
milestone.endDate.should.be.eql(new Date('2018-05-21T00:00:00.000Z'));
898+
return models.Milestone.findById(4);
899+
})
900+
.then((milestone) => {
901+
milestone.startDate.should.be.eql(new Date('2018-05-22T00:00:00.000Z'));
902+
milestone.endDate.should.be.eql(new Date('2018-05-24T00:00:00.000Z'));
903+
done();
904+
})
905+
.catch(done);
946906
});
947907
});
948908

0 commit comments

Comments
 (0)