Prometheus: Fix adding of multiple values for regex operator (#52978)

* Prometheus, Loki: Fix adding of multiple values for regex operator

* Refactor
This commit is contained in:
Ivana Huckova 2022-07-29 15:27:19 +02:00 committed by GitHub
parent 87004cc22d
commit 1eb3513781
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 5 deletions

View File

@ -25,7 +25,7 @@ export function LabelFilterItem({ item, defaultOp, onChange, onDelete, onGetLabe
}>({}); }>({});
const isMultiSelect = () => { const isMultiSelect = () => {
return item.op === operators[0].label; return operators.find((op) => op.label === item.op)?.isMultiValue;
}; };
const getSelectOptionsFromString = (item?: string): string[] => { const getSelectOptionsFromString = (item?: string): string[] => {
@ -127,8 +127,8 @@ export function LabelFilterItem({ item, defaultOp, onChange, onDelete, onGetLabe
} }
const operators = [ const operators = [
{ label: '=~', value: '=~' }, { label: '=~', value: '=~', isMultiValue: true },
{ label: '=', value: '=' }, { label: '=', value: '=', isMultiValue: false },
{ label: '!=', value: '!=' }, { label: '!=', value: '!=', isMultiValue: false },
{ label: '!~', value: '!~' }, { label: '!~', value: '!~', isMultiValue: true },
]; ];

View File

@ -31,6 +31,21 @@ describe('LabelFilters', () => {
expect(getAddButton()).toBeInTheDocument(); expect(getAddButton()).toBeInTheDocument();
}); });
it('renders multiple values for regex selectors', async () => {
setup([
{ label: 'bar', op: '!~', value: 'baz|bat|bau' },
{ label: 'foo', op: '!~', value: 'fop|for|fos' },
]);
expect(screen.getByText(/bar/)).toBeInTheDocument();
expect(screen.getByText(/baz/)).toBeInTheDocument();
expect(screen.getByText(/bat/)).toBeInTheDocument();
expect(screen.getByText(/bau/)).toBeInTheDocument();
expect(screen.getByText(/foo/)).toBeInTheDocument();
expect(screen.getByText(/for/)).toBeInTheDocument();
expect(screen.getByText(/fos/)).toBeInTheDocument();
expect(getAddButton()).toBeInTheDocument();
});
it('adds new label', async () => { it('adds new label', async () => {
const { onChange } = setup([{ label: 'foo', op: '=', value: 'bar' }]); const { onChange } = setup([{ label: 'foo', op: '=', value: 'bar' }]);
await userEvent.click(getAddButton()); await userEvent.click(getAddButton());