|
|
@@ -96,11 +96,14 @@ describe('PromQueryField typeahead handling', () => {
|
|
|
|
|
|
it('returns label suggestions on label context but leaves out labels that already exist', () => {
|
|
|
const instance = shallow(
|
|
|
- <PromQueryField {...defaultProps} labelKeys={{ '{job="foo"}': ['bar', 'job'] }} />
|
|
|
+ <PromQueryField
|
|
|
+ {...defaultProps}
|
|
|
+ labelKeys={{ '{job1="foo",job2!="foo",job3=~"foo"}': ['bar', 'job1', 'job2', 'job3'] }}
|
|
|
+ />
|
|
|
).instance() as PromQueryField;
|
|
|
- const value = Plain.deserialize('{job="foo",}');
|
|
|
+ const value = Plain.deserialize('{job1="foo",job2!="foo",job3=~"foo",}');
|
|
|
const range = value.selection.merge({
|
|
|
- anchorOffset: 11,
|
|
|
+ anchorOffset: 36,
|
|
|
});
|
|
|
const valueWithSelection = value.change().select(range).value;
|
|
|
const result = instance.getTypeahead({
|
|
|
@@ -113,6 +116,33 @@ describe('PromQueryField typeahead handling', () => {
|
|
|
expect(result.suggestions).toEqual([{ items: [{ label: 'bar' }], label: 'Labels' }]);
|
|
|
});
|
|
|
|
|
|
+ it('returns label value suggestions inside a label value context after a negated matching operator', () => {
|
|
|
+ const instance = shallow(
|
|
|
+ <PromQueryField
|
|
|
+ {...defaultProps}
|
|
|
+ labelKeys={{ '{}': ['label'] }}
|
|
|
+ labelValues={{ '{}': { label: ['a', 'b', 'c'] } }}
|
|
|
+ />
|
|
|
+ ).instance() as PromQueryField;
|
|
|
+ const value = Plain.deserialize('{label!=}');
|
|
|
+ const range = value.selection.merge({ anchorOffset: 8 });
|
|
|
+ const valueWithSelection = value.change().select(range).value;
|
|
|
+ const result = instance.getTypeahead({
|
|
|
+ text: '!=',
|
|
|
+ prefix: '',
|
|
|
+ wrapperClasses: ['context-labels'],
|
|
|
+ labelKey: 'label',
|
|
|
+ value: valueWithSelection,
|
|
|
+ });
|
|
|
+ expect(result.context).toBe('context-label-values');
|
|
|
+ expect(result.suggestions).toEqual([
|
|
|
+ {
|
|
|
+ items: [{ label: 'a' }, { label: 'b' }, { label: 'c' }],
|
|
|
+ label: 'Label values for "label"',
|
|
|
+ },
|
|
|
+ ]);
|
|
|
+ });
|
|
|
+
|
|
|
it('returns a refresher on label context and unavailable metric', () => {
|
|
|
const instance = shallow(
|
|
|
<PromQueryField {...defaultProps} labelKeys={{ '{__name__="foo"}': ['bar'] }} />
|