feat: migrate to GramJS with TS
This commit is contained in:
58
tests/keywords.spec.ts
Normal file
58
tests/keywords.spec.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
|
||||
import { afterAll, beforeAll, describe, expect, it } from "vitest";
|
||||
|
||||
import { KeywordStore } from "../src/keywords.js";
|
||||
|
||||
describe("KeywordStore", () => {
|
||||
const tempDir = mkdtempSync(join(tmpdir(), "keywords-test-"));
|
||||
const keywordsFile = join(tempDir, "keywords.yaml");
|
||||
|
||||
beforeAll(() => {
|
||||
writeFileSync(
|
||||
keywordsFile,
|
||||
[
|
||||
"keywords:",
|
||||
" - name: promo",
|
||||
" patterns:",
|
||||
' - "推广"',
|
||||
" regex: false",
|
||||
" - name: regex",
|
||||
" patterns:",
|
||||
' - "(?i)验证码"',
|
||||
" regex: true",
|
||||
].join("\n"),
|
||||
"utf-8",
|
||||
);
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
rmSync(tempDir, { recursive: true, force: true });
|
||||
});
|
||||
|
||||
it("匹配子串与正则,并在文件更新后热加载", async () => {
|
||||
const store = new KeywordStore(keywordsFile);
|
||||
const firstHits = store.match("这是一个推广内容");
|
||||
expect(firstHits.some((hit) => hit.keyword === "promo")).toBe(true);
|
||||
|
||||
const regexHits = store.match("验证码123");
|
||||
expect(regexHits.some((hit) => hit.keyword === "regex")).toBe(true);
|
||||
|
||||
await new Promise((resolve) => setTimeout(resolve, 20));
|
||||
writeFileSync(
|
||||
keywordsFile,
|
||||
[
|
||||
"keywords:",
|
||||
" - name: new",
|
||||
" patterns:",
|
||||
' - "新品"',
|
||||
].join("\n"),
|
||||
"utf-8",
|
||||
);
|
||||
|
||||
const updated = store.match("这是一条新品");
|
||||
expect(updated.some((hit) => hit.keyword === "new")).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user