UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

121 lines (114 loc) 6.14 kB
import { describe, it, expect } from 'vitest' import { matchDynamicName, matchDeepDynamicRouteName, getNameFromFilePath, matchGroupName, stripGroupSegmentsFromPath, matchArrayGroupName, } from './matchers' describe(stripGroupSegmentsFromPath, () => { it(`strips group segments, preserving initial slash`, () => { expect(stripGroupSegmentsFromPath('/[[...foobar]]/(foo)/bar/[bax]/(other)')).toBe( '/[[...foobar]]/bar/[bax]' ) expect(stripGroupSegmentsFromPath('(foo)/(bar)')).toBe('') }) }) describe(matchGroupName, () => { it(`matches`, () => { expect(matchGroupName('[[...foobar]]')).toEqual(undefined) expect(matchGroupName('[[foobar]]')).toEqual(undefined) expect(matchGroupName('[...foobar]')).toEqual(undefined) expect(matchGroupName('[foobar]')).toEqual(undefined) expect(matchGroupName('(foobar)')).toEqual('foobar') expect(matchGroupName('(foo,bar)')).toEqual('foo,bar') expect(matchGroupName('((foobar))')).toEqual('(foobar)') expect(matchGroupName('(...foobar)')).toEqual('...foobar') expect(matchGroupName('foobar')).toEqual(undefined) expect(matchGroupName('leading/foobar')).toEqual(undefined) expect(matchGroupName('leading/(foobar)')).toEqual('foobar') expect(matchGroupName('leading/((foobar))')).toEqual('(foobar)') expect(matchGroupName('leading/(...foobar)')).toEqual('...foobar') expect(matchGroupName('leading/(foo,bar)')).toEqual('foo,bar') expect(matchGroupName('leading/foobar/trailing')).toEqual(undefined) expect(matchGroupName('leading/(foobar)/trailing')).toEqual('foobar') expect(matchGroupName('leading/((foobar))/trailing')).toEqual('(foobar)') expect(matchGroupName('leading/(...foobar)/trailing')).toEqual('...foobar') expect(matchGroupName('leading/(foo,bar)/trailing)')).toEqual('foo,bar') expect(matchGroupName('leading/(foo,bar)/(fruit,apple)')).toEqual('foo,bar') }) }) describe(matchDynamicName, () => { it(`matches`, () => { expect(matchDynamicName('[[...foobar]]')).toEqual(undefined) expect(matchDynamicName('[[foobar]]')).toEqual(undefined) expect(matchDynamicName('[...foobar]')).toEqual(undefined) expect(matchDynamicName('[foobar]')).toEqual('foobar') expect(matchDynamicName('foobar')).toEqual(undefined) }) }) describe(matchDeepDynamicRouteName, () => { it(`matches`, () => { expect(matchDeepDynamicRouteName('[[...foobar]]')).toEqual(undefined) expect(matchDeepDynamicRouteName('[[foobar]]')).toEqual(undefined) expect(matchDeepDynamicRouteName('[...foobar]')).toEqual('foobar') expect(matchDeepDynamicRouteName('[foobar]')).toEqual(undefined) expect(matchDeepDynamicRouteName('foobar')).toEqual(undefined) }) }) describe(getNameFromFilePath, () => { it(`should return the name of the file`, () => { expect(getNameFromFilePath('./pages/home.tsx')).toBe('pages/home') expect(getNameFromFilePath('../pages/home.js')).toBe('pages/home') expect(getNameFromFilePath('./(home).jsx')).toBe('(home)') expect(getNameFromFilePath('../../../(pages)/[any]/[...home].ts')).toBe( '(pages)/[any]/[...home]' ) }) }) describe(matchArrayGroupName, () => { it(`should not match routes without groups`, () => { expect(matchArrayGroupName('[[...foobar]]')).toEqual(undefined) expect(matchArrayGroupName('[[foobar]]')).toEqual(undefined) expect(matchArrayGroupName('[...foobar]')).toEqual(undefined) expect(matchArrayGroupName('[foobar]')).toEqual(undefined) expect(matchArrayGroupName('foobar')).toEqual(undefined) expect(matchArrayGroupName('leading/foobar')).toEqual(undefined) expect(matchArrayGroupName('leading/foobar/trailing')).toEqual(undefined) }) it(`should not match routes with a single group`, () => { expect(matchArrayGroupName('(foobar)')).toEqual(undefined) expect(matchArrayGroupName('((foobar))')).toEqual(undefined) expect(matchArrayGroupName('(...foobar)')).toEqual(undefined) expect(matchArrayGroupName('leading/(foobar)')).toEqual(undefined) expect(matchArrayGroupName('leading/((foobar))')).toEqual(undefined) expect(matchArrayGroupName('leading/(...foobar)')).toEqual(undefined) expect(matchArrayGroupName('leading/(foobar)/trailing')).toEqual(undefined) expect(matchArrayGroupName('leading/((foobar))/trailing')).toEqual(undefined) expect(matchArrayGroupName('leading/(...foobar)/trailing')).toEqual(undefined) expect(matchArrayGroupName('(leading)/foobar')).toEqual(undefined) expect(matchArrayGroupName('(leading)/(foobar)')).toEqual(undefined) expect(matchArrayGroupName('(leading)/((foobar))')).toEqual(undefined) expect(matchArrayGroupName('(leading)/(...foobar)')).toEqual(undefined) expect(matchArrayGroupName('(leading)/foobar/trailing')).toEqual(undefined) expect(matchArrayGroupName('(leading)/(foobar)/trailing')).toEqual(undefined) expect(matchArrayGroupName('(leading)/((foobar))/trailing')).toEqual(undefined) expect(matchArrayGroupName('(leading)/(...foobar)/trailing')).toEqual(undefined) }) it.skip(`should match routes with array group syntax`, () => { expect(matchArrayGroupName('(foo,bar)')).toEqual('foo,bar') expect(matchArrayGroupName('leading/(foo,bar)')).toEqual('foo,bar') expect(matchArrayGroupName('leading/(foo,bar)/trailing)')).toEqual('foo,bar') expect(matchArrayGroupName('leading/((foo),(bar))/trailing)')).toEqual('(foo),(bar)') expect(matchArrayGroupName('leading/(foo,bar)/(fruit,apple)')).toEqual('foo,bar') expect(matchArrayGroupName('(leading)/(foo,bar)')).toEqual('foo,bar') expect(matchArrayGroupName('(leading)/(foo,bar)/trailing)')).toEqual('foo,bar') expect(matchArrayGroupName('(leading)/((foo),(bar))/trailing)')).toEqual('(foo),(bar)') }) it.skip(`should only match the first group with array group syntax`, () => { expect(matchArrayGroupName('(leading)/(foo,bar)/(fruit,apple)')).toEqual('foo,bar') expect(matchArrayGroupName('(leading)/((foo),bar)/(fruit,apple)')).toEqual('(foo),bar') expect(matchArrayGroupName('(leading)/(foo,bar)/((fruit),apple)')).toEqual('foo,bar') }) })