|
1 | 1 | import o from "ospec"
|
2 | 2 |
|
3 |
| -import p from "../../src/std/p.js" |
| 3 | +import m from "../../src/entry/mithril.esm.js" |
4 | 4 |
|
5 | 5 | o.spec("p", () => {
|
6 | 6 | function test(prefix) {
|
7 | 7 | o("returns path if no params", () => {
|
8 |
| - var string = p(prefix + "/route/foo", undefined) |
| 8 | + var string = m.p(prefix + "/route/foo", undefined) |
9 | 9 |
|
10 | 10 | o(string).equals(`${prefix}/route/foo`)
|
11 | 11 | })
|
12 | 12 | o("skips interpolation if no params", () => {
|
13 |
| - var string = p(prefix + "/route/:id", undefined) |
| 13 | + var string = m.p(prefix + "/route/:id", undefined) |
14 | 14 |
|
15 | 15 | o(string).equals(`${prefix}/route/:id`)
|
16 | 16 | })
|
17 | 17 | o("appends query strings", () => {
|
18 |
| - var string = p(prefix + "/route/foo", {a: "b", c: 1}) |
| 18 | + var string = m.p(prefix + "/route/foo", {a: "b", c: 1}) |
19 | 19 |
|
20 | 20 | o(string).equals(`${prefix}/route/foo?a=b&c=1`)
|
21 | 21 | })
|
22 | 22 | o("inserts template parameters at end", () => {
|
23 |
| - var string = p(prefix + "/route/:id", {id: "1"}) |
| 23 | + var string = m.p(prefix + "/route/:id", {id: "1"}) |
24 | 24 |
|
25 | 25 | o(string).equals(`${prefix}/route/1`)
|
26 | 26 | })
|
27 | 27 | o("inserts template parameters at beginning", () => {
|
28 |
| - var string = p(prefix + "/:id/foo", {id: "1"}) |
| 28 | + var string = m.p(prefix + "/:id/foo", {id: "1"}) |
29 | 29 |
|
30 | 30 | o(string).equals(`${prefix}/1/foo`)
|
31 | 31 | })
|
32 | 32 | o("inserts template parameters at middle", () => {
|
33 |
| - var string = p(prefix + "/route/:id/foo", {id: "1"}) |
| 33 | + var string = m.p(prefix + "/route/:id/foo", {id: "1"}) |
34 | 34 |
|
35 | 35 | o(string).equals(`${prefix}/route/1/foo`)
|
36 | 36 | })
|
37 | 37 | o("inserts variadic paths", () => {
|
38 |
| - var string = p(prefix + "/route/:foo...", {foo: "id/1"}) |
| 38 | + var string = m.p(prefix + "/route/:foo...", {foo: "id/1"}) |
39 | 39 |
|
40 | 40 | o(string).equals(`${prefix}/route/id/1`)
|
41 | 41 | })
|
42 | 42 | o("inserts variadic paths with initial slashes", () => {
|
43 |
| - var string = p(prefix + "/route/:foo...", {foo: "/id/1"}) |
| 43 | + var string = m.p(prefix + "/route/:foo...", {foo: "/id/1"}) |
44 | 44 |
|
45 | 45 | o(string).equals(`${prefix}/route//id/1`)
|
46 | 46 | })
|
47 | 47 | o("skips template parameters at end if param missing", () => {
|
48 |
| - var string = p(prefix + "/route/:id", {param: 1}) |
| 48 | + var string = m.p(prefix + "/route/:id", {param: 1}) |
49 | 49 |
|
50 | 50 | o(string).equals(`${prefix}/route/:id?param=1`)
|
51 | 51 | })
|
52 | 52 | o("skips template parameters at beginning if param missing", () => {
|
53 |
| - var string = p(prefix + "/:id/foo", {param: 1}) |
| 53 | + var string = m.p(prefix + "/:id/foo", {param: 1}) |
54 | 54 |
|
55 | 55 | o(string).equals(`${prefix}/:id/foo?param=1`)
|
56 | 56 | })
|
57 | 57 | o("skips template parameters at middle if param missing", () => {
|
58 |
| - var string = p(prefix + "/route/:id/foo", {param: 1}) |
| 58 | + var string = m.p(prefix + "/route/:id/foo", {param: 1}) |
59 | 59 |
|
60 | 60 | o(string).equals(`${prefix}/route/:id/foo?param=1`)
|
61 | 61 | })
|
62 | 62 | o("skips variadic template parameters if param missing", () => {
|
63 |
| - var string = p(prefix + "/route/:foo...", {param: "/id/1"}) |
| 63 | + var string = m.p(prefix + "/route/:foo...", {param: "/id/1"}) |
64 | 64 |
|
65 | 65 | o(string).equals(`${prefix}/route/:foo...?param=%2Fid%2F1`)
|
66 | 66 | })
|
67 | 67 | o("handles escaped values", () => {
|
68 |
| - var data = p(prefix + "/route/:foo", {"foo": ";:@&=+$,/?%#"}) |
| 68 | + var data = m.p(prefix + "/route/:foo", {"foo": ";:@&=+$,/?%#"}) |
69 | 69 |
|
70 | 70 | o(data).equals(`${prefix}/route/%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23`)
|
71 | 71 | })
|
72 | 72 | o("handles unicode", () => {
|
73 |
| - var data = p(prefix + "/route/:ö", {"ö": "ö"}) |
| 73 | + var data = m.p(prefix + "/route/:ö", {"ö": "ö"}) |
74 | 74 |
|
75 | 75 | o(data).equals(`${prefix}/route/%C3%B6`)
|
76 | 76 | })
|
77 | 77 | o("handles zero", () => {
|
78 |
| - var string = p(prefix + "/route/:a", {a: 0}) |
| 78 | + var string = m.p(prefix + "/route/:a", {a: 0}) |
79 | 79 |
|
80 | 80 | o(string).equals(`${prefix}/route/0`)
|
81 | 81 | })
|
82 | 82 | o("handles false", () => {
|
83 |
| - var string = p(prefix + "/route/:a", {a: false}) |
| 83 | + var string = m.p(prefix + "/route/:a", {a: false}) |
84 | 84 |
|
85 | 85 | o(string).equals(`${prefix}/route/false`)
|
86 | 86 | })
|
87 | 87 | o("handles dashes", () => {
|
88 |
| - var string = p(prefix + "/:lang-:region/route", { |
| 88 | + var string = m.p(prefix + "/:lang-:region/route", { |
89 | 89 | lang: "en",
|
90 | 90 | region: "US"
|
91 | 91 | })
|
92 | 92 |
|
93 | 93 | o(string).equals(`${prefix}/en-US/route`)
|
94 | 94 | })
|
95 | 95 | o("handles dots", () => {
|
96 |
| - var string = p(prefix + "/:file.:ext/view", { |
| 96 | + var string = m.p(prefix + "/:file.:ext/view", { |
97 | 97 | file: "image",
|
98 | 98 | ext: "png"
|
99 | 99 | })
|
100 | 100 |
|
101 | 101 | o(string).equals(`${prefix}/image.png/view`)
|
102 | 102 | })
|
103 | 103 | o("merges query strings", () => {
|
104 |
| - var string = p(prefix + "/item?a=1&b=2", {c: 3}) |
| 104 | + var string = m.p(prefix + "/item?a=1&b=2", {c: 3}) |
105 | 105 |
|
106 | 106 | o(string).equals(`${prefix}/item?a=1&b=2&c=3`)
|
107 | 107 | })
|
108 | 108 | o("merges query strings with other parameters", () => {
|
109 |
| - var string = p(prefix + "/item/:id?a=1&b=2", {id: "foo", c: 3}) |
| 109 | + var string = m.p(prefix + "/item/:id?a=1&b=2", {id: "foo", c: 3}) |
110 | 110 |
|
111 | 111 | o(string).equals(`${prefix}/item/foo?a=1&b=2&c=3`)
|
112 | 112 | })
|
113 | 113 | o("consumes template parameters without modifying query string", () => {
|
114 |
| - var string = p(prefix + "/item/:id?a=1&b=2", {id: "foo"}) |
| 114 | + var string = m.p(prefix + "/item/:id?a=1&b=2", {id: "foo"}) |
115 | 115 |
|
116 | 116 | o(string).equals(`${prefix}/item/foo?a=1&b=2`)
|
117 | 117 | })
|
118 | 118 | o("handles flat object in query string", () => {
|
119 |
| - var string = p(prefix, {a: "b", c: 1}) |
| 119 | + var string = m.p(prefix, {a: "b", c: 1}) |
120 | 120 |
|
121 | 121 | o(string).equals(`${prefix}?a=b&c=1`)
|
122 | 122 | })
|
123 | 123 | o("handles escaped values in query string", () => {
|
124 |
| - var data = p(prefix, {";:@&=+$,/?%#": ";:@&=+$,/?%#"}) |
| 124 | + var data = m.p(prefix, {";:@&=+$,/?%#": ";:@&=+$,/?%#"}) |
125 | 125 |
|
126 | 126 | o(data).equals(`${prefix}?%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23=%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23`)
|
127 | 127 | })
|
128 | 128 | o("handles unicode in query string", () => {
|
129 |
| - var data = p(prefix, {"ö": "ö"}) |
| 129 | + var data = m.p(prefix, {"ö": "ö"}) |
130 | 130 |
|
131 | 131 | o(data).equals(`${prefix}?%C3%B6=%C3%B6`)
|
132 | 132 | })
|
133 | 133 | o("handles nested object in query string", () => {
|
134 |
| - var string = p(prefix, {a: {b: 1, c: 2}}) |
| 134 | + var string = m.p(prefix, {a: {b: 1, c: 2}}) |
135 | 135 |
|
136 | 136 | o(string).equals(`${prefix}?a%5Bb%5D=1&a%5Bc%5D=2`)
|
137 | 137 | })
|
138 | 138 | o("handles deep nested object in query string", () => {
|
139 |
| - var string = p(prefix, {a: {b: {c: 1, d: 2}}}) |
| 139 | + var string = m.p(prefix, {a: {b: {c: 1, d: 2}}}) |
140 | 140 |
|
141 | 141 | o(string).equals(`${prefix}?a%5Bb%5D%5Bc%5D=1&a%5Bb%5D%5Bd%5D=2`)
|
142 | 142 | })
|
143 | 143 | o("handles nested array in query string", () => {
|
144 |
| - var string = p(prefix, {a: ["x", "y"]}) |
| 144 | + var string = m.p(prefix, {a: ["x", "y"]}) |
145 | 145 |
|
146 | 146 | o(string).equals(`${prefix}?a%5B%5D=x&a%5B%5D=y`)
|
147 | 147 | })
|
148 | 148 | o("handles array w/ dupe values in query string", () => {
|
149 |
| - var string = p(prefix, {a: ["x", "x"]}) |
| 149 | + var string = m.p(prefix, {a: ["x", "x"]}) |
150 | 150 |
|
151 | 151 | o(string).equals(`${prefix}?a%5B%5D=x&a%5B%5D=x`)
|
152 | 152 | })
|
153 | 153 | o("handles deep nested array in query string", () => {
|
154 |
| - var string = p(prefix, {a: [["x", "y"]]}) |
| 154 | + var string = m.p(prefix, {a: [["x", "y"]]}) |
155 | 155 |
|
156 | 156 | o(string).equals(`${prefix}?a%5B%5D%5B%5D=x&a%5B%5D%5B%5D=y`)
|
157 | 157 | })
|
158 | 158 | o("handles deep nested array in object in query string", () => {
|
159 |
| - var string = p(prefix, {a: {b: ["x", "y"]}}) |
| 159 | + var string = m.p(prefix, {a: {b: ["x", "y"]}}) |
160 | 160 |
|
161 | 161 | o(string).equals(`${prefix}?a%5Bb%5D%5B%5D=x&a%5Bb%5D%5B%5D=y`)
|
162 | 162 | })
|
163 | 163 | o("handles deep nested object in array in query string", () => {
|
164 |
| - var string = p(prefix, {a: [{b: 1, c: 2}]}) |
| 164 | + var string = m.p(prefix, {a: [{b: 1, c: 2}]}) |
165 | 165 |
|
166 | 166 | o(string).equals(`${prefix}?a%5B%5D%5Bb%5D=1&a%5B%5D%5Bc%5D=2`)
|
167 | 167 | })
|
168 | 168 | o("handles date in query string", () => {
|
169 |
| - var string = p(prefix, {a: new Date(0)}) |
| 169 | + var string = m.p(prefix, {a: new Date(0)}) |
170 | 170 |
|
171 | 171 | o(string).equals(`${prefix}?a=${encodeURIComponent(new Date(0).toString())}`)
|
172 | 172 | })
|
173 | 173 | o("handles zero in query string", () => {
|
174 |
| - var string = p(prefix, {a: 0}) |
| 174 | + var string = m.p(prefix, {a: 0}) |
175 | 175 |
|
176 | 176 | o(string).equals(`${prefix}?a=0`)
|
177 | 177 | })
|
178 | 178 | o("retains empty string literally", () => {
|
179 |
| - var string = p(prefix, {a: ""}) |
| 179 | + var string = m.p(prefix, {a: ""}) |
180 | 180 |
|
181 | 181 | o(string).equals(`${prefix}?a=`)
|
182 | 182 | })
|
183 | 183 | o("drops `null` from query string", () => {
|
184 |
| - var string = p(prefix, {a: null}) |
| 184 | + var string = m.p(prefix, {a: null}) |
185 | 185 |
|
186 | 186 | o(string).equals(prefix)
|
187 | 187 | })
|
188 | 188 | o("drops `undefined` from query string", () => {
|
189 |
| - var string = p(prefix, {a: undefined}) |
| 189 | + var string = m.p(prefix, {a: undefined}) |
190 | 190 |
|
191 | 191 | o(string).equals(prefix)
|
192 | 192 | })
|
193 | 193 | o("turns `true` into value-less string in query string", () => {
|
194 |
| - var string = p(prefix, {a: true}) |
| 194 | + var string = m.p(prefix, {a: true}) |
195 | 195 |
|
196 | 196 | o(string).equals(`${prefix}?a`)
|
197 | 197 | })
|
198 | 198 | o("drops `false` from query string", () => {
|
199 |
| - var string = p(prefix, {a: false}) |
| 199 | + var string = m.p(prefix, {a: false}) |
200 | 200 |
|
201 | 201 | o(string).equals(prefix)
|
202 | 202 | })
|
|
0 commit comments