deno.land / x / lume@v2.1.4 / tests / utils.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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import { assertEquals as equals } from "../deps/assert.ts";import { merge } from "../core/utils/object.ts";import { isPlainObject } from "../core/utils/object.ts";import { sha1 } from "../core/utils/digest.ts";import { readDenoConfig } from "../core/utils/deno_config.ts";import { documentToString, stringToDocument } from "../core/utils/dom.ts";import { getPath } from "./utils.ts";import { React } from "../deps/react.ts";
Deno.test("merge options", () => { interface Options { foo: string; foo2?: string; }
const defaults: Options = { foo: "bar", }; const user: Partial<Options> = { foo2: "bar2", }; const expected: Options = { foo: "bar", foo2: "bar2", };
equals(expected, merge(defaults, user));});
Deno.test("merge inner options", () => { interface Options { foo: string; foo2: SubOptions; }
interface SubOptions { bar1: string; bar2?: string; bar3?: string; }
const defaults: Options = { foo: "bar", foo2: { bar1: "bar1", bar2: "bar2", }, }; const user: Partial<Options> = { foo: "new bar", foo2: { bar1: "new bar1", bar3: "bar3", }, }; const expected = { foo: "new bar", foo2: { bar1: "new bar1", bar2: "bar2", bar3: "bar3", }, };
equals(expected, merge(defaults, user));});
Deno.test("isPlainObject", () => { equals(isPlainObject({}), true); equals(isPlainObject(new URL("http://localhost")), false); equals(isPlainObject([]), false); equals(isPlainObject([{ foo: "bar" }]), false); equals(isPlainObject(new Map()), false); equals(isPlainObject(new Set()), false); equals(isPlainObject(Symbol.for("foo")), false); equals(isPlainObject(new class {}()), false); equals(isPlainObject(new Object()), true); equals(isPlainObject(React.createElement("div")), false);});
Deno.test("sha1 function", async () => { const data = "Hello World"; const dataUint8 = new TextEncoder().encode(data); const expected = "\nMU��x�\x02/�p\x19w��@��";
equals(await sha1(data), expected); equals(await sha1(dataUint8), expected);});
Deno.test("load deno.jsonc", async () => { Deno.chdir(getPath("assets")); const config = await readDenoConfig();
equals(config?.config?.tasks, { foo: "echo bar" }); equals(config?.file, "deno.jsonc"); equals(config?.importMap?.imports["std/"], "https://deno.land/std@0.121.0/");});
Deno.test("documentToString function should add doctype, if missing", () => { const documentWithoutDoctype = stringToDocument( `<html><head></head><body></body></html>`, ); const documentWithDoctype = stringToDocument( `<!DOCTYPE html><html><head></head><body></body></html>`, );
const expected = `<!DOCTYPE html><html><head></head><body></body></html>`;
equals(documentToString(documentWithoutDoctype), expected); equals(documentToString(documentWithDoctype), expected);});
lume

Version Info

Tagged at
7 months ago