-
-
Notifications
You must be signed in to change notification settings - Fork 927
/
Copy pathtest-buildQueryString.js
87 lines (69 loc) · 2.42 KB
/
test-buildQueryString.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
"use strict"
var o = require("ospec")
var buildQueryString = require("../../querystring/build")
o.spec("buildQueryString", function() {
o("handles flat object", function() {
var string = buildQueryString({a: "b", c: 1})
o(string).equals("a=b&c=1")
})
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("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("handles nested array", function() {
var string = buildQueryString({a: ["x", "y"]})
o(string).equals("a%5B0%5D=x&a%5B1%5D=y")
})
o("handles array w/ dupe values", function() {
var string = buildQueryString({a: ["x", "x"]})
o(string).equals("a%5B0%5D=x&a%5B1%5D=x")
})
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("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("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("handles date", function() {
var string = buildQueryString({a: new Date(0)})
o(string).equals("a=" + encodeURIComponent(new Date(0).toString()))
})
o("turns null into value-less string (like jQuery)", function() {
var string = buildQueryString({a: null})
o(string).equals("a")
})
o("turns undefined into value-less string (like jQuery)", function() {
var string = buildQueryString({a: undefined})
o(string).equals("a")
})
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("handles false", function() {
var string = buildQueryString({a: false})
o(string).equals("a=false")
})
})