shunter
Version:
A Node.js application built to read JSON and translate it into HTML
81 lines (67 loc) • 2.53 kB
JavaScript
;
var assert = require('proclaim');
var sinon = require('sinon');
var filter = require('../../../filters/input/environment.js');
describe('Populate data with environment info', function() {
// jscs:disable requireCamelCaseOrUpperCaseIdentifiers
var callback;
beforeEach(function() {
callback = sinon.stub();
});
it('Should add the request url', function() {
filter({}, {
url: '/hello'
}, {}, {}, callback);
assert.strictEqual(callback.firstCall.args[0].request_url, '/hello');
});
it('Should handle query parameters', function() {
var params = {
test: 'Something'
};
filter({}, {
url: '/hello/world?test=something',
query: params
}, {}, {}, callback);
assert.strictEqual(callback.firstCall.args[0].request_url, '/hello/world');
assert.strictEqual(callback.firstCall.args[0].query_data.test, 'Something');
});
it('Should convert a query parameter containing true or false to a truthy value', function() {
var params = {
show_ads: 'false',
disable_third_party_scripts: 'true'
};
filter({}, {
url: '/hello/world?show_ads=false&disable_third_party_scripts=true',
query: params
}, {}, {}, callback);
assert.strictEqual(callback.firstCall.args[0].request_url, '/hello/world');
assert.strictEqual(callback.firstCall.args[0].query_data.show_ads, false);
assert.strictEqual(callback.firstCall.args[0].query_data.disable_third_party_scripts, true);
});
it('Should convert a query parameter containing an integer to a numeric value', function() {
var params = {
page: '2'
};
filter({}, {
url: '/hello/world?page=2',
query: params
}, {}, {}, callback);
assert.strictEqual(callback.firstCall.args[0].request_url, '/hello/world');
assert.strictEqual(callback.firstCall.args[0].query_data.page, 2);
});
it('Should support passing through arrays from the query data', function() {
var params = {
journals: ['hortres', 'mtm', 'true', '7']
};
filter({}, {
url: '/page?journals[]=hortres&journals[]=mtm',
query: params
}, {}, {}, callback);
assert.isArray(callback.firstCall.args[0].query_data.journals);
assert.strictEqual(callback.firstCall.args[0].query_data.journals.length, 4);
assert.strictEqual(callback.firstCall.args[0].query_data.journals[0], 'hortres');
assert.strictEqual(callback.firstCall.args[0].query_data.journals[1], 'mtm');
assert.strictEqual(callback.firstCall.args[0].query_data.journals[2], true);
assert.strictEqual(callback.firstCall.args[0].query_data.journals[3], 7);
});
});