import { expect, mockfn, test, } from "https://code.thunderk.net/typescript/devtools/raw/1.0.1/testing.ts"; import { processRequest } from "./server.ts"; test("serveBundles standard", async () => { const mock_run = mockfn(() => { return { output: () => Promise.resolve(new TextEncoder().encode("abc")), status: () => Promise.resolve({ code: 0, success: true }), } as any; }); const response = await processRequest( { url: "/greatlib/1.0.0/reader/" } as any, mock_run, ); expect(response).toEqual({ body: new TextEncoder().encode("abc") }); expect(mock_run).toHaveBeenCalledTimes(1); expect(mock_run).toHaveBeenCalledWith({ cmd: [ "deno", "bundle", "https://code.thunderk.net/typescript/greatlib/raw/1.0.0/reader.ts", ], stdout: "piped", }); }); test("serveBundles bad path", async () => { const mock_run = mockfn(() => { return { output: () => Promise.resolve(new TextEncoder().encode("abc")), status: () => Promise.resolve({ code: 0, success: true }), } as any; }); const response = await processRequest( { url: "/greatlib/1.0.0/reader{}/" } as any, mock_run, ); expect(response).toEqual( { status: 400, body: 'console.error("bundler error - Invalid path https://code.thunderk.net/typescript/greatlib/raw/1.0.0/reader{}.ts");', }, ); expect(mock_run).toHaveBeenCalledTimes(0); }); test("serveBundles bundle fail", async () => { const mock_run = mockfn(() => { return { output: () => Promise.resolve(undefined), status: () => Promise.resolve({ code: 1, success: false }), } as any; }); const response = await processRequest( { url: "/great_lib/1.0.0-dev1/reader/" } as any, mock_run, ); expect(response).toEqual( { status: 500, body: 'console.error("bundler error - Failed to bundle https://code.thunderk.net/typescript/great_lib/raw/1.0.0-dev1/reader.ts");', }, ); });