fix: ignore pasted @ for file mentions (#1649)
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Bohdan Triapitsyn
parent
18744bf723
commit
b87de3c5b2
@@ -0,0 +1,74 @@
|
||||
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');
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user