@actuate-media/cms-admin 0.13.0 → 0.14.0

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.
Files changed (30) hide show
  1. package/dist/__tests__/components/comment-side-panel.test.js +93 -0
  2. package/dist/__tests__/components/comment-side-panel.test.js.map +1 -1
  3. package/dist/__tests__/components/mentionable-textarea.test.d.ts +2 -0
  4. package/dist/__tests__/components/mentionable-textarea.test.d.ts.map +1 -0
  5. package/dist/__tests__/components/mentionable-textarea.test.js +190 -0
  6. package/dist/__tests__/components/mentionable-textarea.test.js.map +1 -0
  7. package/dist/__tests__/lib/mention-picker.test.d.ts +2 -0
  8. package/dist/__tests__/lib/mention-picker.test.d.ts.map +1 -0
  9. package/dist/__tests__/lib/mention-picker.test.js +122 -0
  10. package/dist/__tests__/lib/mention-picker.test.js.map +1 -0
  11. package/dist/actuate-admin.css +1 -1
  12. package/dist/components/CommentSidePanel.d.ts +9 -1
  13. package/dist/components/CommentSidePanel.d.ts.map +1 -1
  14. package/dist/components/CommentSidePanel.js +8 -7
  15. package/dist/components/CommentSidePanel.js.map +1 -1
  16. package/dist/components/MentionableTextarea.d.ts +68 -0
  17. package/dist/components/MentionableTextarea.d.ts.map +1 -0
  18. package/dist/components/MentionableTextarea.js +181 -0
  19. package/dist/components/MentionableTextarea.js.map +1 -0
  20. package/dist/lib/mention-picker.d.ts +69 -0
  21. package/dist/lib/mention-picker.d.ts.map +1 -0
  22. package/dist/lib/mention-picker.js +138 -0
  23. package/dist/lib/mention-picker.js.map +1 -0
  24. package/package.json +2 -2
  25. package/src/__tests__/components/comment-side-panel.test.tsx +134 -0
  26. package/src/__tests__/components/mentionable-textarea.test.tsx +226 -0
  27. package/src/__tests__/lib/mention-picker.test.ts +145 -0
  28. package/src/components/CommentSidePanel.tsx +37 -14
  29. package/src/components/MentionableTextarea.tsx +328 -0
  30. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mentionable-textarea.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mention-picker.test.d.ts.map
@@ -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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"}