Skip to content
File

Blob: tests/client/components/editor/extensions/emoji.test.ts

typescript30 lines
1import { describe, expect, it } from "vitest";
2import type { EmojiItem } from "@tiptap/extension-emoji";
3import { getEmojiSuggestionItems } from "@/client/components/editor/extensions/emoji";
4 
5const EMOJIS: EmojiItem[] = [
6 { name: "smile", emoji: "๐Ÿ˜„", shortcodes: ["smile"], tags: ["happy"] },
7 { name: "smiley_cat", emoji: "๐Ÿ˜บ", shortcodes: ["smiley_cat"], tags: ["cat", "happy"] },
8 { name: "fire", emoji: "๐Ÿ”ฅ", shortcodes: ["fire"], tags: ["lit", "hot"] },
9 { name: "rocket", emoji: "๐Ÿš€", shortcodes: ["rocket"], tags: ["ship", "launch"] },
10];
11 
12describe("emoji suggestions", () => {
13 it("prefers shortcode prefix matches", () => {
14 expect(getEmojiSuggestionItems(EMOJIS, "sm").map((item) => item.name)).toEqual(["smile", "smiley_cat"]);
15 });
16 
17 it("matches emoji tags when shortcodes do not match", () => {
18 expect(getEmojiSuggestionItems(EMOJIS, "launch").map((item) => item.name)).toEqual(["rocket"]);
19 });
20 
21 it("returns a bounded default list for an empty query", () => {
22 expect(getEmojiSuggestionItems(EMOJIS, "").map((item) => item.name)).toEqual([
23 "smile",
24 "smiley_cat",
25 "fire",
26 "rocket",
27 ]);
28 });
29});