Files
simple-mail-cleaner/backend/node_modules/find-my-way/test/has-route.test.js
2026-01-22 15:49:12 +01:00

220 lines
5.2 KiB
JavaScript

'use strict'
const t = require('tap')
const test = t.test
const rfdc = require('rfdc')({ proto: true })
const FindMyWay = require('..')
function equalRouters (t, router1, router2) {
t.strictSame(router1._opts, router2._opts)
t.same(router1.routes, router2.routes)
t.same(router1.trees, router2.trees)
t.strictSame(
router1.constrainer.strategies,
router2.constrainer.strategies
)
t.strictSame(
router1.constrainer.strategiesInUse,
router2.constrainer.strategiesInUse
)
t.strictSame(
router1.constrainer.asyncStrategiesInUse,
router2.constrainer.asyncStrategiesInUse
)
}
test('hasRoute returns false if there is no routes', t => {
t.plan(7)
const findMyWay = FindMyWay()
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/example')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a static route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/example', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/example')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a static route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/example', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/example1')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a parametric route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a parametric route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/foo/:param', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/bar/:param')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a parametric route with static suffix', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param-static', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param-static')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a parametric route with static suffix', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param-static1', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param-static2')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true even if a param name different', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param1', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param2')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a multi-parametric route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param1-:param2', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param1-:param2')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a multi-parametric route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/foo/:param1-:param2/bar1', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/foo/:param1-:param2/bar2')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a regexp route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:param(^\\d+$)', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:param(^\\d+$)')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a regexp route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/:file(^\\S+).png', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/:file(^\\D+).png')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns true for a wildcard route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/example/*', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/example/*')
t.equal(hasRoute, true)
equalRouters(t, findMyWay, fundMyWayClone)
})
test('hasRoute returns false for a wildcard route', t => {
t.plan(7)
const findMyWay = FindMyWay()
findMyWay.on('GET', '/foo1/*', () => {})
const fundMyWayClone = rfdc(findMyWay)
const hasRoute = findMyWay.hasRoute('GET', '/foo2/*')
t.equal(hasRoute, false)
equalRouters(t, findMyWay, fundMyWayClone)
})