agent-ecosystem/test/renderer/hooks/useMentionDetection.test.ts
iliya 9b7c9fec0c feat: enhance task assignment notifications and improve message clarity
- Updated the task assignment message in tasks.js to include additional instructions for task initiation based on current workload.
- Modified the notification tests to verify the inclusion of new task initiation guidance.
- Adjusted the formatting in the CollapsibleTeamSection component for better layout consistency.
- Refactored the ChangeExtractorService tests to improve clarity and accuracy in log file reference handling.
- Updated cost calculation tests to reflect changes in model names and pricing structures, ensuring accurate cost assessments.
- Enhanced mention detection tests to include trigger character information for improved functionality.
2026-03-14 23:05:42 +02:00

70 lines
2.4 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { findMentionTrigger } from '@renderer/hooks/useMentionDetection';
describe('findMentionTrigger', () => {
it('detects @query at start of text', () => {
const result = findMentionTrigger('@ali', 4);
expect(result).toEqual({ triggerIndex: 0, triggerChar: '@', query: 'ali' });
});
it('detects @query after space', () => {
const result = findMentionTrigger('hello @bo', 9);
expect(result).toEqual({ triggerIndex: 6, triggerChar: '@', query: 'bo' });
});
it('returns null for email-like @ (no space before)', () => {
const result = findMentionTrigger('email@test', 10);
expect(result).toBeNull();
});
it('returns null when space follows @ query (mention already complete)', () => {
const result = findMentionTrigger('@alice ', 7);
expect(result).toBeNull();
});
it('returns empty query for bare @', () => {
const result = findMentionTrigger('@', 1);
expect(result).toEqual({ triggerIndex: 0, triggerChar: '@', query: '' });
});
it('detects @ after newline', () => {
const result = findMentionTrigger('text\n@ca', 8);
expect(result).toEqual({ triggerIndex: 5, triggerChar: '@', query: 'ca' });
});
it('returns null for empty text', () => {
const result = findMentionTrigger('', 0);
expect(result).toBeNull();
});
it('detects @ after tab', () => {
const result = findMentionTrigger('hello\t@bob', 10);
expect(result).toEqual({ triggerIndex: 6, triggerChar: '@', query: 'bob' });
});
it('returns null when cursor is at position 0', () => {
const result = findMentionTrigger('@test', 0);
expect(result).toBeNull();
});
it('detects @ with empty query after space', () => {
const result = findMentionTrigger('hello @', 7);
expect(result).toEqual({ triggerIndex: 6, triggerChar: '@', query: '' });
});
it('handles multiple @ signs - picks nearest valid one', () => {
const result = findMentionTrigger('@alice hello @bo', 16);
expect(result).toEqual({ triggerIndex: 13, triggerChar: '@', query: 'bo' });
});
it('returns null for @ in middle of word', () => {
const result = findMentionTrigger('test@domain', 11);
expect(result).toBeNull();
});
it('detects @ after carriage return', () => {
const result = findMentionTrigger('text\r\n@ca', 9);
expect(result).toEqual({ triggerIndex: 6, triggerChar: '@', query: 'ca' });
});
});