diff --git a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.test.tsx b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.test.tsx index e30d0c0b81e..d2fa1e7cbbd 100644 --- a/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.test.tsx +++ b/superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricOption.test.tsx @@ -57,7 +57,7 @@ const defaultProps = { index: 0, }; -function setup(overrides) { +function setup(overrides: Partial = {}) { const props = { ...defaultProps, ...overrides, @@ -66,12 +66,12 @@ function setup(overrides) { } test('renders an overlay trigger wrapper for the label', () => { - setup(); + setup({}); expect(screen.getByText('SUM(value)')).toBeInTheDocument(); }); test('overwrites the adhocMetric in state with onLabelChange', async () => { - setup(); + setup({}); userEvent.click(screen.getByText('SUM(value)')); userEvent.click(screen.getByTestId(/AdhocMetricEditTitle#trigger/i)); const labelInput = await screen.findByTestId(/AdhocMetricEditTitle#input/i); @@ -86,7 +86,7 @@ test('overwrites the adhocMetric in state with onLabelChange', async () => { }); test('returns to default labels when the custom label is cleared', async () => { - setup(); + setup({}); userEvent.click(screen.getByText('SUM(value)')); userEvent.click(screen.getByTestId(/AdhocMetricEditTitle#trigger/i)); const labelInput = await screen.findByTestId(/AdhocMetricEditTitle#input/i); diff --git a/superset-frontend/src/explore/components/controls/MetricControl/FilterDefinitionOption.tsx b/superset-frontend/src/explore/components/controls/MetricControl/FilterDefinitionOption.tsx index f310d212e6f..79820e0a218 100644 --- a/superset-frontend/src/explore/components/controls/MetricControl/FilterDefinitionOption.tsx +++ b/superset-frontend/src/explore/components/controls/MetricControl/FilterDefinitionOption.tsx @@ -22,6 +22,14 @@ import columnType from './columnType'; import adhocMetricType from './adhocMetricType'; import { StyledColumnOption } from '../../optionRenderers'; +interface OptionType { + saved_metric_name?: string; + column_name?: string; + label?: string; + type?: string; + [key: string]: unknown; +} + const propTypes = { option: PropTypes.oneOfType([ columnType, @@ -30,7 +38,7 @@ const propTypes = { ]).isRequired, }; -export default function FilterDefinitionOption({ option }) { +export default function FilterDefinitionOption({ option }: { option: OptionType }) { if (option.saved_metric_name) { return ( { +const defaultProps = { + onMetricEdit: jest.fn(), + option: sumValueAdhocMetric, + index: 1, + columns: [], + savedMetrics: [], + savedMetricsOptions: [], + datasource: {}, + onMoveLabel: jest.fn(), + onDropLabel: jest.fn(), +}; + +const setup = (propOverrides: Partial = {}) => { const props = { - onMetricEdit: jest.fn(), - option: sumValueAdhocMetric, - index: 1, - columns: [], - savedMetrics: [], - savedMetricsOptions: [], - datasource: {}, - onMoveLabel: jest.fn(), - onDropLabel: jest.fn(), + ...defaultProps, ...propOverrides, }; return render(, { useDnd: true }); @@ -44,12 +48,12 @@ const setup = propOverrides => { test('renders a MetricOption given a saved metric', () => { setup({ - option: { metric_name: 'a_saved_metric', expression: 'COUNT(*)' }, + option: { metric_name: 'a_saved_metric', expression: 'COUNT(*)' } as typeof defaultProps['option'], }); expect(screen.getByText('a_saved_metric')).toBeInTheDocument(); }); test('renders an AdhocMetricOption given an adhoc metric', () => { - setup(); + setup({}); expect(screen.getByText('SUM(value)')).toBeInTheDocument(); });