|
1 | 1 | import qs from '../../lib/qs'
|
2 | 2 | import * as Path from '../../lib/path'
|
3 | 3 | import 'chai/chai.js'
|
| 4 | +import { patternCompiler } from '../../lib/patternCompiler.js' |
4 | 5 |
|
5 | 6 | const { assert } = window.chai
|
6 | 7 | const { describe, it } = window
|
7 | 8 |
|
8 | 9 | describe('Path', () => {
|
9 | 10 | it('Path.extractParamNames', () => {
|
10 |
| - assert.deepEqual(Path.extractParamNames('a/b/c'), []) |
11 |
| - assert.deepEqual(Path.extractParamNames('/comments/:a/:b/edit'), ['a', 'b']) |
12 |
| - assert.deepEqual(Path.extractParamNames('/files/:path*.jpg'), ['path']) |
| 11 | + assert.deepEqual(Path.extractParamNames('a/b/c', patternCompiler), []) |
| 12 | + assert.deepEqual(Path.extractParamNames('/comments/:a/:b/edit', patternCompiler), ['a', 'b']) |
| 13 | + assert.deepEqual(Path.extractParamNames('/files/:path*.jpg', patternCompiler), ['path']) |
13 | 14 | })
|
14 | 15 |
|
15 | 16 | it('Path.extractParams', () => {
|
16 |
| - assert.deepEqual(Path.extractParams('a/b/c', 'a/b/c'), {}) |
17 |
| - assert.deepEqual(Path.extractParams('a/b/c', 'd/e/f'), null) |
| 17 | + assert.deepEqual(Path.extractParams('a/b/c', 'a/b/c', patternCompiler), {}) |
| 18 | + assert.deepEqual(Path.extractParams('a/b/c', 'd/e/f', patternCompiler), null) |
18 | 19 |
|
19 |
| - assert.deepEqual(Path.extractParams('comments/:id.:ext/edit', 'comments/abc.js/edit'), { id: 'abc', ext: 'js' }) |
| 20 | + assert.deepEqual(Path.extractParams('comments/:id.:ext/edit', 'comments/abc.js/edit', patternCompiler), { id: 'abc', ext: 'js' }) |
20 | 21 |
|
21 |
| - assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments/123/edit'), { id: '123' }) |
22 |
| - assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments/the%2Fid/edit'), { id: 'the/id' }) |
23 |
| - assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments//edit'), null) |
24 |
| - assert.deepEqual(Path.extractParams('comments/:id?/edit', 'users/123'), null) |
| 22 | + assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments/123/edit', patternCompiler), { id: '123' }) |
| 23 | + assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments/the%2Fid/edit', patternCompiler), { id: 'the/id' }) |
| 24 | + assert.deepEqual(Path.extractParams('comments/:id?/edit', 'comments//edit', patternCompiler), null) |
| 25 | + assert.deepEqual(Path.extractParams('comments/:id?/edit', 'users/123', patternCompiler), null) |
25 | 26 |
|
26 |
| - assert.deepEqual(Path.extractParams('one, two', 'one, two'), {}) |
27 |
| - assert.deepEqual(Path.extractParams('one, two', 'one two'), null) |
| 27 | + assert.deepEqual(Path.extractParams('one, two', 'one, two', patternCompiler), {}) |
| 28 | + assert.deepEqual(Path.extractParams('one, two', 'one two', patternCompiler), null) |
28 | 29 |
|
29 |
| - assert.deepEqual(Path.extractParams('/comments/:id/edit now', '/comments/abc/edit now'), { id: 'abc' }) |
30 |
| - assert.deepEqual(Path.extractParams('/comments/:id/edit now', '/users/123'), null) |
| 30 | + assert.deepEqual(Path.extractParams('/comments/:id/edit now', '/comments/abc/edit now', patternCompiler), { id: 'abc' }) |
| 31 | + assert.deepEqual(Path.extractParams('/comments/:id/edit now', '/users/123', patternCompiler), null) |
31 | 32 |
|
32 |
| - assert.deepEqual(Path.extractParams('/files/:path*', '/files/my/photo.jpg'), { path: 'my/photo.jpg' }) |
33 |
| - assert.deepEqual(Path.extractParams('/files/:path*', '/files/my/photo.jpg.zip'), { path: 'my/photo.jpg.zip' }) |
34 |
| - assert.deepEqual(Path.extractParams('/files/:path*.jpg', '/files/my%2Fphoto.jpg'), { path: 'my/photo' }) |
35 |
| - assert.deepEqual(Path.extractParams('/files/:path*', '/files'), { path: undefined }) |
36 |
| - assert.deepEqual(Path.extractParams('/files/:path*', '/files/'), { path: undefined }) |
37 |
| - assert.deepEqual(Path.extractParams('/files/:path*.jpg', '/files/my/photo.png'), null) |
| 33 | + assert.deepEqual(Path.extractParams('/files/:path*', '/files/my/photo.jpg', patternCompiler), { path: 'my/photo.jpg' }) |
| 34 | + assert.deepEqual(Path.extractParams('/files/:path*', '/files/my/photo.jpg.zip', patternCompiler), { path: 'my/photo.jpg.zip' }) |
| 35 | + assert.deepEqual(Path.extractParams('/files/:path*.jpg', '/files/my%2Fphoto.jpg', patternCompiler), { path: 'my/photo' }) |
| 36 | + assert.deepEqual(Path.extractParams('/files/:path*', '/files', patternCompiler), { path: undefined }) |
| 37 | + assert.deepEqual(Path.extractParams('/files/:path*', '/files/', patternCompiler), { path: undefined }) |
| 38 | + assert.deepEqual(Path.extractParams('/files/:path*.jpg', '/files/my/photo.png', patternCompiler), null) |
38 | 39 |
|
39 | 40 | // splat with named
|
40 |
| - assert.deepEqual(Path.extractParams('/files/:path*.:ext', '/files/my/photo.jpg'), { path: 'my/photo', ext: 'jpg' }) |
| 41 | + assert.deepEqual(Path.extractParams('/files/:path*.:ext', '/files/my/photo.jpg', patternCompiler), { path: 'my/photo', ext: 'jpg' }) |
41 | 42 |
|
42 | 43 | // multiple splats
|
43 |
| - assert.deepEqual(Path.extractParams('/files/:path*\\.:ext*', '/files/my/photo.jpg/gif'), { path: 'my/photo', ext: 'jpg/gif' }) |
| 44 | + assert.deepEqual(Path.extractParams('/files/:path*\\.:ext*', '/files/my/photo.jpg/gif', patternCompiler), { path: 'my/photo', ext: 'jpg/gif' }) |
44 | 45 |
|
45 | 46 | // one more more segments
|
46 |
| - assert.deepEqual(Path.extractParams('/files/:path+', '/files/my/photo.jpg'), { path: 'my/photo.jpg' }) |
47 |
| - assert.deepEqual(Path.extractParams('/files/:path+', '/files/my/photo.jpg.zip'), { path: 'my/photo.jpg.zip' }) |
48 |
| - assert.deepEqual(Path.extractParams('/files/:path+.jpg', '/files/my/photo.jpg'), { path: 'my/photo' }) |
49 |
| - assert.deepEqual(Path.extractParams('/files/:path+', '/files'), null) |
50 |
| - assert.deepEqual(Path.extractParams('/files/:path+', '/files/'), null) |
51 |
| - assert.deepEqual(Path.extractParams('/files/:path+.jpg', '/files/my/photo.png'), null) |
52 |
| - |
53 |
| - assert.deepEqual(Path.extractParams('/archive/:name?', '/archive'), { name: undefined }) |
54 |
| - assert.deepEqual(Path.extractParams('/archive/:name?', '/archive/'), { name: undefined }) |
55 |
| - assert.deepEqual(Path.extractParams('/archive/:name?', '/archive/foo'), { name: 'foo' }) |
56 |
| - assert.deepEqual(Path.extractParams('/archive/:name?', '/archivefoo'), null) |
57 |
| - assert.deepEqual(Path.extractParams('/archive/:name?', '/archiv'), null) |
58 |
| - |
59 |
| - assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo/with/foo.app'), { query: 'foo', domain: 'foo.app' }) |
60 |
| - assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap/with/foo'), { query: 'foo.ap', domain: 'foo' }) |
61 |
| - assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap/with/foo.app'), { query: 'foo.ap', domain: 'foo.app' }) |
62 |
| - assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap'), null) |
| 47 | + assert.deepEqual(Path.extractParams('/files/:path+', '/files/my/photo.jpg', patternCompiler), { path: 'my/photo.jpg' }) |
| 48 | + assert.deepEqual(Path.extractParams('/files/:path+', '/files/my/photo.jpg.zip', patternCompiler), { path: 'my/photo.jpg.zip' }) |
| 49 | + assert.deepEqual(Path.extractParams('/files/:path+.jpg', '/files/my/photo.jpg', patternCompiler), { path: 'my/photo' }) |
| 50 | + assert.deepEqual(Path.extractParams('/files/:path+', '/files', patternCompiler), null) |
| 51 | + assert.deepEqual(Path.extractParams('/files/:path+', '/files/', patternCompiler), null) |
| 52 | + assert.deepEqual(Path.extractParams('/files/:path+.jpg', '/files/my/photo.png', patternCompiler), null) |
| 53 | + |
| 54 | + assert.deepEqual(Path.extractParams('/archive/:name?', '/archive', patternCompiler), { name: undefined }) |
| 55 | + assert.deepEqual(Path.extractParams('/archive/:name?', '/archive/', patternCompiler), { name: undefined }) |
| 56 | + assert.deepEqual(Path.extractParams('/archive/:name?', '/archive/foo', patternCompiler), { name: 'foo' }) |
| 57 | + assert.deepEqual(Path.extractParams('/archive/:name?', '/archivefoo', patternCompiler), null) |
| 58 | + assert.deepEqual(Path.extractParams('/archive/:name?', '/archiv', patternCompiler), null) |
| 59 | + |
| 60 | + assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo/with/foo.app', patternCompiler), { query: 'foo', domain: 'foo.app' }) |
| 61 | + assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap/with/foo', patternCompiler), { query: 'foo.ap', domain: 'foo' }) |
| 62 | + assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap/with/foo.app', patternCompiler), { query: 'foo.ap', domain: 'foo.app' }) |
| 63 | + assert.deepEqual(Path.extractParams('/:query/with/:domain', '/foo.ap', patternCompiler), null) |
63 | 64 |
|
64 | 65 | // advanced use case of making params in the middle of the url optional
|
65 |
| - assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/123/edit'), { id: '123/edit' }) |
66 |
| - assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/edit'), { id: 'edit' }) |
67 |
| - assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/editor'), null) |
68 |
| - assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/123'), null) |
| 66 | + assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/123/edit', patternCompiler), { id: '123/edit' }) |
| 67 | + assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/edit', patternCompiler), { id: 'edit' }) |
| 68 | + assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/editor', patternCompiler), null) |
| 69 | + assert.deepEqual(Path.extractParams('/comments/:id(.*/?edit)', '/comments/123', patternCompiler), null) |
69 | 70 | })
|
70 | 71 |
|
71 | 72 | it('Path.injectParams', () => {
|
|
0 commit comments