import { describe, expect, it } from "vitest"; import { detectComposerTrigger, replaceTextRange } from "./composer-logic"; describe("detectComposerTrigger", () => { it("detects @path trigger at cursor", () => { const text = "Please check @src/com"; const trigger = detectComposerTrigger(text, text.length); expect(trigger).toEqual({ kind: "path", query: "src/com", rangeStart: "Please check ".length, rangeEnd: text.length, }); }); it("detects slash command token while typing command name", () => { const text = "/mo"; const trigger = detectComposerTrigger(text, text.length); expect(trigger).toEqual({ kind: "slash-command", query: "mo", rangeStart: 0, rangeEnd: text.length, }); }); it("detects slash model query after /model", () => { const text = "/model spark"; const trigger = detectComposerTrigger(text, text.length); expect(trigger).toEqual({ kind: "slash-model", query: "spark", rangeStart: 0, rangeEnd: text.length, }); });}); describe("replaceTextRange", () => { it("replaces a text range and returns new cursor", () => { const replaced = replaceTextRange("hello @src", 6, 10, ""); expect(replaced).toEqual({ text: "hello ", cursor: 6, }); });});
import { describe, expect, it } from "vitest";
import { detectComposerTrigger, replaceTextRange } from "./composer-logic";
describe("detectComposerTrigger", () => {
it("detects @path trigger at cursor", () => {
const text = "Please check @src/com";
const trigger = detectComposerTrigger(text, text.length);
expect(trigger).toEqual({
kind: "path",
query: "src/com",
rangeStart: "Please check ".length,
rangeEnd: text.length,
});
});
it("detects slash command token while typing command name", () => {
const text = "/mo";
const trigger = detectComposerTrigger(text, text.length);
expect(trigger).toEqual({
kind: "slash-command",
query: "mo",
rangeStart: 0,
rangeEnd: text.length,
});
});
it("detects slash model query after /model", () => {
const text = "/model spark";
const trigger = detectComposerTrigger(text, text.length);
expect(trigger).toEqual({
kind: "slash-model",
query: "spark",
rangeStart: 0,
rangeEnd: text.length,
});
});
});
describe("replaceTextRange", () => {
it("replaces a text range and returns new cursor", () => {
const replaced = replaceTextRange("hello @src", 6, 10, "");
expect(replaced).toEqual({
text: "hello ",
cursor: 6,
});
});
});