g1t/apps/web/app/lib/mention.test.ts

28 lines1,037 bytesCodeBlame
1import assert from "node:assert/strict";
2import { test } from "node:test";
3
4import { partialMention } from "./mention.ts";
5
6test("an @ that could become @g1t is offered", () => {
7 assert.equal(partialMention("@", 1), 0);
8 assert.equal(partialMention("thanks @g1", 10), 7);
9 assert.equal(partialMention("(@G1", 4), 1);
10 assert.equal(partialMention("line\n@g", 7), 5);
11});
12
13test("anything else is not", () => {
14 // Already complete.
15 assert.equal(partialMention("@g1t", 4), null);
16 assert.equal(partialMention("@G1T", 4), null);
17 // Longer names that start with it are other names.
18 assert.equal(partialMention("@g1t-agent", 10), null);
19 assert.equal(partialMention("@g1t-a", 6), null);
20 assert.equal(partialMention("@g1t/g1t", 8), null);
21 assert.equal(partialMention("@g1tx", 5), null);
22 // Another name.
23 assert.equal(partialMention("@ana", 4), null);
24 // An email address.
25 assert.equal(partialMention("me@g1", 5), null);
26 // The caret is not at the end of it.
27 assert.equal(partialMention("@g1 later", 9), null);
28});