metatron-open-seo/src/server/features/ai-search/targetDetection.test.ts
2026-05-06 12:52:05 -04:00

49 lines
1.3 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { detectTarget } from "./targetDetection";
describe("detectTarget", () => {
it.each([
["example.com", "example.com"],
["https://example.com", "example.com"],
["https://www.example.com/features", "example.com"],
["WWW.Example.COM", "example.com"],
["sub.example.com", "sub.example.com"],
])("treats %s as a domain", (input, expected) => {
expect(detectTarget(input)).toEqual({ type: "domain", value: expected });
});
it.each([
"Example Brand",
"best ai video clipper",
"OpenAI",
"GPT-5",
"ChatGPT pricing",
])("treats '%s' as a keyword", (input) => {
expect(detectTarget(input)).toEqual({
type: "keyword",
value: input.trim(),
});
});
it("falls back to keyword when input has spaces but contains a dot", () => {
expect(detectTarget("Visit example.com today")).toEqual({
type: "keyword",
value: "Visit example.com today",
});
});
it("falls back to keyword when domain normalization throws", () => {
expect(detectTarget("not a real domain.")).toEqual({
type: "keyword",
value: "not a real domain.",
});
});
it("trims whitespace before classification", () => {
expect(detectTarget(" example.com ")).toEqual({
type: "domain",
value: "example.com",
});
});
});