router-dom
Version:
A lightweight router for everyone
84 lines (78 loc) • 2.51 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Router Tests</title>
<script type="module">
import { hydro, $ } from "hydro-js";
import { runTests } from "@web/test-runner-mocha";
import { expect } from "@esm-bundle/chai";
import Router from "../../dist/router.js";
const sleep = (time) =>
new Promise((resolve) => setTimeout(resolve, time));
runTests(() => {
let router;
beforeEach(async () => {
router = new Router(
[
{
path: "/",
},
],
{
formHandler(res, e) {
window.form = res;
window.formEvent = e;
},
errorHandler(err, e) {
window.err = err;
window.errEvent = e;
},
fetchOptions: { signal: AbortSignal.timeout(1) },
}
);
await sleep(150);
});
describe("router", () => {
it("handles the form submit", async () => {
expect(window.form).to.be.undefined;
expect(window.formEvent).to.be.undefined;
$("#submit").click();
await sleep(50);
expect(window.err).to.not.be.undefined;
expect(window.errEvent).to.not.be.undefined;
});
});
});
</script>
</head>
<body>
<form action="https://httpbin.org/get" method="get">
<label for="name">Enter your name: </label>
<input type="text" name="name" id="name" required value="test" />
<label for="email">Enter your email: </label>
<input
type="email"
name="email"
id="email"
required
value="test@test.com"
/>
<input id="submit" type="submit" value="Subscribe!" />
</form>
<form action="https://httpbin.org/asdasdas" method="get">
<label for="name2">Enter your name: </label>
<input type="text" name="name2" id="name2" required value="test" />
<label for="email2">Enter your email: </label>
<input
type="email"
name="email2"
id="email2"
required
value="test@test.com"
/>
<input id="submit2" type="submit" value="Subscribe!" />
</form>
</body>
</html>