This commit is contained in:
Luke Pulverenti 2017-01-27 18:07:14 -05:00
parent 82bcca376f
commit 8a6884abef
494 changed files with 256 additions and 120180 deletions

View file

@ -1,91 +1 @@
'use strict';
var assert = require('assert');
var qs = require('./');
describe('.parse()', function () {
it('query strings starting with a `?`', function () {
assert.deepEqual(qs.parse('?foo=bar'), {foo: 'bar'});
});
it('query strings starting with a `#`', function () {
assert.deepEqual(qs.parse('#foo=bar'), {foo: 'bar'});
});
it('query strings starting with a `&', function () {
assert.deepEqual(qs.parse('&foo=bar&foo=baz'), {foo: ['bar', 'baz']});
});
it('parse a query string', function () {
assert.deepEqual(qs.parse('foo=bar'), {foo: 'bar'});
});
it('parse multiple query string', function () {
assert.deepEqual(qs.parse('foo=bar&key=val'), {foo: 'bar', key: 'val'});
});
it('parse query string without a value', function () {
assert.deepEqual(qs.parse('foo'), {foo: null});
assert.deepEqual(qs.parse('foo&key'), {foo: null, key: null});
assert.deepEqual(qs.parse('foo=bar&key'), {foo: 'bar', key: null});
});
it('return empty object if no qss can be found', function () {
assert.deepEqual(qs.parse('?'), {});
assert.deepEqual(qs.parse('&'), {});
assert.deepEqual(qs.parse('#'), {});
assert.deepEqual(qs.parse(' '), {});
});
it('handle `+` correctly', function () {
assert.deepEqual(qs.parse('foo+faz=bar+baz++'), {'foo faz': 'bar baz '});
});
it('handle multiple of the same key', function () {
assert.deepEqual(qs.parse('foo=bar&foo=baz'), {foo: ['bar', 'baz']});
});
it('query strings params including embedded `=`', function () {
assert.deepEqual(qs.parse('?param=http%3A%2F%2Fsomeurl%3Fid%3D2837'), {param: 'http://someurl?id=2837'});
});
});
describe('.stringify()', function () {
it('stringify', function () {
assert.strictEqual(qs.stringify({foo: 'bar'}), 'foo=bar');
assert.strictEqual(qs.stringify({foo: 'bar', bar: 'baz'}), 'bar=baz&foo=bar');
});
it('different types', function () {
assert.strictEqual(qs.stringify(), '');
assert.strictEqual(qs.stringify(0), '');
});
it('URI encode', function () {
assert.strictEqual(qs.stringify({'foo bar': 'baz faz'}), 'foo%20bar=baz%20faz');
});
it('handle array value', function () {
assert.strictEqual(qs.stringify({abc: 'abc', foo: ['bar', 'baz']}), 'abc=abc&foo=bar&foo=baz');
});
});
describe('.extract()', function () {
it('should extract qs from url', function () {
assert.equal(qs.extract('http://foo.bar/?abc=def&hij=klm'), 'abc=def&hij=klm');
assert.equal(qs.extract('http://foo.bar/?'), '');
});
it('should handle strings not containing qs', function () {
assert.equal(qs.extract('http://foo.bar/'), '');
assert.equal(qs.extract(''), '');
});
it('should throw for invalid values', function() {
assert.throws(function() {
qs.extract(null);
}, TypeError);
assert.throws(function() {
qs.extract(undefined);
}, TypeError);
});
});
"use strict";var assert=require("assert"),qs=require("./");describe(".parse()",function(){it("query strings starting with a `?`",function(){assert.deepEqual(qs.parse("?foo=bar"),{foo:"bar"})}),it("query strings starting with a `#`",function(){assert.deepEqual(qs.parse("#foo=bar"),{foo:"bar"})}),it("query strings starting with a `&",function(){assert.deepEqual(qs.parse("&foo=bar&foo=baz"),{foo:["bar","baz"]})}),it("parse a query string",function(){assert.deepEqual(qs.parse("foo=bar"),{foo:"bar"})}),it("parse multiple query string",function(){assert.deepEqual(qs.parse("foo=bar&key=val"),{foo:"bar",key:"val"})}),it("parse query string without a value",function(){assert.deepEqual(qs.parse("foo"),{foo:null}),assert.deepEqual(qs.parse("foo&key"),{foo:null,key:null}),assert.deepEqual(qs.parse("foo=bar&key"),{foo:"bar",key:null})}),it("return empty object if no qss can be found",function(){assert.deepEqual(qs.parse("?"),{}),assert.deepEqual(qs.parse("&"),{}),assert.deepEqual(qs.parse("#"),{}),assert.deepEqual(qs.parse(" "),{})}),it("handle `+` correctly",function(){assert.deepEqual(qs.parse("foo+faz=bar+baz++"),{"foo faz":"bar baz "})}),it("handle multiple of the same key",function(){assert.deepEqual(qs.parse("foo=bar&foo=baz"),{foo:["bar","baz"]})}),it("query strings params including embedded `=`",function(){assert.deepEqual(qs.parse("?param=http%3A%2F%2Fsomeurl%3Fid%3D2837"),{param:"http://someurl?id=2837"})})}),describe(".stringify()",function(){it("stringify",function(){assert.strictEqual(qs.stringify({foo:"bar"}),"foo=bar"),assert.strictEqual(qs.stringify({foo:"bar",bar:"baz"}),"bar=baz&foo=bar")}),it("different types",function(){assert.strictEqual(qs.stringify(),""),assert.strictEqual(qs.stringify(0),"")}),it("URI encode",function(){assert.strictEqual(qs.stringify({"foo bar":"baz faz"}),"foo%20bar=baz%20faz")}),it("handle array value",function(){assert.strictEqual(qs.stringify({abc:"abc",foo:["bar","baz"]}),"abc=abc&foo=bar&foo=baz")})}),describe(".extract()",function(){it("should extract qs from url",function(){assert.equal(qs.extract("http://foo.bar/?abc=def&hij=klm"),"abc=def&hij=klm"),assert.equal(qs.extract("http://foo.bar/?"),"")}),it("should handle strings not containing qs",function(){assert.equal(qs.extract("http://foo.bar/"),""),assert.equal(qs.extract(""),"")}),it("should throw for invalid values",function(){assert.throws(function(){qs.extract(null)},TypeError),assert.throws(function(){qs.extract(void 0)},TypeError)})});