From 68aabd7647a61a18ffb22c875d827ca9d5544565 Mon Sep 17 00:00:00 2001 From: Harish Krishna Date: Mon, 19 Jan 2015 16:27:32 -0500 Subject: [PATCH] tests --- test/unit/run.js | 1 + test/unit/sanitiser/coarse.js | 76 +++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 test/unit/sanitiser/coarse.js diff --git a/test/unit/run.js b/test/unit/run.js index ee45800b..20a5960d 100644 --- a/test/unit/run.js +++ b/test/unit/run.js @@ -12,6 +12,7 @@ var tests = [ require('./service/suggest'), require('./sanitiser/suggest'), require('./sanitiser/doc'), + require('./sanitiser/coarse'), require('./query/indeces'), require('./query/suggest'), require('./query/search'), diff --git a/test/unit/sanitiser/coarse.js b/test/unit/sanitiser/coarse.js new file mode 100644 index 00000000..f626141b --- /dev/null +++ b/test/unit/sanitiser/coarse.js @@ -0,0 +1,76 @@ + +var coarse = require('../../../sanitiser/coarse'), + _sanitize = coarse.sanitize, + middleware = coarse.middleware, + valid_layers = [ 'admin0', 'admin1', 'admin2', 'neighborhood' ], + sanitize = function(query, cb) { _sanitize({'query':query}, cb); }; + +module.exports.tests = {}; + +module.exports.tests.interface = function(test, common) { + test('sanitize interface', function(t) { + t.equal(typeof sanitize, 'function', 'sanitize is a function'); + t.equal(sanitize.length, 2, 'sanitize interface'); + t.end(); + }); + test('middleware interface', function(t) { + t.equal(typeof middleware, 'function', 'middleware is a function'); + t.equal(middleware.length, 3, 'sanitizee has a valid middleware'); + t.end(); + }); +}; + +module.exports.tests.layers = function(test, common) { + test('valid layers', function(t) { + sanitize({ input: 'test', lat: 0, lon: 0 }, function( err, clean ){ + t.equal(err, undefined, 'no error'); + t.deepEqual(clean.layers, valid_layers, 'layers set correctly'); + }); + t.end(); + }); +}; + +module.exports.tests.middleware_failure = function(test, common) { + test('middleware failure', function(t) { + var res = { status: function( code ){ + t.equal(code, 400, 'status set'); + }}; + var next = function( message ){ + var defaultError = 'invalid param \'input\': text length, must be >0'; + t.equal(message, defaultError); + t.end(); + }; + middleware( {}, res, next ); + }); +}; + +module.exports.tests.middleware_success = function(test, common) { + test('middleware success', function(t) { + var req = { query: { input: 'test', lat: 0, lon: 0 }}; + var next = function( message ){ + var defaultClean = { + input: 'test', + size: 10, + layers: [ 'admin0', 'admin1', 'admin2', 'neighborhood' ], + lat: 0, + lon: 0, + zoom: 10 + }; + t.equal(message, undefined, 'no error message set'); + t.deepEqual(req.clean, defaultClean); + t.end(); + }; + middleware( req, undefined, next ); + }); +}; + +module.exports.all = function (tape, common) { + + function test(name, testFunction) { + return tape('SANTIZE /coarse ' + name, testFunction); + } + + for( var testCase in module.exports.tests ){ + module.exports.tests[testCase](test, common); + } +}; \ No newline at end of file