|
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