wzp
2021-05-13 7d694a9113118daec5be7ac224dab46a3b20f106
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
'use strict'
 
const t = require('tap')
const test = t.test
const FindMyWay = require('../')
 
test('pretty print - static routes', t => {
  t.plan(2)
 
  const findMyWay = FindMyWay()
  findMyWay.on('GET', '/test', () => {})
  findMyWay.on('GET', '/test/hello', () => {})
  findMyWay.on('GET', '/hello/world', () => {})
 
  const tree = findMyWay.prettyPrint()
 
  const expected = `└── /
    ├── test (GET)
    │   └── /hello (GET)
    └── hello/world (GET)
`
 
  t.is(typeof tree, 'string')
  t.equal(tree, expected)
})
 
test('pretty print - parametric routes', t => {
  t.plan(2)
 
  const findMyWay = FindMyWay()
  findMyWay.on('GET', '/test', () => {})
  findMyWay.on('GET', '/test/:hello', () => {})
  findMyWay.on('GET', '/hello/:world', () => {})
 
  const tree = findMyWay.prettyPrint()
 
  const expected = `└── /
    ├── test (GET)
    │   └── /
    │       └── :hello (GET)
    └── hello/
        └── :world (GET)
`
 
  t.is(typeof tree, 'string')
  t.equal(tree, expected)
})
 
test('pretty print - mixed parametric routes', t => {
  t.plan(2)
 
  const findMyWay = FindMyWay()
  findMyWay.on('GET', '/test', () => {})
  findMyWay.on('GET', '/test/:hello', () => {})
  findMyWay.on('POST', '/test/:hello', () => {})
  findMyWay.on('GET', '/test/:hello/world', () => {})
 
  const tree = findMyWay.prettyPrint()
 
  const expected = `└── /
    └── test (GET)
        └── /
            └── :hello (GET)
                :hello (POST)
                └── /world (GET)
`
 
  t.is(typeof tree, 'string')
  t.equal(tree, expected)
})
 
test('pretty print - wildcard routes', t => {
  t.plan(2)
 
  const findMyWay = FindMyWay()
  findMyWay.on('GET', '/test', () => {})
  findMyWay.on('GET', '/test/*', () => {})
  findMyWay.on('GET', '/hello/*', () => {})
 
  const tree = findMyWay.prettyPrint()
 
  const expected = `└── /
    ├── test (GET)
    │   └── /
    │       └── * (GET)
    └── hello/
        └── * (GET)
`
 
  t.is(typeof tree, 'string')
  t.equal(tree, expected)
})
 
test('pretty print - parametric routes with same parent and followed by a static route which has the same prefix with the former routes', t => {
  t.plan(2)
 
  const findMyWay = FindMyWay()
  findMyWay.on('GET', '/test', () => {})
  findMyWay.on('GET', '/test/hello/:id', () => {})
  findMyWay.on('POST', '/test/hello/:id', () => {})
  findMyWay.on('GET', '/test/helloworld', () => {})
 
  const tree = findMyWay.prettyPrint()
 
  const expected = `└── /
    └── test (GET)
        └── /hello
            ├── /
            │   └── :id (GET)
            │       :id (POST)
            └── world (GET)
`
 
  t.is(typeof tree, 'string')
  t.equal(tree, expected)
})