router.test.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import { Router } from '../src/router'
  2. import { RouterURL } from '../src/url'
  3. describe('router', () => {
  4. test('match', () => {
  5. const r = new Router()
  6. r.add('/hello')
  7. r.add('/users/add')
  8. r.add('/users/:id(\\d+)')
  9. expect(r.match(new RouterURL('http:/localhost/hello'))).toStrictEqual({})
  10. expect(r.match(new RouterURL('http:/localhost/users/add'))).toStrictEqual({})
  11. expect(r.match(new RouterURL('http:/localhost/users/123'))).toStrictEqual({id: '123'})
  12. expect(r.match(new RouterURL('http:/localhost/xyz'))).toBe(false)
  13. })
  14. test('is, not, notfound', () => {
  15. const r = new Router()
  16. r.add('/hello')
  17. r.add('/users/add')
  18. r.add('/users/:id')
  19. r.add('/users/:id/edit')
  20. let url = new RouterURL('http:/localhost/hello')
  21. expect(r.is(url, '/hello')).toBe(true)
  22. expect(r.is(url, '/xyz')).toBe(false)
  23. expect(r.is(url, '/xyz', '/hello')).toBe(true)
  24. expect(r.not(url, '/hello')).toBe(false)
  25. expect(r.not(url, '/xyz')).toBe(true)
  26. expect(r.not(url, '/xyz', '/hello')).toBe(false)
  27. url = new RouterURL('http:/localhost/users/add')
  28. expect(r.is(url, '/users/add')).toBe(true)
  29. expect(r.not(url, '/users/:id(\\d+)')).toBe(true)
  30. url = new RouterURL('http:/localhost/users/123')
  31. expect(r.not(url, '/users/add')).toBe(true)
  32. expect(r.is(url, '/users/:id(\\d+)')).toBe(true)
  33. expect(r.notfound(new RouterURL('http:/localhost/hello/world'))).toBe(true)
  34. expect(r.notfound(new RouterURL('http:/localhost/hello'))).toBe(false)
  35. url = new RouterURL('http:/localhost/users/123/edit')
  36. expect(r.is(url, '/users/:id(\\d+)/edit')).toBe(true)
  37. })
  38. })