UNPKG

relysjs

Version:

Reactive Web app server focusing on MPAs with a simple server route & browser build api...uses Bunjs, Elysia, ESBuild, rmemo, & ctx-core

89 lines (88 loc) 3.4 kB
import { app_ctx, middleware_ctx__new } from 'rebuildjs/server' import { test } from 'uvu' import { equal } from 'uvu/assert' import { elysia_context_, type elysia_context_T } from '../elysiajs/index.js' import { html_route_, request_ctx__ensure } from './index.js' test.after.each(()=>{ app_ctx.s.app.clear() }) test('html_route_|string', async ()=>{ const middlelware_ctx = middleware_ctx__new() const html = `<!DOCTYPE html><html><head></head><body><div>Test</div></body></html>` const html_route = html_route_(middlelware_ctx, ()=> html) const request = new Request('http://localhost:3000') const response = await html_route({ request, store: {} }) equal(html, await response.text()) }) test('html_route_|toString', async ()=>{ const middlelware_ctx = middleware_ctx__new() const html = `<!DOCTYPE html><html><head></head><body><div>Test</div></body></html>` const html_route = html_route_(middlelware_ctx, ()=>( { toString: ()=>html })) const request = new Request('http://localhost:3000') const response = await html_route({ request, store: {} }) equal(await response.text(), html) }) test('html_route_|ReadableStream|string', async ()=>{ const middlelware_ctx = middleware_ctx__new() const html = `<!DOCTYPE html><html><head></head><body><div>Test</div></body></html>` const html_route = html_route_(middlelware_ctx, ()=> new ReadableStream({ start(controller) { let first = true for (const chunk of html.split('>')) { if (!first) controller.enqueue('>') first = false if (chunk != null) controller.enqueue(chunk) } controller.close() } })) const request = new Request('http://localhost:3000') const response = await html_route({ request, store: {} }) equal(await response.text(), html) }) test('html_route_|response_init|all', async ()=>{ const middlelware_ctx = middleware_ctx__new() const html = `<!DOCTYPE html><html><head></head><body><div>Test</div></body></html>` const html_route = html_route_(middlelware_ctx, ()=>html, { status: 403, statusText: 'Forbidden', headers: { 'Content-Type': 'application/json', 'FOO': 'BAR', } }) const request = new Request('http://localhost:3000') const response = await html_route({ request, store: {} }) equal(response.status, 403) equal(response.statusText, 'Forbidden') equal(response.headers.get('Content-Type'), 'text/html;charset=UTF-8') equal(response.headers.get('FOO'), 'BAR') }) test('html_route_|response_init|addional headers', async ()=>{ const middlelware_ctx = middleware_ctx__new() const html = `<!DOCTYPE html><html><head></head><body><div>Test</div></body></html>` const html_route = html_route_(middlelware_ctx, ()=>html, { headers: { 'FOO': 'BAR' } }) const request = new Request('http://localhost:3000') const response = await html_route({ request, store: {} }) equal(response.status, 200) equal(response.statusText, '') equal(response.headers.get('Content-Type'), 'text/html;charset=UTF-8') equal(response.headers.get('FOO'), 'BAR') }) test('request_ctx__ensure', ()=>{ const middlelware_ctx = middleware_ctx__new() const request = new Request('http://localhost:3000') const elysia_context = { request, store: {} } as elysia_context_T const request_ctx = request_ctx__ensure(middlelware_ctx, elysia_context) equal(elysia_context.request_ctx, request_ctx) equal(elysia_context_(request_ctx), elysia_context) }) test.run()