Skip to content
Permalink
Browse files

test: improve querystring.parse assertion messages

PR-URL: #11234
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Nicu Micleușanu <micnic90@gmail.com>
  • Loading branch information...
mscdex authored and jasnell committed Feb 8, 2017
1 parent ff785fd commit 8bcc1223496e6ae16e2b3b2afddf9ca792625055
Showing with 24 additions and 8 deletions.
  1. +24 −8 test/parallel/test-querystring.js
@@ -1,6 +1,7 @@
'use strict';
require('../common');
const assert = require('assert');
const inspect = require('util').inspect;

// test using assert
const qs = require('querystring');
@@ -126,28 +127,43 @@ assert.strictEqual('918854443121279438895193',
qs.parse('id=918854443121279438895193').id);


function check(actual, expected) {
function check(actual, expected, input) {
assert(!(actual instanceof Object));
assert.deepStrictEqual(Object.keys(actual).sort(),
Object.keys(expected).sort());
Object.keys(expected).forEach(function(key) {
assert.deepStrictEqual(actual[key], expected[key]);
const actualKeys = Object.keys(actual).sort();
const expectedKeys = Object.keys(expected).sort();
let msg;
if (typeof input === 'string') {
msg = `Input: ${inspect(input)}\n` +
`Actual keys: ${inspect(actualKeys)}\n` +
`Expected keys: ${inspect(expectedKeys)}`;
}
assert.deepStrictEqual(actualKeys, expectedKeys, msg);
expectedKeys.forEach(function(key) {
if (typeof input === 'string') {
msg = `Input: ${inspect(input)}\n` +
`Key: ${inspect(key)}\n` +
`Actual value: ${inspect(actual[key])}\n` +
`Expected value: ${inspect(expected[key])}`;
} else {
msg = undefined;
}
assert.deepStrictEqual(actual[key], expected[key], msg);
});
}

// test that the canonical qs is parsed properly.
qsTestCases.forEach(function(testCase) {
check(qs.parse(testCase[0]), testCase[2]);
check(qs.parse(testCase[0]), testCase[2], testCase[0]);
});

// test that the colon test cases can do the same
qsColonTestCases.forEach(function(testCase) {
check(qs.parse(testCase[0], ';', ':'), testCase[2]);
check(qs.parse(testCase[0], ';', ':'), testCase[2], testCase[0]);
});

// test the weird objects, that they get parsed properly
qsWeirdObjects.forEach(function(testCase) {
check(qs.parse(testCase[1]), testCase[2]);
check(qs.parse(testCase[1]), testCase[2], testCase[1]);
});

qsNoMungeTestCases.forEach(function(testCase) {

0 comments on commit 8bcc122

Please sign in to comment.
You can’t perform that action at this time.