This is an automated email from the ASF dual-hosted git repository.

michaelsmolina pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 070b865e32 chore(explore): Add tests for 
getControlValuesCompatibleWithDatasource (#21744)
070b865e32 is described below

commit 070b865e32f47eeb9501eec9fc5d5927f54d206e
Author: Cody Leff <[email protected]>
AuthorDate: Tue Oct 11 05:31:46 2022 -0600

    chore(explore): Add tests for getControlValuesCompatibleWithDatasource 
(#21744)
---
 ...etControlValuesCompatibleWithDatasource.test.ts | 285 +++++++++++++++++++++
 1 file changed, 285 insertions(+)

diff --git 
a/superset-frontend/src/explore/controlUtils/getControlValuesCompatibleWithDatasource.test.ts
 
b/superset-frontend/src/explore/controlUtils/getControlValuesCompatibleWithDatasource.test.ts
new file mode 100644
index 0000000000..7da50b0ce4
--- /dev/null
+++ 
b/superset-frontend/src/explore/controlUtils/getControlValuesCompatibleWithDatasource.test.ts
@@ -0,0 +1,285 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import {
+  ControlState,
+  Dataset,
+  sharedControls,
+} from '@superset-ui/chart-controls';
+import { DatasourceType, JsonValue } from '@superset-ui/core';
+import { getControlValuesCompatibleWithDatasource } from 
'./getControlValuesCompatibleWithDatasource';
+
+const sampleDatasource: Dataset = {
+  id: 1,
+  type: DatasourceType.Table,
+  columns: [
+    { column_name: 'sample_column_1' },
+    { column_name: 'sample_column_3' },
+    { column_name: 'sample_column_4' },
+  ],
+  metrics: [{ metric_name: 'saved_metric_2' }],
+  column_format: {},
+  verbose_map: {},
+  main_dttm_col: '',
+  datasource_name: 'Sample Dataset',
+  description: 'A sample dataset',
+};
+
+const getValues = (controlState: ControlState) => {
+  const { value } = controlState;
+  return getControlValuesCompatibleWithDatasource(
+    sampleDatasource,
+    controlState,
+    value as JsonValue,
+  );
+};
+
+test('empty values', () => {
+  const controlState = sharedControls.groupby;
+  expect(
+    getValues({
+      ...controlState,
+      value: undefined,
+    }),
+  ).toEqual(undefined);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: null,
+    }),
+  ).toEqual(undefined);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: [],
+    }),
+  ).toEqual(controlState.default);
+});
+
+test('column values', () => {
+  const controlState = {
+    ...sharedControls.columns,
+    options: [
+      { column_name: 'sample_column_1' },
+      { column_name: 'sample_column_2' },
+      { column_name: 'sample_column_3' },
+    ],
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: 'sample_column_1',
+    }),
+  ).toEqual('sample_column_1');
+
+  expect(
+    getValues({
+      ...controlState,
+      value: 'sample_column_2',
+    }),
+  ).toEqual(controlState.default);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: 'sample_column_3',
+    }),
+  ).toEqual('sample_column_3');
+
+  expect(
+    getValues({
+      ...controlState,
+      value: ['sample_column_1', 'sample_column_2', 'sample_column_3'],
+    }),
+  ).toEqual(['sample_column_1', 'sample_column_3']);
+});
+
+test('saved metric values', () => {
+  const controlState = {
+    ...sharedControls.metrics,
+    savedMetrics: [
+      { metric_name: 'saved_metric_1' },
+      { metric_name: 'saved_metric_2' },
+    ],
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: 'saved_metric_1',
+    }),
+  ).toEqual(controlState.default);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: 'saved_metric_2',
+    }),
+  ).toEqual('saved_metric_2');
+
+  expect(
+    getValues({
+      ...controlState,
+      value: ['saved_metric_1', 'saved_metric_2'],
+    }),
+  ).toEqual(['saved_metric_2']);
+});
+
+test('simple ad-hoc metric values', () => {
+  const controlState = {
+    ...sharedControls.metrics,
+    columns: [
+      { column_name: 'sample_column_1' },
+      { column_name: 'sample_column_2' },
+      { column_name: 'sample_column_3' },
+    ],
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SIMPLE',
+        column: { column_name: 'sample_column_1' },
+      },
+    }),
+  ).toEqual({
+    expressionType: 'SIMPLE',
+    column: { column_name: 'sample_column_1' },
+  });
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SIMPLE',
+        column: { column_name: 'sample_column_2' },
+      },
+    }),
+  ).toEqual(controlState.default);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: [
+        {
+          expressionType: 'SIMPLE',
+          column: { column_name: 'sample_column_1' },
+        },
+        {
+          expressionType: 'SIMPLE',
+          column: { column_name: 'sample_column_2' },
+        },
+      ],
+    }),
+  ).toEqual([
+    { expressionType: 'SIMPLE', column: { column_name: 'sample_column_1' } },
+  ]);
+});
+
+test('SQL ad-hoc metric values', () => {
+  const controlState = {
+    ...sharedControls.metrics,
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SQL',
+        sqlExpression: 'select * from sample_column_1;',
+      },
+    }),
+  ).toEqual({
+    expressionType: 'SQL',
+    sqlExpression: 'select * from sample_column_1;',
+  });
+});
+
+test('simple ad-hoc filter values', () => {
+  const controlState = {
+    ...sharedControls.adhoc_filters,
+    columns: [
+      { column_name: 'sample_column_1' },
+      { column_name: 'sample_column_2' },
+      { column_name: 'sample_column_3' },
+    ],
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SIMPLE',
+        subject: 'sample_column_1',
+      },
+    }),
+  ).toEqual({
+    expressionType: 'SIMPLE',
+    subject: 'sample_column_1',
+  });
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SIMPLE',
+        subject: 'sample_column_2',
+      },
+    }),
+  ).toEqual(controlState.default);
+
+  expect(
+    getValues({
+      ...controlState,
+      value: [
+        {
+          expressionType: 'SIMPLE',
+          subject: 'sample_column_1',
+        },
+        {
+          expressionType: 'SIMPLE',
+          subject: 'sample_column_2',
+        },
+      ],
+    }),
+  ).toEqual([{ expressionType: 'SIMPLE', subject: 'sample_column_1' }]);
+});
+
+test('SQL ad-hoc filter values', () => {
+  const controlState = {
+    ...sharedControls.adhoc_filters,
+  };
+
+  expect(
+    getValues({
+      ...controlState,
+      value: {
+        expressionType: 'SQL',
+        sqlExpression: 'select * from sample_column_1;',
+      },
+    }),
+  ).toEqual({
+    expressionType: 'SQL',
+    sqlExpression: 'select * from sample_column_1;',
+  });
+});

Reply via email to