mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
@@ -2,52 +2,28 @@ import { getNumCharsToDelete } from './suggestions';
|
||||
|
||||
describe('suggestions', () => {
|
||||
describe('getNumCharsToDelete', () => {
|
||||
describe('when slateAutocomplete is enabled', () => {
|
||||
let originalBootData = window.grafanaBootData;
|
||||
|
||||
// hacky way to enable the feature toggle for this test
|
||||
beforeEach(() => {
|
||||
if (originalBootData) {
|
||||
window.grafanaBootData = {
|
||||
...originalBootData,
|
||||
settings: {
|
||||
...originalBootData.settings,
|
||||
featureToggles: {
|
||||
...originalBootData.settings.featureToggles,
|
||||
slateAutocomplete: true,
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
window.grafanaBootData = originalBootData;
|
||||
});
|
||||
|
||||
const splunkCleanText = (s: string) => s.replace(/[{}[\]="(),!~+\-*/^%:\\]/g, '').trim();
|
||||
it.each([
|
||||
// | represents the caret position
|
||||
['$query0 ', '', '', false, 0, undefined, { forward: 0, backward: 0 }], // "|" --> "$query0 |"
|
||||
['$query0 ', '$que', '$que', false, 0, undefined, { forward: 0, backward: 4 }], // "$que|" --> "$query0 |"
|
||||
['$query0 ', '$q', '$que', false, 0, undefined, { forward: 2, backward: 2 }], // "$q|ue" --> "$query0 |"
|
||||
['$query0 ', '$que', '($que)', false, 0, splunkCleanText, { forward: 0, backward: 4 }], // "($que|)" --> "($query0 |)"
|
||||
['$query0 ', '$que', 'esarvotionUsagePercent=$que', false, 0, undefined, { forward: 0, backward: 4 }], // "esarvotionUsagePercent=$que|" --> "esarvotionUsagePercent=$query0 |"
|
||||
])(
|
||||
'should calculate the correct number of characters to delete forwards and backwards',
|
||||
(suggestionText, typeaheadPrefix, typeaheadText, preserveSuffix, deleteBackwards, cleanText, expected) => {
|
||||
expect(
|
||||
getNumCharsToDelete(
|
||||
suggestionText,
|
||||
typeaheadPrefix,
|
||||
typeaheadText,
|
||||
preserveSuffix,
|
||||
deleteBackwards,
|
||||
cleanText
|
||||
)
|
||||
).toEqual(expected);
|
||||
}
|
||||
);
|
||||
});
|
||||
const splunkCleanText = (s: string) => s.replace(/[{}[\]="(),!~+\-*/^%:\\]/g, '').trim();
|
||||
it.each([
|
||||
// | represents the caret position
|
||||
['$query0 ', '', '', false, 0, undefined, { forward: 0, backward: 0 }], // "|" --> "$query0 |"
|
||||
['$query0 ', '$que', '$que', false, 0, undefined, { forward: 0, backward: 4 }], // "$que|" --> "$query0 |"
|
||||
['$query0 ', '$q', '$que', false, 0, undefined, { forward: 2, backward: 2 }], // "$q|ue" --> "$query0 |"
|
||||
['$query0 ', '$que', '($que)', false, 0, splunkCleanText, { forward: 0, backward: 4 }], // "($que|)" --> "($query0 |)"
|
||||
['$query0 ', '$que', 'esarvotionUsagePercent=$que', false, 0, undefined, { forward: 0, backward: 4 }], // "esarvotionUsagePercent=$que|" --> "esarvotionUsagePercent=$query0 |"
|
||||
])(
|
||||
'should calculate the correct number of characters to delete forwards and backwards',
|
||||
(suggestionText, typeaheadPrefix, typeaheadText, preserveSuffix, deleteBackwards, cleanText, expected) => {
|
||||
expect(
|
||||
getNumCharsToDelete(
|
||||
suggestionText,
|
||||
typeaheadPrefix,
|
||||
typeaheadText,
|
||||
preserveSuffix,
|
||||
deleteBackwards,
|
||||
cleanText
|
||||
)
|
||||
).toEqual(expected);
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -360,18 +360,10 @@ export function getNumCharsToDelete(
|
||||
const text = cleanText ? cleanText(typeaheadText) : typeaheadText;
|
||||
const offset = typeaheadText.indexOf(typeaheadPrefix);
|
||||
|
||||
let forward: number;
|
||||
|
||||
if (window.grafanaBootData?.settings.featureToggles['slateAutocomplete']) {
|
||||
const suffixLength =
|
||||
offset > -1 ? text.length - offset - typeaheadPrefix.length : text.length - typeaheadPrefix.length;
|
||||
const midWord = Boolean((typeaheadPrefix && suffixLength > 0) || suggestionText === typeaheadText);
|
||||
forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
|
||||
} else {
|
||||
const suffixLength = text.length - typeaheadPrefix.length;
|
||||
const midWord = typeaheadPrefix && ((suffixLength > 0 && offset > -1) || suggestionText === typeaheadText);
|
||||
forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
|
||||
}
|
||||
const suffixLength =
|
||||
offset > -1 ? text.length - offset - typeaheadPrefix.length : text.length - typeaheadPrefix.length;
|
||||
const midWord = Boolean((typeaheadPrefix && suffixLength > 0) || suggestionText === typeaheadText);
|
||||
const forward = midWord && !preserveSuffix ? suffixLength + offset : 0;
|
||||
|
||||
return {
|
||||
forward,
|
||||
|
||||
Reference in New Issue
Block a user