diff --git a/src/__tests__/RouteBuilder.test.ts b/src/__tests__/RouteBuilder.test.ts index afb5acd..d54fdbe 100644 --- a/src/__tests__/RouteBuilder.test.ts +++ b/src/__tests__/RouteBuilder.test.ts @@ -10,11 +10,24 @@ import type { Handler, Middleware } from '../Types/mod.ts'; // Dummy objects // deno-lint-ignore require-await -const dummyHandler: Handler = async () => new Response('ok'); +const dummyHandler: Handler = async (_) => new Response('ok'); +// deno-lint-ignore require-await +const wrongHandler: Handler = async () => new Response('ok'); // Wrong signature, no ctx const dummyMiddleware: Middleware = async (_, next) => await next(); +// deno-lint-ignore require-await +const wrongMiddleware: Middleware = async () => new Response('ok'); // Wrong signature, no ctx, next const dummyDef: IRouteDefinition = { method: 'GET', path: '/hello' }; const dummyMatcher = () => ({ params: {} }); +Deno.test('middleware: throws if middleware signature is wrong', () => { + const builder = new RouteBuilder(() => {}, dummyDef); + assertThrows( + () => builder.middleware(wrongMiddleware).handle(dummyHandler), + TypeError, + 'Middleware at index 0 is not a valid function.', + ); +}); + Deno.test('middleware: single middleware is registered correctly', () => { let registered: IInternalRoute | null = null as IInternalRoute | null; @@ -51,6 +64,15 @@ Deno.test('middleware: preserves order of middleware', () => { assertEquals(result!.middlewares, [mw1, mw2]); }); +Deno.test('handle: throws if handler signature is wrong', () => { + const builder = new RouteBuilder(() => {}, dummyDef); + assertThrows( + () => builder.handle(wrongHandler), + TypeError, + 'Route handler must be a function returning a Promise.', + ); +}); + Deno.test('handle: uppercases method', () => { let result: IInternalRoute | null = null as IInternalRoute | null;