- Introduced TEAM_START_TASK IPC channel to facilitate starting tasks and notifying agents. - Updated task creation to include an option for immediate start, enhancing user experience. - Enhanced task notifications with detailed instructions for agents upon task assignment. - Improved team member logs handling and metadata extraction for better task tracking. These changes aim to streamline task management and improve team collaboration efficiency.
70 lines
2.2 KiB
TypeScript
70 lines
2.2 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, query: 'ali' });
|
|
});
|
|
|
|
it('detects @query after space', () => {
|
|
const result = findMentionTrigger('hello @bo', 9);
|
|
expect(result).toEqual({ triggerIndex: 6, 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, query: '' });
|
|
});
|
|
|
|
it('detects @ after newline', () => {
|
|
const result = findMentionTrigger('text\n@ca', 8);
|
|
expect(result).toEqual({ triggerIndex: 5, 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, 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, query: '' });
|
|
});
|
|
|
|
it('handles multiple @ signs - picks nearest valid one', () => {
|
|
const result = findMentionTrigger('@alice hello @bo', 16);
|
|
expect(result).toEqual({ triggerIndex: 13, 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, query: 'ca' });
|
|
});
|
|
});
|