Browse Source

added response data sorting middleware

pull/850/head
Stephen Hess 8 years ago
parent
commit
5d7a467909
  1. 2
      middleware/sortResponseData.js
  2. 74
      test/unit/middleware/sortResponseData.js

2
middleware/sortResponseData.js

@ -7,7 +7,7 @@ function setup(comparator) {
return next(); return next();
} }
res.data = res.data.sort(comparator); res.data = res.data.sort(comparator(_.get(req, 'clean', {})));
next(); next();
} }

74
test/unit/middleware/sortResponseData.js

@ -3,6 +3,74 @@ const sortResponseData = require('../../../middleware/sortResponseData');
module.exports.tests = {}; module.exports.tests = {};
module.exports.tests.doIt = (test, common) => { module.exports.tests.doIt = (test, common) => {
test('{} should be passed to comparator when req is unavailable', (t) => {
const comparator = (clean) => {
t.deepEquals(clean, { });
return () => {
throw Error('should not have been called');
};
};
const sort = sortResponseData(comparator);
const res = {
data: [ {} ]
};
sort(undefined, res, () => {
t.end();
});
});
test('{} should be passed to comparator when req.clean is unavailable', (t) => {
const comparator = (clean) => {
t.deepEquals(clean, { });
return () => {
throw Error('should not have been called');
};
};
const sort = sortResponseData(comparator);
const req = {};
const res = {
data: [ {} ]
};
sort(req, res, () => {
t.end();
});
});
test('req.clean should be passed to sort', (t) => {
const comparator = (clean) => {
t.deepEquals(clean, { a: 1 });
return () => {
throw Error('should not have been called');
};
};
const sort = sortResponseData(comparator);
const req = {
clean: {
a: 1
}
};
const res = {
data: [ {} ]
};
sort(req, res, () => {
t.end();
});
});
test('undefined res should return without interacting with comparator', (t) => { test('undefined res should return without interacting with comparator', (t) => {
const comparator = () => { const comparator = () => {
throw Error('should not have been called'); throw Error('should not have been called');
@ -51,8 +119,10 @@ module.exports.tests.doIt = (test, common) => {
}); });
test('comparator should be consulted for sorting res.data when defined', (t) => { test('comparator should be consulted for sorting res.data when defined', (t) => {
const comparator = (a, b) => { const comparator = () => {
return a.key > b.key; return (a, b) => {
return a.key > b.key;
};
}; };
const sort = sortResponseData(comparator); const sort = sortResponseData(comparator);

Loading…
Cancel
Save