test: improve querystring.parse assertion messages
PR-URL: https://github.com/nodejs/node/pull/11234 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Nicu Micleușanu <micnic90@gmail.com>
This commit is contained in:
parent
ff785fd517
commit
8bcc122349
@ -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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user