-
Notifications
You must be signed in to change notification settings - Fork 130
/
Copy pathindex.test.ts
35 lines (33 loc) · 1.17 KB
/
index.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { describe, expect, it } from "vitest";
import { createEffect, createRoot } from "solid-js";
import { createEventProps } from "../src/index.js";
describe("event-props", () => {
//# test type errors - run `yarn typecheck to find them`
//- will expect at least 1 argument
//@ts-expect-error
createEventProps();
//- will only accept HTMLElementEvent names
//@ts-expect-error
createEventProps("foobar");
//- will only contain given names in props and store
const [store, props] = createEventProps("focus", "blur");
//@ts-expect-error
store.click;
//@ts-expect-error
props.onclick?.(new MouseEvent("click"));
it("it will support multiple events", () =>
new Promise<void>(resolve =>
createRoot(dispose => {
const [store, props] = createEventProps("keydown", "keyup");
props.onkeydown(new KeyboardEvent("keydown", { key: "A" }));
props.onkeyup(new KeyboardEvent("keyup", { key: "A" }));
const expected = [undefined, "A"];
createEffect(() => {
expect(store.keydown?.key).toBe("A");
expect(store.keyup?.key).toBe("A");
dispose();
resolve();
});
}),
));
});