-
Notifications
You must be signed in to change notification settings - Fork 20
/
attribute_directive_autofocus.spec.ts
49 lines (42 loc) · 1.31 KB
/
attribute_directive_autofocus.spec.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { useResetDOM, useDOMElement, useIVI, useHTML, useTest } from "ivi-jest";
import { Op } from "ivi";
useResetDOM();
const root = useDOMElement();
const ivi = useIVI();
const h = useHTML();
const t = useTest();
const input = (value: boolean, className?: string) => h.input(className, { autofocus: ivi.AUTOFOCUS(value) });
const r = (op: Op) => t.render(op, root()).domNode;
describe("attribute directive AUTOFOCUS", () => {
describe("mount", () => {
test("true", () => {
const n = r(input(true));
expect(document.activeElement).toBe(n);
});
test("false", () => {
const n = r(input(false));
expect(document.activeElement).not.toBe(n);
});
test("two focused elements", () => {
r([input(true, "focused"), input(true)]);
expect(document.activeElement).toBe(root().querySelector(".focused"));
});
});
describe("update", () => {
test("undefined to true", () => {
r(h.input());
const n = r(input(true));
expect(document.activeElement).toBe(n);
});
test("false to true", () => {
r(input(false));
const n = r(input(true));
expect(document.activeElement).not.toBe(n);
});
test("true to false", () => {
r(input(true));
const n = r(input(false));
expect(document.activeElement).toBe(n);
});
});
});