POST finished
This commit is contained in:
parent
8315fc0d3b
commit
ab8c74a641
@ -4,7 +4,7 @@ import TemplateTreatmentModel from '../models/treatment_template';
|
||||
import TemplateMeasurementModel from '../models/measurement_template';
|
||||
import TestHelper from "../test/helper";
|
||||
|
||||
// TODO: convert name to id, criteria for new name, criteria for new version, criteria for prefix
|
||||
|
||||
|
||||
describe('/template', () => {
|
||||
let server;
|
||||
@ -305,6 +305,7 @@ describe('/template', () => {
|
||||
should(res.body.parameters[0]).have.property('range');
|
||||
should(res.body.parameters[0].range).have.property('values');
|
||||
should(res.body.parameters[0].range.values[0]).be.eql('copper');
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('stores the template', done => {
|
||||
@ -366,17 +367,27 @@ describe('/template', () => {
|
||||
url: '/template/treatment/new',
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'heat aging', parameters: [{range: {min: 1}}]},
|
||||
req: {name: 'heat aging', number_prefix: 'C', parameters: [{range: {min: 1}}]},
|
||||
res: {status: 'Invalid body format', details: '"parameters[0].name" is required'}
|
||||
});
|
||||
});
|
||||
it('rejects a missing number prefix', done => {
|
||||
TestHelper.request(server, done, {
|
||||
method: 'post',
|
||||
url: '/template/treatment/new',
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'heat aging', parameters: [{name: 'time', range: {min: 1}}]},
|
||||
res: {status: 'Invalid body format', details: '"number_prefix" is required'}
|
||||
});
|
||||
});
|
||||
it('rejects a missing parameter range', done => {
|
||||
TestHelper.request(server, done, {
|
||||
method: 'post',
|
||||
url: '/template/treatment/new',
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'heat aging', parameters: [{name: 'time'}]},
|
||||
req: {name: 'heat aging', number_prefix: 'C', parameters: [{name: 'time'}]},
|
||||
res: {status: 'Invalid body format', details: '"parameters[0].range" is required'}
|
||||
});
|
||||
});
|
||||
@ -386,7 +397,7 @@ describe('/template', () => {
|
||||
url: '/template/treatment/new',
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'heat aging', parameters: [{name: 'time', range: {xx: 1}}]},
|
||||
req: {name: 'heat aging', number_prefix: 'C', parameters: [{name: 'time', range: {xx: 1}}]},
|
||||
res: {status: 'Invalid body format', details: '"parameters[0].range.xx" is not allowed'}
|
||||
});
|
||||
});
|
||||
@ -396,8 +407,8 @@ describe('/template', () => {
|
||||
url: '/template/treatment/new',
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'heat aging', parameters: [{name: 'time', range: {}}], xx: 33},
|
||||
res: {}
|
||||
req: {name: 'heat aging', number_prefix: 'C', parameters: [{name: 'time', range: {}}], xx: 33},
|
||||
res: {status: 'Invalid body format', details: '"xx" is not allowed'}
|
||||
});
|
||||
});
|
||||
it('rejects already existing number prefixes', done => {
|
||||
@ -720,6 +731,7 @@ describe('/template', () => {
|
||||
should(res.body.parameters[0]).have.property('name', 'vz');
|
||||
should(res.body.parameters[0]).have.property('range');
|
||||
should(res.body.parameters[0].range).have.property('min', 1);
|
||||
done();
|
||||
});
|
||||
});
|
||||
it('stores the template', done => {
|
||||
@ -736,7 +748,7 @@ describe('/template', () => {
|
||||
should(data).have.lengthOf(1);
|
||||
should(data[0]).have.only.keys('_id', 'name', 'version', 'parameters', '__v');
|
||||
should(data[0]).have.property('name', 'vz');
|
||||
should(data[0]).have.property('vaersion', 1);
|
||||
should(data[0]).have.property('version', 1);
|
||||
should(data[0]).have.property('parameters').have.lengthOf(1);
|
||||
should(data[0].parameters[0]).have.property('name', 'vz');
|
||||
should(data[0].parameters[0]).have.property('range');
|
||||
@ -802,7 +814,7 @@ describe('/template', () => {
|
||||
auth: {basic: 'admin'},
|
||||
httpStatus: 400,
|
||||
req: {name: 'IR spectrum', parameters: [{name: 'data point table', range: {}}], xx: 35},
|
||||
res: {}
|
||||
res: {status: 'Invalid body format', details: '"xx" is not allowed'}
|
||||
});
|
||||
});
|
||||
it('rejects an API key', done => {
|
||||
|
@ -63,20 +63,22 @@ router.put('/template/:collection(measurement|treatment)/' + IdValidate.paramete
|
||||
}
|
||||
});
|
||||
|
||||
// router.delete('/template/:collection(measurement|treatment)/:name', (req, res, next) => {
|
||||
// if (!req.auth(res, ['maintain', 'admin'], 'basic')) return;
|
||||
//
|
||||
// (req.params.collection === 'treatment' ? TemplateTreatmentModel : TemplateMeasurementModel)
|
||||
// .findOneAndDelete({name: req.params.name}).lean().exec((err, data) => {
|
||||
// if (err) return next(err);
|
||||
// if (data) {
|
||||
// res.json({status: 'OK'})
|
||||
// }
|
||||
// else {
|
||||
// res.status(404).json({status: 'Not found'});
|
||||
// }
|
||||
// });
|
||||
// });
|
||||
router.post('/template/:collection(measurement|treatment)/new', async (req, res, next) => {
|
||||
if (!req.auth(res, ['maintain', 'admin'], 'basic')) return;
|
||||
|
||||
const {error, value: template} = TemplateValidate.input(req.body, 'new', req.params.collection);
|
||||
if (error) return res400(error, res);
|
||||
|
||||
if (_.has(template, 'number_prefix')) { // got number_prefix
|
||||
if (!await numberPrefixCheck(template, req, res, next)) return;
|
||||
}
|
||||
|
||||
template.version = 1;
|
||||
await new (model(req))(template).save((err, data) => {
|
||||
if (err) next (err);
|
||||
res.json(TemplateValidate.output(data.toObject(), req.params.collection));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
module.exports = router;
|
||||
|
Reference in New Issue
Block a user