fresh
fresh copied to clipboard
Add a function to create handler.
I cut out the function that gets an hundler from fresh.
The purpose is to prepare you to create tests for your application. The introduction of this feature does not affect fresh.
Example:
/// <reference no-default-lib="true" />
/// <reference lib="dom" />
/// <reference lib="dom.asynciterable" />
/// <reference lib="deno.ns" />
/// <reference lib="deno.unstable" />
import { createHandler } from "$fresh/server.ts";
import manifest from "./fresh.gen.ts";
import { superdeno } from "https://deno.land/x/superdeno/mod.ts";
import { assertEquals } from "https://deno.land/[email protected]/testing/asserts.ts";
import {
type RequestHandlerLike,
} from "https://deno.land/x/superdeno/src/types.ts";
import {
Document,
DOMParser,
} from "https://deno.land/x/deno_dom/deno-dom-wasm.ts";
Deno.test("HTTP assert test.", async (t) => {
await t.step("#1 GET /", async () => {
const handler = await createHandler(manifest) as RequestHandlerLike;
await superdeno(handler)
.get("/")
.expect(200);
});
await t.step("#2 GET /Foo", async () => {
const server = await createHandler(manifest) as RequestHandlerLike;
const r = await superdeno(server)
.get("/Foo")
.expect(200);
const document: Document = new DOMParser().parseFromString(
r.text,
"text/html",
)!;
assertEquals(document.querySelector("div")?.innerText, "Hello Foo");
});
await t.step("#3 GET /Foo/Bar", async () => {
const server = await createHandler(manifest) as RequestHandlerLike;
await superdeno(server)
.get("/Foo/Bar")
.expect(404);
});
});
$ deno test -A main_test.ts
Check file:///usr/src/app/my-project/main_test.ts
running 1 test from ./main_test.ts
HTTP assert test. ...
#1 GET / ... ok (53ms)
#2 GET /Foo ... ok (50ms)
#3 GET /Foo/Bar ... ok (45ms)
HTTP assert test. ... ok (154ms)
ok | 1 passed (3 steps) | 0 failed (300ms)
This was discussed in a separate pull request, but prepared in a separate branch based on @lucacasonato suggestion.
Add a function to get a server class instance.
Thenk you.