@actuate-media/cms-admin 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/components/comment-side-panel.test.js +93 -0
- package/dist/__tests__/components/comment-side-panel.test.js.map +1 -1
- package/dist/__tests__/components/mentionable-textarea.test.d.ts +2 -0
- package/dist/__tests__/components/mentionable-textarea.test.d.ts.map +1 -0
- package/dist/__tests__/components/mentionable-textarea.test.js +190 -0
- package/dist/__tests__/components/mentionable-textarea.test.js.map +1 -0
- package/dist/__tests__/lib/mention-picker.test.d.ts +2 -0
- package/dist/__tests__/lib/mention-picker.test.d.ts.map +1 -0
- package/dist/__tests__/lib/mention-picker.test.js +122 -0
- package/dist/__tests__/lib/mention-picker.test.js.map +1 -0
- package/dist/actuate-admin.css +1 -1
- package/dist/components/CommentSidePanel.d.ts +9 -1
- package/dist/components/CommentSidePanel.d.ts.map +1 -1
- package/dist/components/CommentSidePanel.js +8 -7
- package/dist/components/CommentSidePanel.js.map +1 -1
- package/dist/components/MentionableTextarea.d.ts +68 -0
- package/dist/components/MentionableTextarea.d.ts.map +1 -0
- package/dist/components/MentionableTextarea.js +181 -0
- package/dist/components/MentionableTextarea.js.map +1 -0
- package/dist/components/NotificationBell.d.ts.map +1 -1
- package/dist/components/NotificationBell.js +32 -11
- package/dist/components/NotificationBell.js.map +1 -1
- package/dist/lib/mention-picker.d.ts +69 -0
- package/dist/lib/mention-picker.d.ts.map +1 -0
- package/dist/lib/mention-picker.js +138 -0
- package/dist/lib/mention-picker.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/components/comment-side-panel.test.tsx +134 -0
- package/src/__tests__/components/mentionable-textarea.test.tsx +226 -0
- package/src/__tests__/lib/mention-picker.test.ts +145 -0
- package/src/components/CommentSidePanel.tsx +37 -14
- package/src/components/MentionableTextarea.tsx +328 -0
- package/src/components/NotificationBell.tsx +31 -11
- package/src/lib/mention-picker.ts +180 -0
|
@@ -288,4 +288,97 @@ describe('CommentSidePanel — reply, edit, resolve, delete', () => {
|
|
|
288
288
|
expect(onActive).toHaveBeenCalledWith('c1');
|
|
289
289
|
});
|
|
290
290
|
});
|
|
291
|
+
// ---------------------------------------------------------------------------
|
|
292
|
+
// Mention picker integration — Phase 7 carry-over
|
|
293
|
+
// ---------------------------------------------------------------------------
|
|
294
|
+
describe('CommentSidePanel — mention picker integration', () => {
|
|
295
|
+
/**
|
|
296
|
+
* Drive a `<textarea>` the same way the picker test does. The
|
|
297
|
+
* comment panel's three composer surfaces (new thread, reply,
|
|
298
|
+
* edit) are all `<MentionableTextarea>` now, so this helper works
|
|
299
|
+
* uniformly across them.
|
|
300
|
+
*/
|
|
301
|
+
async function typeAt(el, value, caret = value.length) {
|
|
302
|
+
await act(async () => {
|
|
303
|
+
el.focus();
|
|
304
|
+
const setter = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value')?.set;
|
|
305
|
+
if (setter)
|
|
306
|
+
setter.call(el, value);
|
|
307
|
+
else
|
|
308
|
+
el.value = value;
|
|
309
|
+
el.setSelectionRange(caret, caret);
|
|
310
|
+
el.dispatchEvent(new Event('input', { bubbles: true }));
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
function fakeMentionSearch() {
|
|
314
|
+
return vi.fn(async (q) => {
|
|
315
|
+
const all = [
|
|
316
|
+
{ id: 'u_alice', name: 'Alice Anderson', email: 'alice@example.com' },
|
|
317
|
+
{ id: 'u_bob', name: 'Bob Brown', email: 'bob@example.com' },
|
|
318
|
+
];
|
|
319
|
+
const ql = q.toLowerCase();
|
|
320
|
+
return all.filter((u) => u.name.toLowerCase().includes(ql) || u.email.toLowerCase().includes(ql));
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
it('opens the mention picker from the new-thread composer and submits @<userId>', async () => {
|
|
324
|
+
const fake = createFakeApi();
|
|
325
|
+
const mentionSearch = fakeMentionSearch();
|
|
326
|
+
render(_jsx(CommentSidePanel, { documentId: "doc-1", currentUserId: "current", api: fake.api, mentionSearch: mentionSearch }));
|
|
327
|
+
await waitFor(() => expect(screen.getByText('No comments yet.')).toBeTruthy());
|
|
328
|
+
const composer = screen.getByTestId('comment-composer');
|
|
329
|
+
await typeAt(composer, '@ali');
|
|
330
|
+
await waitFor(() => expect(screen.getByTestId('comment-composer-picker')).toBeTruthy());
|
|
331
|
+
await act(async () => {
|
|
332
|
+
fireEvent.mouseDown(screen.getByTestId('comment-composer-picker-row-u_alice'));
|
|
333
|
+
});
|
|
334
|
+
expect(composer.value).toBe('@u_alice ');
|
|
335
|
+
// Continue typing then submit — the resulting comment body must
|
|
336
|
+
// carry the `@<userId>` token so `extractMentionedUserIds` picks
|
|
337
|
+
// it up server-side.
|
|
338
|
+
await typeAt(composer, '@u_alice please review');
|
|
339
|
+
await act(async () => {
|
|
340
|
+
fireEvent.click(screen.getByTestId('comment-submit'));
|
|
341
|
+
});
|
|
342
|
+
expect(fake.api.create).toHaveBeenCalledWith(expect.objectContaining({ body: '@u_alice please review' }));
|
|
343
|
+
});
|
|
344
|
+
it('opens the mention picker from a reply input and inserts @<userId>', async () => {
|
|
345
|
+
const fake = createFakeApi();
|
|
346
|
+
fake.rows.push(comment({ id: 'root', body: 'root' }));
|
|
347
|
+
const mentionSearch = fakeMentionSearch();
|
|
348
|
+
render(_jsx(CommentSidePanel, { documentId: "doc-1", currentUserId: "current", api: fake.api, mentionSearch: mentionSearch }));
|
|
349
|
+
await waitFor(() => expect(screen.getByTestId('comment-thread-root')).toBeTruthy());
|
|
350
|
+
const reply = screen.getByTestId('reply-input-root');
|
|
351
|
+
await typeAt(reply, '@bo');
|
|
352
|
+
await waitFor(() => expect(screen.getByTestId('reply-input-root-picker')).toBeTruthy());
|
|
353
|
+
fireEvent.keyDown(reply, { key: 'Enter' });
|
|
354
|
+
await waitFor(() => expect(reply.value).toBe('@u_bob '));
|
|
355
|
+
});
|
|
356
|
+
it('opens the mention picker from the edit-textarea while editing a comment', async () => {
|
|
357
|
+
const fake = createFakeApi();
|
|
358
|
+
fake.rows.push(comment({ id: 'c1', userId: 'current', body: 'before' }));
|
|
359
|
+
const mentionSearch = fakeMentionSearch();
|
|
360
|
+
render(_jsx(CommentSidePanel, { documentId: "doc-1", currentUserId: "current", api: fake.api, mentionSearch: mentionSearch }));
|
|
361
|
+
await waitFor(() => expect(screen.getByTestId('comment-thread-c1')).toBeTruthy());
|
|
362
|
+
fireEvent.click(screen.getByTestId('edit-c1'));
|
|
363
|
+
const edit = screen.getByTestId('edit-textarea-c1');
|
|
364
|
+
await typeAt(edit, '@al');
|
|
365
|
+
await waitFor(() => expect(screen.getByTestId('edit-textarea-c1-picker')).toBeTruthy());
|
|
366
|
+
await act(async () => {
|
|
367
|
+
fireEvent.mouseDown(screen.getByTestId('edit-textarea-c1-picker-row-u_alice'));
|
|
368
|
+
});
|
|
369
|
+
expect(edit.value).toBe('@u_alice ');
|
|
370
|
+
});
|
|
371
|
+
it('escape closes the picker without committing a selection', async () => {
|
|
372
|
+
const fake = createFakeApi();
|
|
373
|
+
const mentionSearch = fakeMentionSearch();
|
|
374
|
+
render(_jsx(CommentSidePanel, { documentId: "doc-1", currentUserId: "current", api: fake.api, mentionSearch: mentionSearch }));
|
|
375
|
+
await waitFor(() => expect(screen.getByText('No comments yet.')).toBeTruthy());
|
|
376
|
+
const composer = screen.getByTestId('comment-composer');
|
|
377
|
+
await typeAt(composer, '@al');
|
|
378
|
+
await waitFor(() => expect(screen.getByTestId('comment-composer-picker')).toBeTruthy());
|
|
379
|
+
fireEvent.keyDown(composer, { key: 'Escape' });
|
|
380
|
+
expect(screen.queryByTestId('comment-composer-picker')).toBeNull();
|
|
381
|
+
expect(composer.value).toBe('@al');
|
|
382
|
+
});
|
|
383
|
+
});
|
|
291
384
|
//# sourceMappingURL=comment-side-panel.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-side-panel.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/comment-side-panel.test.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comment-side-panel.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/comment-side-panel.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentionable-textarea.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/components/mentionable-textarea.test.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// @vitest-environment happy-dom
|
|
3
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react';
|
|
6
|
+
import { MentionableTextarea } from '../../components/MentionableTextarea.js';
|
|
7
|
+
/**
|
|
8
|
+
* Mount the textarea against a state-managing host so we exercise the
|
|
9
|
+
* controlled-value contract. Returning the live `value` lets each
|
|
10
|
+
* test inspect what the parent ends up with after a selection.
|
|
11
|
+
*/
|
|
12
|
+
function Host({ initialValue = '', search, testid = 'ta', }) {
|
|
13
|
+
const [value, setValue] = useState(initialValue);
|
|
14
|
+
return (_jsxs(_Fragment, { children: [_jsx(MentionableTextarea, { value: value, onChange: setValue, search: search, "data-testid": testid }), _jsx("output", { "data-testid": "value", children: value })] }));
|
|
15
|
+
}
|
|
16
|
+
function fakeSearch(rows) {
|
|
17
|
+
return vi.fn(async (q) => {
|
|
18
|
+
const ql = q.toLowerCase();
|
|
19
|
+
return rows.filter((u) => u.name.toLowerCase().includes(ql) || u.email.toLowerCase().includes(ql));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const ROWS = [
|
|
23
|
+
{ id: 'u_alice', name: 'Alice Anderson', email: 'alice@example.com' },
|
|
24
|
+
{ id: 'u_bob', name: 'Bob Brown', email: 'bob@example.com' },
|
|
25
|
+
{ id: 'u_carol', name: 'Carol Chen', email: 'carol@example.com' },
|
|
26
|
+
];
|
|
27
|
+
async function typeAt(testid, value, caret = value.length) {
|
|
28
|
+
const ta = screen.getByTestId(testid);
|
|
29
|
+
await act(async () => {
|
|
30
|
+
// Manually drive the textarea: testing-library's
|
|
31
|
+
// `fireEvent.change` resets `selectionStart` to 0 in happy-dom,
|
|
32
|
+
// which would defeat the mention picker (caret 0 → no mention).
|
|
33
|
+
// We bypass React's value-tracker the same way testing-library
|
|
34
|
+
// does, then set the caret BEFORE dispatching `input` so the
|
|
35
|
+
// React handler sees the correct selection.
|
|
36
|
+
ta.focus();
|
|
37
|
+
const setter = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value')?.set;
|
|
38
|
+
if (setter)
|
|
39
|
+
setter.call(ta, value);
|
|
40
|
+
else
|
|
41
|
+
ta.value = value;
|
|
42
|
+
ta.setSelectionRange(caret, caret);
|
|
43
|
+
ta.dispatchEvent(new Event('input', { bubbles: true }));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
describe('MentionableTextarea — picker dropdown', () => {
|
|
47
|
+
it('does not show the picker before @ is typed', async () => {
|
|
48
|
+
const search = fakeSearch(ROWS);
|
|
49
|
+
render(_jsx(Host, { search: search }));
|
|
50
|
+
await typeAt('ta', 'hello world');
|
|
51
|
+
expect(screen.queryByTestId('ta-picker')).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
it('opens the picker the instant @ is typed and shows the empty state', async () => {
|
|
54
|
+
const search = fakeSearch(ROWS);
|
|
55
|
+
render(_jsx(Host, { search: search }));
|
|
56
|
+
await typeAt('ta', '@');
|
|
57
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker')).toBeTruthy());
|
|
58
|
+
});
|
|
59
|
+
it('populates the dropdown with users that match the query', async () => {
|
|
60
|
+
const search = fakeSearch(ROWS);
|
|
61
|
+
render(_jsx(Host, { search: search }));
|
|
62
|
+
await typeAt('ta', '@ali');
|
|
63
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_alice')).toBeTruthy());
|
|
64
|
+
// Bob/Carol should NOT match `ali`.
|
|
65
|
+
expect(screen.queryByTestId('ta-picker-row-u_bob')).toBeNull();
|
|
66
|
+
});
|
|
67
|
+
it('shows "No matches" when the query has no hits', async () => {
|
|
68
|
+
const search = fakeSearch(ROWS);
|
|
69
|
+
render(_jsx(Host, { search: search }));
|
|
70
|
+
await typeAt('ta', '@zzzz');
|
|
71
|
+
await waitFor(() => expect(screen.getByText(/No matches/i)).toBeTruthy());
|
|
72
|
+
});
|
|
73
|
+
it('closes the picker on Escape without inserting anything', async () => {
|
|
74
|
+
const search = fakeSearch(ROWS);
|
|
75
|
+
render(_jsx(Host, { search: search }));
|
|
76
|
+
await typeAt('ta', '@al');
|
|
77
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker')).toBeTruthy());
|
|
78
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'Escape' });
|
|
79
|
+
expect(screen.queryByTestId('ta-picker')).toBeNull();
|
|
80
|
+
expect(screen.getByTestId('value').textContent).toBe('@al');
|
|
81
|
+
});
|
|
82
|
+
it('inserts @<userId> + trailing space when a row is clicked', async () => {
|
|
83
|
+
const search = fakeSearch(ROWS);
|
|
84
|
+
render(_jsx(Host, { search: search }));
|
|
85
|
+
await typeAt('ta', '@ali');
|
|
86
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_alice')).toBeTruthy());
|
|
87
|
+
await act(async () => {
|
|
88
|
+
// We use mousedown intentionally (the component listens for
|
|
89
|
+
// mousedown to avoid losing focus before commit).
|
|
90
|
+
fireEvent.mouseDown(screen.getByTestId('ta-picker-row-u_alice'));
|
|
91
|
+
});
|
|
92
|
+
expect(screen.getByTestId('value').textContent).toBe('@u_alice ');
|
|
93
|
+
expect(screen.queryByTestId('ta-picker')).toBeNull();
|
|
94
|
+
});
|
|
95
|
+
it('Enter commits the highlighted row', async () => {
|
|
96
|
+
const search = fakeSearch(ROWS);
|
|
97
|
+
render(_jsx(Host, { search: search }));
|
|
98
|
+
await typeAt('ta', '@b');
|
|
99
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_bob')).toBeTruthy());
|
|
100
|
+
await act(async () => {
|
|
101
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'Enter' });
|
|
102
|
+
});
|
|
103
|
+
expect(screen.getByTestId('value').textContent).toBe('@u_bob ');
|
|
104
|
+
});
|
|
105
|
+
it('ArrowDown then Enter commits the second result', async () => {
|
|
106
|
+
const search = fakeSearch(ROWS);
|
|
107
|
+
render(_jsx(Host, { search: search }));
|
|
108
|
+
// Query 'e' hits Alice/Bob/Carol's emails — three matches.
|
|
109
|
+
await typeAt('ta', '@e');
|
|
110
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_alice')).toBeTruthy());
|
|
111
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'ArrowDown' });
|
|
112
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'ArrowDown' });
|
|
113
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'ArrowUp' }); // back to row 2
|
|
114
|
+
await act(async () => {
|
|
115
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'Enter' });
|
|
116
|
+
});
|
|
117
|
+
// Highlight after Down/Down/Up: 0 → 1 → 2 → 1. Row index 1 should
|
|
118
|
+
// be Bob (alphabetised by name? Actually fakeSearch returns in
|
|
119
|
+
// ROWS order — Alice, Bob, Carol). So commit = u_bob.
|
|
120
|
+
expect(screen.getByTestId('value').textContent).toBe('@u_bob ');
|
|
121
|
+
});
|
|
122
|
+
it('keyboard does NOT swallow Enter when the picker is closed', async () => {
|
|
123
|
+
const search = fakeSearch(ROWS);
|
|
124
|
+
const onKeyDown = vi.fn();
|
|
125
|
+
const Wrapper = () => {
|
|
126
|
+
const [v, setV] = useState('');
|
|
127
|
+
return (_jsx(MentionableTextarea, { value: v, onChange: setV, search: search, onKeyDown: onKeyDown, "data-testid": "ta" }));
|
|
128
|
+
};
|
|
129
|
+
render(_jsx(Wrapper, {}));
|
|
130
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'Enter' });
|
|
131
|
+
expect(onKeyDown).toHaveBeenCalledTimes(1);
|
|
132
|
+
});
|
|
133
|
+
it('does NOT commit a stale row when Enter fires before a new query resolves (PR #159 review)', async () => {
|
|
134
|
+
// Regression for PR #159 Copilot finding: typing `@a`, getting
|
|
135
|
+
// Alice in the dropdown, then quickly typing `@bo` and hitting
|
|
136
|
+
// Enter before the `@bo` query resolves used to commit Alice
|
|
137
|
+
// (from the previous query) instead of doing nothing or
|
|
138
|
+
// committing Bob. The fix clears `users` on every new query so
|
|
139
|
+
// Enter has no row to commit until the new results land.
|
|
140
|
+
let resolveSlow = () => undefined;
|
|
141
|
+
const search = vi.fn((q) => {
|
|
142
|
+
if (q === 'bo') {
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
resolveSlow = resolve;
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
return Promise.resolve(ROWS.filter((u) => u.name.toLowerCase().includes(q.toLowerCase())));
|
|
148
|
+
});
|
|
149
|
+
render(_jsx(Host, { search: search }));
|
|
150
|
+
await typeAt('ta', '@a');
|
|
151
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_alice')).toBeTruthy());
|
|
152
|
+
// Now type the new query that hangs. Enter should NOT commit.
|
|
153
|
+
await typeAt('ta', '@bo');
|
|
154
|
+
fireEvent.keyDown(screen.getByTestId('ta'), { key: 'Enter' });
|
|
155
|
+
// Value should still be `@bo` — no token was inserted.
|
|
156
|
+
expect(screen.getByTestId('value').textContent).toBe('@bo');
|
|
157
|
+
// Resolve the hung query and confirm Bob is then committable.
|
|
158
|
+
await act(async () => {
|
|
159
|
+
resolveSlow(ROWS.filter((u) => u.name.toLowerCase().includes('bo')));
|
|
160
|
+
});
|
|
161
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_bob')).toBeTruthy());
|
|
162
|
+
});
|
|
163
|
+
it('drops stale responses when typing quickly (race protection)', async () => {
|
|
164
|
+
let resolveSlow = () => undefined;
|
|
165
|
+
const search = vi.fn((q) => {
|
|
166
|
+
if (q === 'a') {
|
|
167
|
+
return new Promise((resolve) => {
|
|
168
|
+
resolveSlow = resolve;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
// Fast path for `ali`.
|
|
172
|
+
return Promise.resolve(ROWS.filter((u) => u.name.toLowerCase().includes(q.toLowerCase())));
|
|
173
|
+
});
|
|
174
|
+
render(_jsx(Host, { search: search }));
|
|
175
|
+
// Trigger the slow request.
|
|
176
|
+
await typeAt('ta', '@a');
|
|
177
|
+
// Trigger the fast request which will resolve first.
|
|
178
|
+
await typeAt('ta', '@ali');
|
|
179
|
+
await waitFor(() => expect(screen.getByTestId('ta-picker-row-u_alice')).toBeTruthy());
|
|
180
|
+
// Now resolve the older request with the wrong rows — should NOT
|
|
181
|
+
// appear in the dropdown.
|
|
182
|
+
await act(async () => {
|
|
183
|
+
resolveSlow(ROWS);
|
|
184
|
+
});
|
|
185
|
+
// Carol should still be filtered out (the fast `ali` query is
|
|
186
|
+
// what won the race).
|
|
187
|
+
expect(screen.queryByTestId('ta-picker-row-u_carol')).toBeNull();
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=mentionable-textarea.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mentionable-textarea.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/mentionable-textarea.test.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-picker.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/lib/mention-picker.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
const cmsApiMock = vi.fn();
|
|
3
|
+
vi.mock('../../lib/api.js', () => ({
|
|
4
|
+
cmsApi: (...args) => cmsApiMock(...args),
|
|
5
|
+
getApiBase: () => '/api/cms',
|
|
6
|
+
}));
|
|
7
|
+
const { detectMentionContext, insertMentionToken, searchMentionUsers } = await import('../../lib/mention-picker.js');
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
cmsApiMock.mockReset();
|
|
10
|
+
});
|
|
11
|
+
describe('detectMentionContext', () => {
|
|
12
|
+
it('returns null when there is no @ before the caret', () => {
|
|
13
|
+
expect(detectMentionContext('hello world', 5)).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
it('matches a fresh @ at the start of the field', () => {
|
|
16
|
+
expect(detectMentionContext('@ali', 4)).toEqual({ start: 0, end: 4, query: 'ali' });
|
|
17
|
+
});
|
|
18
|
+
it('matches @ after a leading space', () => {
|
|
19
|
+
expect(detectMentionContext('hey @bob', 8)).toEqual({ start: 4, end: 8, query: 'bob' });
|
|
20
|
+
});
|
|
21
|
+
it('opens immediately with an empty query the moment @ is typed', () => {
|
|
22
|
+
expect(detectMentionContext('@', 1)).toEqual({ start: 0, end: 1, query: '' });
|
|
23
|
+
});
|
|
24
|
+
it('does NOT open mid-word for email-like input (`foo@bar`)', () => {
|
|
25
|
+
expect(detectMentionContext('foo@bar', 7)).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
it('terminates on a whitespace character between @ and caret', () => {
|
|
28
|
+
expect(detectMentionContext('@ali ce', 7)).toBeNull();
|
|
29
|
+
});
|
|
30
|
+
it('terminates on a non-mention punctuation character', () => {
|
|
31
|
+
expect(detectMentionContext('@ali.ce', 7)).toBeNull();
|
|
32
|
+
});
|
|
33
|
+
it('supports underscores and hyphens (id-shape charset)', () => {
|
|
34
|
+
expect(detectMentionContext('@user_id-42', 11)).toEqual({
|
|
35
|
+
start: 0,
|
|
36
|
+
end: 11,
|
|
37
|
+
query: 'user_id-42',
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
it('matches when the caret is mid-query (not at end of value)', () => {
|
|
41
|
+
// value: "@ali rest", caret after the `i`
|
|
42
|
+
expect(detectMentionContext('@ali rest', 4)).toEqual({ start: 0, end: 4, query: 'ali' });
|
|
43
|
+
});
|
|
44
|
+
it('handles newline as a boundary', () => {
|
|
45
|
+
expect(detectMentionContext('line\n@bob', 9)).toEqual({ start: 5, end: 9, query: 'bob' });
|
|
46
|
+
});
|
|
47
|
+
it('returns null when the caret is at offset 0', () => {
|
|
48
|
+
expect(detectMentionContext('@ali', 0)).toBeNull();
|
|
49
|
+
});
|
|
50
|
+
it('returns null when the caret is past the end of value', () => {
|
|
51
|
+
expect(detectMentionContext('@ali', 99)).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
it('rejects queries that exceed the 64-char server cap', () => {
|
|
54
|
+
const long = 'a'.repeat(65);
|
|
55
|
+
expect(detectMentionContext(`@${long}`, 1 + long.length)).toBeNull();
|
|
56
|
+
});
|
|
57
|
+
it('returns null for non-string input (defensive)', () => {
|
|
58
|
+
// @ts-expect-error — runtime guard against caller misuse
|
|
59
|
+
expect(detectMentionContext(undefined, 0)).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('insertMentionToken', () => {
|
|
63
|
+
it('replaces the @<query> slice with @<userId> + trailing space', () => {
|
|
64
|
+
const ctx = { start: 0, end: 4, query: 'ali' };
|
|
65
|
+
expect(insertMentionToken('@ali rest', ctx, 'user_123')).toEqual({
|
|
66
|
+
value: '@user_123 rest',
|
|
67
|
+
caret: '@user_123 '.length,
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
it('does not duplicate a trailing space when one is already present', () => {
|
|
71
|
+
const ctx = { start: 0, end: 4, query: 'ali' };
|
|
72
|
+
const out = insertMentionToken('@ali extra', ctx, 'u1');
|
|
73
|
+
expect(out.value).toBe('@u1 extra');
|
|
74
|
+
expect(out.value.slice(out.caret)).toBe('extra');
|
|
75
|
+
});
|
|
76
|
+
it('preserves text before the @ token', () => {
|
|
77
|
+
const ctx = { start: 4, end: 8, query: 'bob' };
|
|
78
|
+
expect(insertMentionToken('hey @bob', ctx, 'u_99').value).toBe('hey @u_99 ');
|
|
79
|
+
});
|
|
80
|
+
it('places the caret immediately past the inserted token + space', () => {
|
|
81
|
+
const ctx = { start: 0, end: 1, query: '' };
|
|
82
|
+
const out = insertMentionToken('@', ctx, 'u_xyz');
|
|
83
|
+
expect(out.value).toBe('@u_xyz ');
|
|
84
|
+
expect(out.caret).toBe(out.value.length);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('searchMentionUsers', () => {
|
|
88
|
+
it('short-circuits an empty query without hitting the wire', async () => {
|
|
89
|
+
const out = await searchMentionUsers('');
|
|
90
|
+
expect(out).toEqual({ ok: true, result: [] });
|
|
91
|
+
expect(cmsApiMock).not.toHaveBeenCalled();
|
|
92
|
+
});
|
|
93
|
+
it('short-circuits a whitespace-only query', async () => {
|
|
94
|
+
const out = await searchMentionUsers(' ');
|
|
95
|
+
expect(out).toEqual({ ok: true, result: [] });
|
|
96
|
+
expect(cmsApiMock).not.toHaveBeenCalled();
|
|
97
|
+
});
|
|
98
|
+
it('URL-encodes the query and forwards the result array', async () => {
|
|
99
|
+
cmsApiMock.mockResolvedValueOnce({
|
|
100
|
+
data: [{ id: 'u-1', name: 'Alice', email: 'a@x.com' }],
|
|
101
|
+
status: 200,
|
|
102
|
+
});
|
|
103
|
+
const out = await searchMentionUsers('a li ce');
|
|
104
|
+
expect(cmsApiMock).toHaveBeenCalledWith(`/users/search?q=${encodeURIComponent('a li ce')}`, {
|
|
105
|
+
method: 'GET',
|
|
106
|
+
});
|
|
107
|
+
expect(out.ok).toBe(true);
|
|
108
|
+
if (!out.ok)
|
|
109
|
+
return;
|
|
110
|
+
expect(out.result.map((u) => u.id)).toEqual(['u-1']);
|
|
111
|
+
});
|
|
112
|
+
it('propagates server errors as { ok: false }', async () => {
|
|
113
|
+
cmsApiMock.mockResolvedValueOnce({ error: 'CSRF', status: 403 });
|
|
114
|
+
const out = await searchMentionUsers('ali');
|
|
115
|
+
expect(out.ok).toBe(false);
|
|
116
|
+
if (out.ok)
|
|
117
|
+
return;
|
|
118
|
+
expect(out.error).toBe('CSRF');
|
|
119
|
+
expect(out.status).toBe(403);
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=mention-picker.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mention-picker.test.js","sourceRoot":"","sources":["../../../src/__tests__/lib/mention-picker.test.ts"],"names":[],"mappings":"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"}
|