From ce4c23f4a5489a31646ce01585dfd4ce56e9dc3b Mon Sep 17 00:00:00 2001 From: Stephen Hess Date: Thu, 13 Jul 2017 16:15:37 -0400 Subject: [PATCH] add predicate that looks for a parameter in req.clean --- .../predicates/has_request_parameter.js | 3 + .../predicates/has_request_parameter.js | 63 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 controller/predicates/has_request_parameter.js create mode 100644 test/unit/controller/predicates/has_request_parameter.js diff --git a/controller/predicates/has_request_parameter.js b/controller/predicates/has_request_parameter.js new file mode 100644 index 00000000..707f0c1d --- /dev/null +++ b/controller/predicates/has_request_parameter.js @@ -0,0 +1,3 @@ +const _ = require('lodash'); + +module.exports = (parameter) => (req, res) => _.has(req, ['clean', parameter]); diff --git a/test/unit/controller/predicates/has_request_parameter.js b/test/unit/controller/predicates/has_request_parameter.js new file mode 100644 index 00000000..099ba39d --- /dev/null +++ b/test/unit/controller/predicates/has_request_parameter.js @@ -0,0 +1,63 @@ +'use strict'; + +const _ = require('lodash'); +const has_request_parameter = require('../../../../controller/predicates/has_request_parameter'); + +module.exports.tests = {}; + +module.exports.tests.interface = (test, common) => { + test('valid interface', t => { + t.equal(typeof has_request_parameter, 'function', 'has_request_parameter is a function'); + t.end(); + }); +}; + +module.exports.tests.true_conditions = (test, common) => { + test('request with specified parameter should return true', t => { + [[], {}, 'string value', 17].forEach(val => { + const req = { + clean: { + 'parameter name': val + } + }; + + t.ok(has_request_parameter('parameter name')(req)); + + }); + + t.end(); + + }); + +}; + +module.exports.tests.false_conditions = (test, common) => { + test('request with undefined clean should return false', t => { + const req = {}; + + t.notOk(has_request_parameter('parameter name')(req)); + t.end(); + + }); + + test('request.clean without specified parameter should return false', t => { + const req = { + clean: {} + }; + + t.notOk(has_request_parameter('parameter name')(req)); + t.end(); + + }); + +}; + +module.exports.all = (tape, common) => { + function test(name, testFunction) { + return tape(`GET /has_request_parameter ${name}`, testFunction); + } + + for( const testCase in module.exports.tests ){ + module.exports.tests[testCase](test, common); + } +};