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

yongjiezhao 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 d04357c47b fix: superset-ui/core codes coverage (#20324)
d04357c47b is described below

commit d04357c47bec7bac49c602f3d2166375892200ad
Author: Yongjie Zhao <[email protected]>
AuthorDate: Thu Jun 9 17:43:42 2022 +0800

    fix: superset-ui/core codes coverage (#20324)
---
 superset-frontend/jest.config.js                   |  2 +-
 .../superset-ui-chart-controls/src/types.ts        | 22 ++++++++--
 .../src/utils/columnChoices.ts                     | 35 ++++++++--------
 .../test/utils/defineSavedMetrics.test.tsx         | 39 +++++++++---------
 .../packages/superset-ui-core/src/index.ts         |  1 -
 .../types/Base.ts => query/types/Dashboard.ts}     |  2 +
 .../superset-ui-core/src/query/types/Query.ts      |  8 ++--
 .../superset-ui-core/src/query/types/index.ts      |  2 +
 .../query/types/Dashboard.test.ts}                 | 47 +++++++++++++---------
 .../ui-overrides/UiOverrideRegistry.test.ts}       |  5 ++-
 10 files changed, 98 insertions(+), 65 deletions(-)

diff --git a/superset-frontend/jest.config.js b/superset-frontend/jest.config.js
index 18d20a1f97..0d66ade8b3 100644
--- a/superset-frontend/jest.config.js
+++ b/superset-frontend/jest.config.js
@@ -47,7 +47,7 @@ module.exports = {
     'tmp/',
     'dist/',
   ],
-  coverageReporters: ['lcov', 'json-summary', 'html'],
+  coverageReporters: ['lcov', 'json-summary', 'html', 'text'],
   moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json'],
   snapshotSerializers: ['@emotion/jest/enzyme-serializer'],
   globals: {
diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/types.ts 
b/superset-frontend/packages/superset-ui-chart-controls/src/types.ts
index a7bd128be9..431450f142 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/src/types.ts
+++ b/superset-frontend/packages/superset-ui-chart-controls/src/types.ts
@@ -17,17 +17,17 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import React, { ReactNode, ReactText, ReactElement } from 'react';
+import React, { ReactElement, ReactNode, ReactText } from 'react';
 import type {
   AdhocColumn,
   Column,
   DatasourceType,
   JsonValue,
   Metric,
+  QueryFormColumn,
   QueryFormData,
-  QueryResponse,
   QueryFormMetric,
-  QueryFormColumn,
+  QueryResponse,
 } from '@superset-ui/core';
 import { sharedControls } from './shared-controls';
 import sharedControlComponents from './shared-controls/components';
@@ -437,3 +437,19 @@ export function isControlPanelSectionConfig(
 ): section is ControlPanelSectionConfig {
   return section !== null;
 }
+
+export function isDataset(
+  datasource: Dataset | QueryResponse | null | undefined,
+): datasource is Dataset {
+  return !!datasource && 'columns' in datasource;
+}
+
+export function isQueryResponse(
+  datasource: Dataset | QueryResponse | null | undefined,
+): datasource is QueryResponse {
+  return (
+    !!datasource &&
+    ('results' in datasource ||
+      datasource?.type === ('query' as DatasourceType.Query))
+  );
+}
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/columnChoices.ts
 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/columnChoices.ts
index 0387717ff7..fd4e1fb512 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/utils/columnChoices.ts
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/utils/columnChoices.ts
@@ -16,8 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { QueryResponse } from '@superset-ui/core';
-import { Dataset } from '../types';
+import { ensureIsArray, QueryResponse } from '@superset-ui/core';
+import { Dataset, isColumnMeta, isDataset, isQueryResponse } from '../types';
 
 /**
  * Convert Datasource columns to column choices
@@ -25,23 +25,24 @@ import { Dataset } from '../types';
 export default function columnChoices(
   datasource?: Dataset | QueryResponse | null,
 ): [string, string][] {
-  if (datasource?.columns[0]?.hasOwnProperty('column_name')) {
-    return (
-      (datasource as Dataset)?.columns
-        .map((col): [string, string] => [
-          col.column_name,
-          col.verbose_name || col.column_name,
-        ])
-        .sort((opt1, opt2) =>
-          opt1[1].toLowerCase() > opt2[1].toLowerCase() ? 1 : -1,
-        ) || []
-    );
+  if (isDataset(datasource) && isColumnMeta(datasource.columns[0])) {
+    return datasource.columns
+      .map((col): [string, string] => [
+        col.column_name,
+        col.verbose_name || col.column_name,
+      ])
+      .sort((opt1, opt2) =>
+        opt1[1].toLowerCase() > opt2[1].toLowerCase() ? 1 : -1,
+      );
   }
-  return (
-    (datasource as QueryResponse)?.columns
+
+  if (isQueryResponse(datasource)) {
+    return ensureIsArray(datasource.columns)
       .map((col): [string, string] => [col.name, col.name])
       .sort((opt1, opt2) =>
         opt1[1].toLowerCase() > opt2[1].toLowerCase() ? 1 : -1,
-      ) || []
-  );
+      );
+  }
+
+  return [];
 }
diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/test/utils/defineSavedMetrics.test.tsx
 
b/superset-frontend/packages/superset-ui-chart-controls/test/utils/defineSavedMetrics.test.tsx
index 59036bf604..48b000ed17 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/test/utils/defineSavedMetrics.test.tsx
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/test/utils/defineSavedMetrics.test.tsx
@@ -26,30 +26,31 @@ import { defineSavedMetrics } from 
'@superset-ui/chart-controls';
 
 describe('defineSavedMetrics', () => {
   it('defines saved metrics if source is a Dataset', () => {
-    expect(
-      defineSavedMetrics({
-        id: 1,
-        metrics: [
-          {
-            metric_name: 'COUNT(*) non-default-dataset-metric',
-            expression: 'COUNT(*) non-default-dataset-metric',
-          },
-        ],
-        type: DatasourceType.Table,
-        main_dttm_col: 'test',
-        time_grain_sqla: 'P1D',
-        columns: [],
-        verbose_map: {},
-        column_format: {},
-        datasource_name: 'my_datasource',
-        description: 'this is my datasource',
-      }),
-    ).toEqual([
+    const dataset = {
+      id: 1,
+      metrics: [
+        {
+          metric_name: 'COUNT(*) non-default-dataset-metric',
+          expression: 'COUNT(*) non-default-dataset-metric',
+        },
+      ],
+      type: DatasourceType.Table,
+      main_dttm_col: 'test',
+      time_grain_sqla: 'P1D',
+      columns: [],
+      verbose_map: {},
+      column_format: {},
+      datasource_name: 'my_datasource',
+      description: 'this is my datasource',
+    };
+    expect(defineSavedMetrics(dataset)).toEqual([
       {
         metric_name: 'COUNT(*) non-default-dataset-metric',
         expression: 'COUNT(*) non-default-dataset-metric',
       },
     ]);
+    // @ts-ignore
+    expect(defineSavedMetrics({ ...dataset, metrics: undefined })).toEqual([]);
   });
 
   it('returns default saved metrics if souce is a Query', () => {
diff --git a/superset-frontend/packages/superset-ui-core/src/index.ts 
b/superset-frontend/packages/superset-ui-core/src/index.ts
index 2a53112f6f..4d3c4b7c95 100644
--- a/superset-frontend/packages/superset-ui-core/src/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/index.ts
@@ -22,7 +22,6 @@ export * from './utils';
 export * from './types';
 export * from './translation';
 export * from './connection';
-export * from './dashboard';
 export * from './dynamic-plugins';
 export * from './query';
 export * from './number-format';
diff --git 
a/superset-frontend/packages/superset-ui-core/src/dashboard/types/Base.ts 
b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts
similarity index 99%
rename from 
superset-frontend/packages/superset-ui-core/src/dashboard/types/Base.ts
rename to 
superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts
index af7ca34dde..4089512de4 100644
--- a/superset-frontend/packages/superset-ui-core/src/dashboard/types/Base.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/Dashboard.ts
@@ -127,3 +127,5 @@ export type DashboardComponentMetadata = {
   nativeFilters: NativeFiltersState;
   dataMask: DataMaskStateWithId;
 };
+
+export default {};
diff --git 
a/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts 
b/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
index d4b672a7a3..bcbedf536b 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/Query.ts
@@ -363,14 +363,14 @@ export const testQuery: Query = {
       is_dttm: false,
     },
     {
-      name: 'Column 2',
+      name: 'Column 3',
       type: DatasourceType.Query,
-      is_dttm: true,
+      is_dttm: false,
     },
     {
-      name: 'Column 3',
+      name: 'Column 2',
       type: DatasourceType.Query,
-      is_dttm: false,
+      is_dttm: true,
     },
   ],
 };
diff --git 
a/superset-frontend/packages/superset-ui-core/src/query/types/index.ts 
b/superset-frontend/packages/superset-ui-core/src/query/types/index.ts
index 2ee4427efd..9c4b17edd8 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/index.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/index.ts
@@ -27,6 +27,7 @@ export * from './QueryResponse';
 export * from './Time';
 export * from './AdvancedAnalytics';
 export * from './PostProcessing';
+export * from './Dashboard';
 
 export { default as __hack_reexport_Datasource } from './Datasource';
 export { default as __hack_reexport_Column } from './Column';
@@ -36,5 +37,6 @@ export { default as __hack_reexport_QueryResponse } from 
'./QueryResponse';
 export { default as __hack_reexport_QueryFormData } from './QueryFormData';
 export { default as __hack_reexport_Time } from './Time';
 export { default as __hack_reexport_AdvancedAnalytics } from 
'./AdvancedAnalytics';
+export { default as __hack_reexport_Dashboard } from './Dashboard';
 
 export default {};
diff --git a/superset-frontend/packages/superset-ui-core/src/index.ts 
b/superset-frontend/packages/superset-ui-core/test/query/types/Dashboard.test.ts
similarity index 54%
copy from superset-frontend/packages/superset-ui-core/src/index.ts
copy to 
superset-frontend/packages/superset-ui-core/test/query/types/Dashboard.test.ts
index 2a53112f6f..ea6236338c 100644
--- a/superset-frontend/packages/superset-ui-core/src/index.ts
+++ 
b/superset-frontend/packages/superset-ui-core/test/query/types/Dashboard.test.ts
@@ -16,23 +16,32 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+import {
+  isNativeFilter,
+  isFilterDivider,
+  Filter,
+  NativeFilterType,
+} from '@superset-ui/core';
 
-export * from './models';
-export * from './utils';
-export * from './types';
-export * from './translation';
-export * from './connection';
-export * from './dashboard';
-export * from './dynamic-plugins';
-export * from './query';
-export * from './number-format';
-export * from './time-format';
-export * from './dimension';
-export * from './color';
-export * from './style';
-export * from './validator';
-export * from './chart';
-export * from './chart-composition';
-export * from './components';
-export * from './math-expression';
-export * from './ui-overrides';
+test('should do native filter type guard', () => {
+  const dummyFilter: Filter = {
+    cascadeParentIds: [],
+    defaultDataMask: {},
+    id: 'dummyID',
+    name: 'dummyName',
+    scope: { rootPath: [], excluded: [] },
+    filterType: 'dummyType',
+    targets: [{}],
+    controlValues: {},
+    type: NativeFilterType.NATIVE_FILTER,
+    description: 'dummyDesc',
+  };
+  expect(isNativeFilter(dummyFilter)).toBeTruthy();
+  expect(
+    isFilterDivider({
+      ...dummyFilter,
+      type: NativeFilterType.DIVIDER,
+      title: 'dummyTitle',
+    }),
+  ).toBeTruthy();
+});
diff --git a/superset-frontend/packages/superset-ui-core/src/dashboard/index.ts 
b/superset-frontend/packages/superset-ui-core/test/ui-overrides/UiOverrideRegistry.test.ts
similarity index 80%
rename from superset-frontend/packages/superset-ui-core/src/dashboard/index.ts
rename to 
superset-frontend/packages/superset-ui-core/test/ui-overrides/UiOverrideRegistry.test.ts
index 10b785cba8..6e44055141 100644
--- a/superset-frontend/packages/superset-ui-core/src/dashboard/index.ts
+++ 
b/superset-frontend/packages/superset-ui-core/test/ui-overrides/UiOverrideRegistry.test.ts
@@ -16,5 +16,8 @@
  * specific language governing permissions and limitations
  * under the License.
  */
+import { getUiOverrideRegistry } from '@superset-ui/core';
 
-export * from './types/Base';
+test('should get instance of getUiOverrideRegistry', () => {
+  expect(getUiOverrideRegistry().name).toBe('UiOverrideRegistry');
+});

Reply via email to