You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					489 lines
				
				16 KiB
			
		
		
			
		
	
	
					489 lines
				
				16 KiB
			| 
											3 years ago
										 | '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.equal(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.equal(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.equal(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.equal(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.equal(typeof tree, 'string') | ||
|  |   t.equal(tree, expected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print - constrained parametric routes', t => { | ||
|  |   t.plan(2) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  |   findMyWay.on('GET', '/test', () => {}) | ||
|  |   findMyWay.on('GET', '/test', { constraints: { host: 'auth.fastify.io' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '1.1.2' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '2.0.0' } }, () => {}) | ||
|  | 
 | ||
|  |   const tree = findMyWay.prettyPrint() | ||
|  | 
 | ||
|  |   const expected = `└── /test (GET)
 | ||
|  |     /test (GET) {"host":"auth.fastify.io"} | ||
|  |     └── /:hello (GET) | ||
|  |         /:hello (GET) {"version":"1.1.2"} | ||
|  |         /:hello (GET) {"version":"2.0.0"} | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof tree, 'string') | ||
|  |   t.equal(tree, expected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print - multiple parameters are drawn appropriately', t => { | ||
|  |   t.plan(2) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  |   findMyWay.on('GET', '/test', () => {}) | ||
|  |   // routes with a nested parameter (i.e. no handler for the /:param) were breaking the display
 | ||
|  |   findMyWay.on('GET', '/test/:hello/there/:ladies', () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello/there/:ladies/and/:gents', () => {}) | ||
|  |   findMyWay.on('GET', '/test/are/:you/:ready/to/:rock', () => {}) | ||
|  | 
 | ||
|  |   const tree = findMyWay.prettyPrint() | ||
|  | 
 | ||
|  |   const expected = `└── /test (GET)
 | ||
|  |     └── / | ||
|  |         ├── :hello/there/:ladies (GET) | ||
|  |         │   └── /and/:gents (GET) | ||
|  |         └── are/:you/:ready/to/:rock (GET) | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof tree, 'string') | ||
|  |   t.equal(tree, expected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print commonPrefix - use routes array to draw flattened routes', t => { | ||
|  |   t.plan(4) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  | 
 | ||
|  |   findMyWay.on('GET', '/test', () => {}) | ||
|  |   findMyWay.on('GET', '/test/hello', () => {}) | ||
|  |   findMyWay.on('GET', '/testing', () => {}) | ||
|  |   findMyWay.on('GET', '/testing/:param', () => {}) | ||
|  |   findMyWay.on('PUT', '/update', () => {}) | ||
|  | 
 | ||
|  |   const radixTree = findMyWay.prettyPrint({ commonPrefix: true }) | ||
|  |   const arrayTree = findMyWay.prettyPrint({ commonPrefix: false }) | ||
|  | 
 | ||
|  |   const radixExpected = `└── /
 | ||
|  |     ├── test (GET) | ||
|  |     │   ├── /hello (GET) | ||
|  |     │   └── ing (GET) | ||
|  |     │       └── /:param (GET) | ||
|  |     └── update (PUT) | ||
|  | `
 | ||
|  |   const arrayExpected = `└── / (-)
 | ||
|  |     ├── test (GET) | ||
|  |     │   └── /hello (GET) | ||
|  |     ├── testing (GET) | ||
|  |     │   └── /:param (GET) | ||
|  |     └── update (PUT) | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof radixTree, 'string') | ||
|  |   t.equal(typeof arrayTree, 'string') | ||
|  | 
 | ||
|  |   t.equal(radixTree, radixExpected) | ||
|  |   t.equal(arrayTree, arrayExpected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print commonPrefix - handle wildcard root', t => { | ||
|  |   t.plan(2) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  | 
 | ||
|  |   findMyWay.on('OPTIONS', '*', () => {}) | ||
|  |   findMyWay.on('GET', '/test/hello', () => {}) | ||
|  |   findMyWay.on('GET', '/testing', () => {}) | ||
|  |   findMyWay.on('GET', '/testing/:param', () => {}) | ||
|  |   findMyWay.on('PUT', '/update', () => {}) | ||
|  | 
 | ||
|  |   const arrayTree = findMyWay.prettyPrint({ commonPrefix: false }) | ||
|  |   const arrayExpected = `├── * (OPTIONS)
 | ||
|  | └── / (-) | ||
|  |     ├── test/hello (GET) | ||
|  |     ├── testing (GET) | ||
|  |     │   └── /:param (GET) | ||
|  |     └── update (PUT) | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof arrayTree, 'string') | ||
|  |   t.equal(arrayTree, arrayExpected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print commonPrefix - handle constrained routes', t => { | ||
|  |   t.plan(2) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  | 
 | ||
|  |   findMyWay.on('GET', '/test', () => {}) | ||
|  |   findMyWay.on('GET', '/test', { constraints: { host: 'auth.fastify.io' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', () => {}) | ||
|  |   findMyWay.on('PUT', '/test/:hello', () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '1.1.2' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '2.0.0' } }, () => {}) | ||
|  | 
 | ||
|  |   const arrayTree = findMyWay.prettyPrint({ commonPrefix: false }) | ||
|  |   const arrayExpected = `└── / (-)
 | ||
|  |     └── test (GET) | ||
|  |         test (GET) {"host":"auth.fastify.io"} | ||
|  |         └── /:hello (GET, PUT) | ||
|  |             /:hello (GET) {"version":"1.1.2"} | ||
|  |             /:hello (GET) {"version":"2.0.0"} | ||
|  | `
 | ||
|  |   t.equal(typeof arrayTree, 'string') | ||
|  |   t.equal(arrayTree, arrayExpected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print includeMeta - commonPrefix: true', t => { | ||
|  |   t.plan(6) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  |   const namedFunction = () => {} | ||
|  |   const store = { | ||
|  |     onRequest: [() => {}, namedFunction], | ||
|  |     onTimeout: [() => {}], | ||
|  |     genericMeta: 'meta', | ||
|  |     mixedMeta: ['mixed items', { an: 'object' }], | ||
|  |     objectMeta: { one: '1', two: 2 }, | ||
|  |     functionMeta: namedFunction | ||
|  |   } | ||
|  | 
 | ||
|  |   store[Symbol('symbolKey')] = Symbol('symbolValue') | ||
|  | 
 | ||
|  |   findMyWay.on('GET', '/test', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test', { constraints: { host: 'auth.fastify.io' } }, () => {}, store) | ||
|  |   findMyWay.on('GET', '/testing/:hello', () => {}, store) | ||
|  |   findMyWay.on('PUT', '/tested/:hello', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '1.1.2' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '2.0.0' } }, () => {}) | ||
|  | 
 | ||
|  |   const radixTree = findMyWay.prettyPrint({ commonPrefix: true, includeMeta: true }) | ||
|  |   const radixTreeExpected = `└── /
 | ||
|  |     ├── test (GET) | ||
|  |     │   • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |     │   • (onTimeout) ["anonymous()"] | ||
|  |     │   • (genericMeta) "meta" | ||
|  |     │   • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |     │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   • (functionMeta) "namedFunction()" | ||
|  |     │   • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |     │   test (GET) {"host":"auth.fastify.io"} | ||
|  |     │   • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |     │   • (onTimeout) ["anonymous()"] | ||
|  |     │   • (genericMeta) "meta" | ||
|  |     │   • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |     │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   • (functionMeta) "namedFunction()" | ||
|  |     │   • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |     │   ├── ing/:hello (GET) | ||
|  |     │   │   • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |     │   │   • (onTimeout) ["anonymous()"] | ||
|  |     │   │   • (genericMeta) "meta" | ||
|  |     │   │   • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |     │   │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   │   • (functionMeta) "namedFunction()" | ||
|  |     │   │   • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |     │   └── /:hello (GET) {"version":"1.1.2"} | ||
|  |     │       /:hello (GET) {"version":"2.0.0"} | ||
|  |     └── tested/:hello (PUT) | ||
|  |         • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |         • (onTimeout) ["anonymous()"] | ||
|  |         • (genericMeta) "meta" | ||
|  |         • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |         • (objectMeta) {"one":"1","two":2} | ||
|  |         • (functionMeta) "namedFunction()" | ||
|  |         • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  | `
 | ||
|  |   const radixTreeSpecific = findMyWay.prettyPrint({ commonPrefix: true, includeMeta: ['onTimeout', 'objectMeta', 'nonExistent'] }) | ||
|  |   const radixTreeSpecificExpected = `└── /
 | ||
|  |     ├── test (GET) | ||
|  |     │   • (onTimeout) ["anonymous()"] | ||
|  |     │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   test (GET) {"host":"auth.fastify.io"} | ||
|  |     │   • (onTimeout) ["anonymous()"] | ||
|  |     │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   ├── ing/:hello (GET) | ||
|  |     │   │   • (onTimeout) ["anonymous()"] | ||
|  |     │   │   • (objectMeta) {"one":"1","two":2} | ||
|  |     │   └── /:hello (GET) {"version":"1.1.2"} | ||
|  |     │       /:hello (GET) {"version":"2.0.0"} | ||
|  |     └── tested/:hello (PUT) | ||
|  |         • (onTimeout) ["anonymous()"] | ||
|  |         • (objectMeta) {"one":"1","two":2} | ||
|  | `
 | ||
|  | 
 | ||
|  |   const radixTreeNoMeta = findMyWay.prettyPrint({ commonPrefix: true, includeMeta: false }) | ||
|  |   const radixTreeNoMetaExpected = `└── /
 | ||
|  |     ├── test (GET) | ||
|  |     │   test (GET) {"host":"auth.fastify.io"} | ||
|  |     │   ├── ing/:hello (GET) | ||
|  |     │   └── /:hello (GET) {"version":"1.1.2"} | ||
|  |     │       /:hello (GET) {"version":"2.0.0"} | ||
|  |     └── tested/:hello (PUT) | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof radixTree, 'string') | ||
|  |   t.equal(radixTree, radixTreeExpected) | ||
|  | 
 | ||
|  |   t.equal(typeof radixTreeSpecific, 'string') | ||
|  |   t.equal(radixTreeSpecific, radixTreeSpecificExpected) | ||
|  | 
 | ||
|  |   t.equal(typeof radixTreeNoMeta, 'string') | ||
|  |   t.equal(radixTreeNoMeta, radixTreeNoMetaExpected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print includeMeta - commonPrefix: false', t => { | ||
|  |   t.plan(6) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay() | ||
|  |   const namedFunction = () => {} | ||
|  |   const store = { | ||
|  |     onRequest: [() => {}, namedFunction], | ||
|  |     onTimeout: [() => {}], | ||
|  |     genericMeta: 'meta', | ||
|  |     mixedMeta: ['mixed items', { an: 'object' }], | ||
|  |     objectMeta: { one: '1', two: 2 }, | ||
|  |     functionMeta: namedFunction | ||
|  |   } | ||
|  | 
 | ||
|  |   store[Symbol('symbolKey')] = Symbol('symbolValue') | ||
|  | 
 | ||
|  |   findMyWay.on('GET', '/test', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test', { constraints: { host: 'auth.fastify.io' } }, () => {}, store) | ||
|  |   findMyWay.on('GET', '/test/:hello', () => {}, store) | ||
|  |   findMyWay.on('PUT', '/test/:hello', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '1.1.2' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '2.0.0' } }, () => {}) | ||
|  | 
 | ||
|  |   const arrayTree = findMyWay.prettyPrint({ commonPrefix: false, includeMeta: true }) | ||
|  |   const arrayExpected = `└── / (-)
 | ||
|  |     └── test (GET) | ||
|  |         • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |         • (onTimeout) ["anonymous()"] | ||
|  |         • (genericMeta) "meta" | ||
|  |         • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |         • (objectMeta) {"one":"1","two":2} | ||
|  |         • (functionMeta) "namedFunction()" | ||
|  |         • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |         test (GET) {"host":"auth.fastify.io"} | ||
|  |         • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |         • (onTimeout) ["anonymous()"] | ||
|  |         • (genericMeta) "meta" | ||
|  |         • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |         • (objectMeta) {"one":"1","two":2} | ||
|  |         • (functionMeta) "namedFunction()" | ||
|  |         • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |         └── /:hello (GET, PUT) | ||
|  |             • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |             • (onTimeout) ["anonymous()"] | ||
|  |             • (genericMeta) "meta" | ||
|  |             • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |             • (objectMeta) {"one":"1","two":2} | ||
|  |             • (functionMeta) "namedFunction()" | ||
|  |             • (Symbol(symbolKey)) "Symbol(symbolValue)" | ||
|  |             /:hello (GET) {"version":"1.1.2"} | ||
|  |             /:hello (GET) {"version":"2.0.0"} | ||
|  | `
 | ||
|  | 
 | ||
|  |   const arraySpecific = findMyWay.prettyPrint({ commonPrefix: false, includeMeta: ['onRequest', 'mixedMeta', 'nonExistent'] }) | ||
|  |   const arraySpecificExpected = `└── / (-)
 | ||
|  |     └── test (GET) | ||
|  |         • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |         • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |         test (GET) {"host":"auth.fastify.io"} | ||
|  |         • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |         • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |         └── /:hello (GET, PUT) | ||
|  |             • (onRequest) ["anonymous()","namedFunction()"] | ||
|  |             • (mixedMeta) ["mixed items",{"an":"object"}] | ||
|  |             /:hello (GET) {"version":"1.1.2"} | ||
|  |             /:hello (GET) {"version":"2.0.0"} | ||
|  | `
 | ||
|  |   const arrayNoMeta = findMyWay.prettyPrint({ commonPrefix: false, includeMeta: false }) | ||
|  |   const arrayNoMetaExpected = `└── / (-)
 | ||
|  |     └── test (GET) | ||
|  |         test (GET) {"host":"auth.fastify.io"} | ||
|  |         └── /:hello (GET, PUT) | ||
|  |             /:hello (GET) {"version":"1.1.2"} | ||
|  |             /:hello (GET) {"version":"2.0.0"} | ||
|  | `
 | ||
|  | 
 | ||
|  |   t.equal(typeof arrayTree, 'string') | ||
|  |   t.equal(arrayTree, arrayExpected) | ||
|  | 
 | ||
|  |   t.equal(typeof arraySpecific, 'string') | ||
|  |   t.equal(arraySpecific, arraySpecificExpected) | ||
|  | 
 | ||
|  |   t.equal(typeof arrayNoMeta, 'string') | ||
|  |   t.equal(arrayNoMeta, arrayNoMetaExpected) | ||
|  | }) | ||
|  | 
 | ||
|  | test('pretty print includeMeta - buildPrettyMeta function', t => { | ||
|  |   t.plan(4) | ||
|  | 
 | ||
|  |   const findMyWay = FindMyWay({ | ||
|  |     buildPrettyMeta: route => { | ||
|  |       // routes from radix tree do not contain a path element
 | ||
|  |       // returns 'no path' to avoid an undefined value
 | ||
|  |       return { metaKey: route.path || 'no path' } | ||
|  |     } | ||
|  |   }) | ||
|  |   const namedFunction = () => {} | ||
|  |   const store = { | ||
|  |     onRequest: [() => {}, namedFunction], | ||
|  |     onTimeout: [() => {}], | ||
|  |     genericMeta: 'meta', | ||
|  |     mixedMeta: ['mixed items', { an: 'object' }], | ||
|  |     objectMeta: { one: '1', two: 2 }, | ||
|  |     functionMeta: namedFunction | ||
|  |   } | ||
|  | 
 | ||
|  |   store[Symbol('symbolKey')] = Symbol('symbolValue') | ||
|  | 
 | ||
|  |   findMyWay.on('GET', '/test', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test', { constraints: { host: 'auth.fastify.io' } }, () => {}, store) | ||
|  |   findMyWay.on('GET', '/test/:hello', () => {}, store) | ||
|  |   findMyWay.on('PUT', '/test/:hello', () => {}, store) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '1.1.2' } }, () => {}) | ||
|  |   findMyWay.on('GET', '/test/:hello', { constraints: { version: '2.0.0' } }, () => {}) | ||
|  | 
 | ||
|  |   const arrayTree = findMyWay.prettyPrint({ commonPrefix: false, includeMeta: true }) | ||
|  |   const arrayExpected = `└── / (-)
 | ||
|  |     └── test (GET) | ||
|  |         • (metaKey) "/test" | ||
|  |         test (GET) {"host":"auth.fastify.io"} | ||
|  |         • (metaKey) "/test" | ||
|  |         └── /:hello (GET, PUT) | ||
|  |             • (metaKey) "/test/:hello" | ||
|  |             /:hello (GET) {"version":"1.1.2"} | ||
|  |             • (metaKey) "/test/:hello" | ||
|  |             /:hello (GET) {"version":"2.0.0"} | ||
|  |             • (metaKey) "/test/:hello" | ||
|  | `
 | ||
|  |   const radixTree = findMyWay.prettyPrint({ includeMeta: true }) | ||
|  |   const radixExpected = `└── /test (GET)
 | ||
|  |     • (metaKey) "no path" | ||
|  |     /test (GET) {"host":"auth.fastify.io"} | ||
|  |     • (metaKey) "no path" | ||
|  |     └── / | ||
|  |         └── :hello (GET) | ||
|  |             • (metaKey) "no path" | ||
|  |             :hello (GET) {"version":"1.1.2"} | ||
|  |             • (metaKey) "no path" | ||
|  |             :hello (GET) {"version":"2.0.0"} | ||
|  |             • (metaKey) "no path" | ||
|  |             :hello (PUT) | ||
|  |             • (metaKey) "no path" | ||
|  | `
 | ||
|  |   t.equal(typeof arrayTree, 'string') | ||
|  |   t.equal(arrayTree, arrayExpected) | ||
|  | 
 | ||
|  |   t.equal(typeof radixTree, 'string') | ||
|  |   t.equal(radixTree, radixExpected) | ||
|  | }) |