Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
75 lines
2.4 KiB
TypeScript
75 lines
2.4 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
|
|
import { getFileMentionAutocompleteQuery } from '../fileMentionAutocompleteState';
|
|
|
|
describe('getFileMentionAutocompleteQuery', () => {
|
|
test('opens file mention autocomplete for manually typed boundary @ text', () => {
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value: '@config',
|
|
cursorPosition: '@config'.length,
|
|
inputSource: 'manual',
|
|
})).toBe('config');
|
|
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value: 'check @main.ts',
|
|
cursorPosition: 'check @main.ts'.length,
|
|
inputSource: 'manual',
|
|
})).toBe('main.ts');
|
|
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value: 'check @docs',
|
|
cursorPosition: 'check @docs'.length,
|
|
})).toBe('docs');
|
|
});
|
|
|
|
test('does not open file mention autocomplete when pasted text contains @', () => {
|
|
const pastedValues = [
|
|
'@config',
|
|
'@/path/to/file',
|
|
'Use @main.ts',
|
|
];
|
|
|
|
for (const value of pastedValues) {
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value,
|
|
cursorPosition: value.length,
|
|
inputSource: 'paste',
|
|
insertedText: value,
|
|
})).toBeNull();
|
|
}
|
|
});
|
|
|
|
test('does not open file mention autocomplete for pasted package and email text', () => {
|
|
const pastedValues = [
|
|
'user@email.com',
|
|
'npx @scope/pkg@latest',
|
|
];
|
|
|
|
for (const value of pastedValues) {
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value,
|
|
cursorPosition: value.length,
|
|
inputSource: 'paste',
|
|
insertedText: value,
|
|
})).toBeNull();
|
|
}
|
|
});
|
|
|
|
test('keeps autocomplete open when pasting a query fragment after a manually typed @', () => {
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value: '@config',
|
|
cursorPosition: '@config'.length,
|
|
inputSource: 'paste',
|
|
insertedText: 'config',
|
|
})).toBe('config');
|
|
});
|
|
|
|
test('uses current value when paste source lacks inserted text context', () => {
|
|
expect(getFileMentionAutocompleteQuery({
|
|
value: '@config',
|
|
cursorPosition: '@config'.length,
|
|
inputSource: 'paste',
|
|
})).toBe('config');
|
|
});
|
|
});
|