mirror of
https://github.com/zoriya/elysia.git
synced 2026-08-15 18:44:25 +00:00
126 lines
2.8 KiB
TypeScript
126 lines
2.8 KiB
TypeScript
import { Elysia, t } from '../../src'
|
|
|
|
import { describe, expect, it } from 'bun:test'
|
|
|
|
describe('handle path with spaces', () => {
|
|
it('AOT on: static path', async () => {
|
|
const PATH = '/y a y'
|
|
|
|
const app = new Elysia().get(
|
|
PATH,
|
|
() => 'result from a path wirh spaces'
|
|
)
|
|
|
|
const response = await app.handle(
|
|
new Request(`http://localhost${PATH}`)
|
|
)
|
|
|
|
expect(response.status).toBe(200)
|
|
})
|
|
|
|
it('AOT off: static path', async () => {
|
|
const PATH = '/y a y'
|
|
|
|
const app = new Elysia({ aot: false }).get(
|
|
PATH,
|
|
() => 'result from a path wirh spaces'
|
|
)
|
|
|
|
const response = await app.handle(
|
|
new Request(`http://localhost${PATH}`)
|
|
)
|
|
|
|
expect(response.status).toBe(200)
|
|
})
|
|
|
|
it('AOT on: dynamic path', async () => {
|
|
const app = new Elysia().get('/y a y/:id', ({ params: { id } }) => id)
|
|
|
|
const response = await app.handle(
|
|
new Request(`http://localhost/y a y/1`)
|
|
)
|
|
|
|
expect(response.status).toBe(200)
|
|
expect(await response.text()).toBe('1')
|
|
})
|
|
|
|
it('AOT off: dynamic path', async () => {
|
|
const app = new Elysia({ aot: false }).get(
|
|
'/y a y/:id',
|
|
({ params: { id } }) => id
|
|
)
|
|
|
|
const response = await app.handle(
|
|
new Request(`http://localhost/y a y/1`)
|
|
)
|
|
|
|
expect(response.status).toBe(200)
|
|
expect(await response.text()).toBe('1')
|
|
})
|
|
|
|
it('AOT on: optional dynamic path', async () => {
|
|
const app = new Elysia().get(
|
|
'/y a y/:id?',
|
|
({ params: { id } }) => id ?? 0
|
|
)
|
|
|
|
const response = await Promise.all(
|
|
[
|
|
new Request(`http://localhost/y a y`),
|
|
new Request(`http://localhost/y a y/1`)
|
|
].map(app.handle)
|
|
)
|
|
|
|
expect(response[0].status).toBe(200)
|
|
expect(response[1].status).toBe(200)
|
|
|
|
const value = await Promise.all(response.map((x) => x.text()))
|
|
|
|
expect(value[0]).toBe('0')
|
|
expect(value[1]).toBe('1')
|
|
})
|
|
|
|
it('AOT off: optional dynamic path', async () => {
|
|
const app = new Elysia({ aot: false }).get(
|
|
'/y a y/:id?',
|
|
({ params: { id } }) => id ?? 0
|
|
)
|
|
|
|
const response = await Promise.all(
|
|
[
|
|
new Request(`http://localhost/y a y`),
|
|
new Request(`http://localhost/y a y/1`)
|
|
].map(app.handle)
|
|
)
|
|
|
|
expect(response[0].status).toBe(200)
|
|
expect(response[1].status).toBe(200)
|
|
|
|
const value = await Promise.all(response.map((x) => x.text()))
|
|
|
|
expect(value[0]).toBe('0')
|
|
expect(value[1]).toBe('1')
|
|
})
|
|
|
|
it('handle optional path parameters after required', async () => {
|
|
const app = new Elysia().get(
|
|
'/api/:required/:optional?',
|
|
({ params }) => params.required
|
|
)
|
|
|
|
const required = await app.handle(
|
|
new Request('http://localhost/api/yay')
|
|
)
|
|
|
|
expect(required.status).toBe(200)
|
|
expect(await required.text()).toEqual('yay')
|
|
|
|
const optional = await app.handle(
|
|
new Request('http://localhost/api/yay/ok')
|
|
)
|
|
|
|
expect(optional.status).toBe(200)
|
|
expect(await optional.text()).toEqual('yay')
|
|
})
|
|
})
|