bundler/server.test.ts

74 lines
1.9 KiB
TypeScript

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");',
},
);
});