Archived
2

POST finished

This commit is contained in:
VLE2FE 2020-05-14 16:42:47 +02:00
parent 8315fc0d3b
commit ab8c74a641
2 changed files with 36 additions and 22 deletions

View File

@ -4,7 +4,7 @@ import TemplateTreatmentModel from '../models/treatment_template';
import TemplateMeasurementModel from '../models/measurement_template'; import TemplateMeasurementModel from '../models/measurement_template';
import TestHelper from "../test/helper"; import TestHelper from "../test/helper";
// TODO: convert name to id, criteria for new name, criteria for new version, criteria for prefix
describe('/template', () => { describe('/template', () => {
let server; let server;
@ -305,6 +305,7 @@ describe('/template', () => {
should(res.body.parameters[0]).have.property('range'); should(res.body.parameters[0]).have.property('range');
should(res.body.parameters[0].range).have.property('values'); should(res.body.parameters[0].range).have.property('values');
should(res.body.parameters[0].range.values[0]).be.eql('copper'); should(res.body.parameters[0].range.values[0]).be.eql('copper');
done();
}); });
}); });
it('stores the template', done => { it('stores the template', done => {
@ -366,17 +367,27 @@ describe('/template', () => {
url: '/template/treatment/new', url: '/template/treatment/new',
auth: {basic: 'admin'}, auth: {basic: 'admin'},
httpStatus: 400, 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'} 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 => { it('rejects a missing parameter range', done => {
TestHelper.request(server, done, { TestHelper.request(server, done, {
method: 'post', method: 'post',
url: '/template/treatment/new', url: '/template/treatment/new',
auth: {basic: 'admin'}, auth: {basic: 'admin'},
httpStatus: 400, 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'} res: {status: 'Invalid body format', details: '"parameters[0].range" is required'}
}); });
}); });
@ -386,7 +397,7 @@ describe('/template', () => {
url: '/template/treatment/new', url: '/template/treatment/new',
auth: {basic: 'admin'}, auth: {basic: 'admin'},
httpStatus: 400, 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'} res: {status: 'Invalid body format', details: '"parameters[0].range.xx" is not allowed'}
}); });
}); });
@ -396,8 +407,8 @@ describe('/template', () => {
url: '/template/treatment/new', url: '/template/treatment/new',
auth: {basic: 'admin'}, auth: {basic: 'admin'},
httpStatus: 400, httpStatus: 400,
req: {name: 'heat aging', parameters: [{name: 'time', range: {}}], xx: 33}, req: {name: 'heat aging', number_prefix: 'C', parameters: [{name: 'time', range: {}}], xx: 33},
res: {} res: {status: 'Invalid body format', details: '"xx" is not allowed'}
}); });
}); });
it('rejects already existing number prefixes', done => { 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('name', 'vz');
should(res.body.parameters[0]).have.property('range'); should(res.body.parameters[0]).have.property('range');
should(res.body.parameters[0].range).have.property('min', 1); should(res.body.parameters[0].range).have.property('min', 1);
done();
}); });
}); });
it('stores the template', done => { it('stores the template', done => {
@ -736,7 +748,7 @@ describe('/template', () => {
should(data).have.lengthOf(1); should(data).have.lengthOf(1);
should(data[0]).have.only.keys('_id', 'name', 'version', 'parameters', '__v'); should(data[0]).have.only.keys('_id', 'name', 'version', 'parameters', '__v');
should(data[0]).have.property('name', 'vz'); 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]).have.property('parameters').have.lengthOf(1);
should(data[0].parameters[0]).have.property('name', 'vz'); should(data[0].parameters[0]).have.property('name', 'vz');
should(data[0].parameters[0]).have.property('range'); should(data[0].parameters[0]).have.property('range');
@ -802,7 +814,7 @@ describe('/template', () => {
auth: {basic: 'admin'}, auth: {basic: 'admin'},
httpStatus: 400, httpStatus: 400,
req: {name: 'IR spectrum', parameters: [{name: 'data point table', range: {}}], xx: 35}, 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 => { it('rejects an API key', done => {

View File

@ -63,20 +63,22 @@ router.put('/template/:collection(measurement|treatment)/' + IdValidate.paramete
} }
}); });
// router.delete('/template/:collection(measurement|treatment)/:name', (req, res, next) => { router.post('/template/:collection(measurement|treatment)/new', async (req, res, next) => {
// if (!req.auth(res, ['maintain', 'admin'], 'basic')) return; if (!req.auth(res, ['maintain', 'admin'], 'basic')) return;
//
// (req.params.collection === 'treatment' ? TemplateTreatmentModel : TemplateMeasurementModel) const {error, value: template} = TemplateValidate.input(req.body, 'new', req.params.collection);
// .findOneAndDelete({name: req.params.name}).lean().exec((err, data) => { if (error) return res400(error, res);
// if (err) return next(err);
// if (data) { if (_.has(template, 'number_prefix')) { // got number_prefix
// res.json({status: 'OK'}) if (!await numberPrefixCheck(template, req, res, next)) return;
// } }
// else {
// res.status(404).json({status: 'Not found'}); 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; module.exports = router;