-
-
Notifications
You must be signed in to change notification settings - Fork 75
/
slugify_urls.test.ts
69 lines (55 loc) · 1.78 KB
/
slugify_urls.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
import { assertStrictEquals as equals } from "../deps/assert.ts";
import { assertSiteSnapshot, build, getSite } from "./utils.ts";
import slugifyUrls from "../plugins/slugify_urls.ts";
import createSlugifier from "../core/slugifier.ts";
Deno.test("slugify_urls plugin", async (t) => {
const site = getSite({
src: "slugify_urls",
});
site.use(slugifyUrls());
site.copy([".css"]);
site.copy("_headers");
await build(site);
await assertSiteSnapshot(t, site);
});
Deno.test("slugify_urls plugin (static files)", async (t) => {
const site = getSite({
src: "slugify_urls",
});
site.use(slugifyUrls({
extensions: "*",
}));
site.copy([".css"]);
site.copy("_headers");
await build(site);
await assertSiteSnapshot(t, site);
});
Deno.test("slugify clean urls", () => {
const slugify = createSlugifier();
equals(slugify("Hello / World"), "hello/world");
equals(slugify("hello_/_world"), "hello/world");
equals(slugify("200,000*7"), "200-000-7");
equals(slugify("img/Image 2 .png"), "img/image-2.png");
});
Deno.test("slugify replacement chars", () => {
const slugify = createSlugifier();
equals(slugify("Ð"), "d");
equals(slugify("ð"), "d");
equals(slugify("№"), "no");
});
Deno.test("slugify forbidden characters and words", () => {
const slugify = createSlugifier({
stopWords: ["or", "and", "the"],
});
equals(slugify(""), "");
equals(slugify("the man or the woman"), "man-woman");
equals(slugify(" forks and knives "), "forks-knives");
equals(slugify("went down the road"), "went-down-road");
});
Deno.test("slugify support unicode characters", () => {
const slugify = createSlugifier();
equals(
slugify("Lume 支持中文,中文标点。?、【】{}!¥()"),
"lume-zhichizhongwen-zhongwenbiaodian",
);
});