57 lines
1.3 KiB
JavaScript
57 lines
1.3 KiB
JavaScript
|
const sinon = require('sinon');
|
||
|
const proxyquire = require('proxyquire').noCallThru();
|
||
|
|
||
|
const storage = {
|
||
|
setField: sinon.stub()
|
||
|
};
|
||
|
|
||
|
function request(id) {
|
||
|
return {
|
||
|
params: { id },
|
||
|
body: {}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function response() {
|
||
|
return {
|
||
|
sendStatus: sinon.stub()
|
||
|
};
|
||
|
}
|
||
|
|
||
|
const paramsRoute = proxyquire('../../server/routes/params', {
|
||
|
'../storage': storage
|
||
|
});
|
||
|
|
||
|
describe('/api/params', function() {
|
||
|
afterEach(function() {
|
||
|
storage.setField.reset();
|
||
|
});
|
||
|
|
||
|
it('calls storage.setField with the correct parameter', function() {
|
||
|
const req = request('x');
|
||
|
const dlimit = 2;
|
||
|
req.body.dlimit = dlimit;
|
||
|
const res = response();
|
||
|
paramsRoute(req, res);
|
||
|
sinon.assert.calledWith(storage.setField, 'x', 'dlimit', dlimit);
|
||
|
sinon.assert.calledWith(res.sendStatus, 200);
|
||
|
});
|
||
|
|
||
|
it('sends a 400 if dlimit is too large', function() {
|
||
|
const req = request('x');
|
||
|
const res = response();
|
||
|
req.body.dlimit = 21;
|
||
|
paramsRoute(req, res);
|
||
|
sinon.assert.calledWith(res.sendStatus, 400);
|
||
|
});
|
||
|
|
||
|
it('sends a 404 on failure', function() {
|
||
|
storage.setField.throws(new Error());
|
||
|
const req = request('x');
|
||
|
const res = response();
|
||
|
req.body.dlimit = 2;
|
||
|
paramsRoute(req, res);
|
||
|
sinon.assert.calledWith(res.sendStatus, 404);
|
||
|
});
|
||
|
});
|