Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,70 @@ test('sets comparator to undefined when operator is IS_NULL or IS_NOT_NULL', ()
});
});

test('hides the value input when operator is IS_NULL', () => {
setup({
adhocFilter: new AdhocFilter({
expressionType: ExpressionTypes.Simple,
subject: 'value',
operatorId: Operators.IsNull,
operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.IsNull].operation,
comparator: undefined,
clause: Clauses.Where,
}),
});
expect(
screen.queryByPlaceholderText('Filter value (case sensitive)'),
).not.toBeInTheDocument();
});

test('hides the value input when operator is IS_NOT_NULL', () => {
setup({
adhocFilter: new AdhocFilter({
expressionType: ExpressionTypes.Simple,
subject: 'value',
operatorId: Operators.IsNotNull,
operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.IsNotNull].operation,
comparator: undefined,
clause: Clauses.Where,
}),
});
expect(
screen.queryByPlaceholderText('Filter value (case sensitive)'),
).not.toBeInTheDocument();
});

test('hides the value input when operator is IS_TRUE', () => {
setup({
adhocFilter: new AdhocFilter({
expressionType: ExpressionTypes.Simple,
subject: 'value',
operatorId: Operators.IsTrue,
operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.IsTrue].operation,
comparator: undefined,
clause: Clauses.Where,
}),
});
expect(
screen.queryByPlaceholderText('Filter value (case sensitive)'),
).not.toBeInTheDocument();
});

test('hides the value input when operator is IS_FALSE', () => {
setup({
adhocFilter: new AdhocFilter({
expressionType: ExpressionTypes.Simple,
subject: 'value',
operatorId: Operators.IsFalse,
operator: OPERATOR_ENUM_TO_OPERATOR_TYPE[Operators.IsFalse].operation,
comparator: undefined,
clause: Clauses.Where,
}),
});
expect(
screen.queryByPlaceholderText('Filter value (case sensitive)'),
).not.toBeInTheDocument();
});

test('should not call API when column has no advanced data type', async () => {
const props = getAdvancedDataTypeTestProps();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,6 +377,14 @@ const AdhocFilterEditPopoverSimpleTabContent: FC<Props> = props => {
const shouldFocusComparator =
!!subjectSelectProps.value && !!operatorSelectProps.value;

const isUnaryOperator =
operatorId !== undefined &&
DISABLE_INPUT_OPERATORS.includes(operatorId as Operators);

const hasComparatorOptions =
(operatorId && MULTI_OPERATORS.has(operatorId as Operators)) ||
suggestions.length > 0;

const comparatorSelectProps = {
allowClear: true,
allowNewOptions: true,
Expand All @@ -389,9 +397,6 @@ const AdhocFilterEditPopoverSimpleTabContent: FC<Props> = props => {
value: comparator as SelectValue,
onChange: onComparatorChange,
notFoundContent: t('Type a value here'),
disabled:
operatorId !== undefined &&
DISABLE_INPUT_OPERATORS.includes(operatorId as Operators),
placeholder: createSuggestionsPlaceholder(),
};

Expand Down Expand Up @@ -555,49 +560,45 @@ const AdhocFilterEditPopoverSimpleTabContent: FC<Props> = props => {
}))}
{...operatorSelectProps}
/>
{(operatorId && MULTI_OPERATORS.has(operatorId as Operators)) ||
suggestions.length > 0 ? (
<Tooltip
title={
advancedDataTypesState.errorMessage ||
advancedDataTypesState.parsedAdvancedDataType
}
>
<SelectWithLabel
css={css`
margin-top: ${theme.sizeUnit * 4}px;
`}
labelText={labelText}
options={suggestions}
{...comparatorSelectProps}
/>
</Tooltip>
) : (
<Tooltip
title={
advancedDataTypesState.errorMessage ||
advancedDataTypesState.parsedAdvancedDataType
}
>
<div
css={css`
margin-top: ${theme.sizeUnit * 4}px;
`}
/>
<Input
data-test="adhoc-filter-simple-value"
name="filter-value"
ref={comparatorInputRef}
onChange={onInputComparatorChange}
value={typeof comparator === 'string' ? comparator : undefined}
placeholder={t('Filter value (case sensitive)')}
disabled={
operatorId !== undefined &&
DISABLE_INPUT_OPERATORS.includes(operatorId as Operators)
{!isUnaryOperator &&
(hasComparatorOptions ? (
<Tooltip
title={
advancedDataTypesState.errorMessage ||
advancedDataTypesState.parsedAdvancedDataType
}
>
<SelectWithLabel
css={css`
margin-top: ${theme.sizeUnit * 4}px;
`}
labelText={labelText}
options={suggestions}
{...comparatorSelectProps}
/>
</Tooltip>
) : (
<Tooltip
title={
advancedDataTypesState.errorMessage ||
advancedDataTypesState.parsedAdvancedDataType
}
/>
</Tooltip>
)}
>
<div
css={css`
margin-top: ${theme.sizeUnit * 4}px;
`}
/>
<Input
data-test="adhoc-filter-simple-value"
name="filter-value"
ref={comparatorInputRef}
onChange={onInputComparatorChange}
value={typeof comparator === 'string' ? comparator : undefined}
placeholder={t('Filter value (case sensitive)')}
/>
</Tooltip>
))}
</>
);
return (
Expand Down
Loading