utf-8 handling in router
This commit is contained in:
parent
f4c1d4a998
commit
d8a402f4f5
7 changed files with 117 additions and 101 deletions
|
|
@ -4,62 +4,77 @@ var o = require("../../ospec/ospec")
|
|||
var buildQueryString = require("../../querystring/build")
|
||||
|
||||
o.spec("buildQueryString", function() {
|
||||
o("builds from flat object", function() {
|
||||
o("handles flat object", function() {
|
||||
var string = buildQueryString({a: "b", c: 1})
|
||||
|
||||
o(string).equals("a=b&c=1")
|
||||
})
|
||||
o("builds from nested object", function() {
|
||||
o("handles escaped values", function() {
|
||||
var data = buildQueryString({";:@&=+$,/?%#": ";:@&=+$,/?%#"})
|
||||
|
||||
o(data).equals("%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23=%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23")
|
||||
})
|
||||
o("handles unicode", function() {
|
||||
var data = buildQueryString({"ö": "ö"})
|
||||
|
||||
o(data).equals("%C3%B6=%C3%B6")
|
||||
})
|
||||
o("handles nested object", function() {
|
||||
var string = buildQueryString({a: {b: 1, c: 2}})
|
||||
|
||||
o(string).equals("a%5Bb%5D=1&a%5Bc%5D=2")
|
||||
})
|
||||
o("builds from deep nested object", function() {
|
||||
o("handles deep nested object", function() {
|
||||
var string = buildQueryString({a: {b: {c: 1, d: 2}}})
|
||||
|
||||
o(string).equals("a%5Bb%5D%5Bc%5D=1&a%5Bb%5D%5Bd%5D=2")
|
||||
})
|
||||
o("builds from nested array", function() {
|
||||
o("handles nested array", function() {
|
||||
var string = buildQueryString({a: ["x", "y"]})
|
||||
|
||||
o(string).equals("a%5B0%5D=x&a%5B1%5D=y")
|
||||
})
|
||||
o("builds from deep nested array", function() {
|
||||
o("handles deep nested array", function() {
|
||||
var string = buildQueryString({a: [["x", "y"]]})
|
||||
|
||||
o(string).equals("a%5B0%5D%5B0%5D=x&a%5B0%5D%5B1%5D=y")
|
||||
})
|
||||
o("builds from deep nested array in object", function() {
|
||||
o("handles deep nested array in object", function() {
|
||||
var string = buildQueryString({a: {b: ["x", "y"]}})
|
||||
|
||||
o(string).equals("a%5Bb%5D%5B0%5D=x&a%5Bb%5D%5B1%5D=y")
|
||||
})
|
||||
o("builds from deep nested object in array", function() {
|
||||
o("handles deep nested object in array", function() {
|
||||
var string = buildQueryString({a: [{b: 1, c: 2}]})
|
||||
|
||||
o(string).equals("a%5B0%5D%5Bb%5D=1&a%5B0%5D%5Bc%5D=2")
|
||||
})
|
||||
o("builds date", function() {
|
||||
o("handles date", function() {
|
||||
var string = buildQueryString({a: new Date(0)})
|
||||
|
||||
o(string).equals("a=" + encodeURIComponent(new Date(0).toString()))
|
||||
})
|
||||
o("builds null into empty string (like jQuery)", function() {
|
||||
o("turns null into value-less string (like jQuery)", function() {
|
||||
var string = buildQueryString({a: null})
|
||||
|
||||
o(string).equals("a=")
|
||||
o(string).equals("a")
|
||||
})
|
||||
o("builds undefined into empty string (like jQuery)", function() {
|
||||
o("turns undefined into value-less string (like jQuery)", function() {
|
||||
var string = buildQueryString({a: undefined})
|
||||
|
||||
o(string).equals("a=")
|
||||
o(string).equals("a")
|
||||
})
|
||||
o("builds zero", function() {
|
||||
o("turns empty string into value-less string (like jQuery)", function() {
|
||||
var string = buildQueryString({a: ""})
|
||||
|
||||
o(string).equals("a")
|
||||
})
|
||||
o("handles zero", function() {
|
||||
var string = buildQueryString({a: 0})
|
||||
|
||||
o(string).equals("a=0")
|
||||
})
|
||||
o("builds false", function() {
|
||||
o("handles false", function() {
|
||||
var string = buildQueryString({a: false})
|
||||
|
||||
o(string).equals("a=false")
|
||||
|
|
|
|||
|
|
@ -12,6 +12,22 @@ o.spec("parseQueryString", function() {
|
|||
var data = parseQueryString("?a=b&c=d")
|
||||
o(data).deepEquals({a: "b", c: "d"})
|
||||
})
|
||||
o("handles escaped values", function() {
|
||||
var data = parseQueryString("?%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23=%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23")
|
||||
o(data).deepEquals({";:@&=+$,/?%#": ";:@&=+$,/?%#"})
|
||||
})
|
||||
o("handles escaped square brackets", function() {
|
||||
var data = parseQueryString("?a%5B%5D=b")
|
||||
o(data).deepEquals({"a": ["b"]})
|
||||
})
|
||||
o("handles escaped unicode", function() {
|
||||
var data = parseQueryString("?%C3%B6=%C3%B6")
|
||||
o(data).deepEquals({"ö": "ö"})
|
||||
})
|
||||
o("handles unicode", function() {
|
||||
var data = parseQueryString("?ö=ö")
|
||||
o(data).deepEquals({"ö": "ö"})
|
||||
})
|
||||
o("parses without question mark", function() {
|
||||
var data = parseQueryString("a=b&c=d")
|
||||
o(data).deepEquals({a: "b", c: "d"})
|
||||
|
|
@ -71,4 +87,8 @@ o.spec("parseQueryString", function() {
|
|||
var data = parseQueryString("a=")
|
||||
o(data).deepEquals({a: ""})
|
||||
})
|
||||
o("does not cast void to number", function() {
|
||||
var data = parseQueryString("a")
|
||||
o(data).deepEquals({a: ""})
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue