diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/src/ReactDataTable.tsx b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/src/ReactDataTable.tsx index eb28f3df8ed9..e48ef61980f6 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/src/ReactDataTable.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/src/ReactDataTable.tsx @@ -66,7 +66,7 @@ export default function ReactDataTable(props: DataTableProps) { const metrics = (aggMetrics || []) .concat(percentMetrics || []) // actual records must be of numeric types as well - .filter(m => typeof data[0][m] === 'number'); + .filter(m => data[0] && typeof data[0][m] === 'number'); // check whethere a key is a metric const metricsSet = new Set(aggMetrics); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/ReactDataTable.test.tsx b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/ReactDataTable.test.tsx index 7b7fb3b76a51..10574f5af67f 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/ReactDataTable.test.tsx +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/ReactDataTable.test.tsx @@ -17,7 +17,7 @@ * under the License. */ import React from 'react'; -import { mount } from 'enzyme'; +import { mount, CommonWrapper } from 'enzyme'; import ReactDataTable from '../src/ReactDataTable'; import transformProps from '../src/transformProps'; import testData from './testData'; @@ -27,7 +27,7 @@ describe('legacy-table', () => { describe('transformProps', () => {}); describe('ReactDataTable', () => { - let wrap: any; // the ReactDataTable wraper + let wrap: CommonWrapper; // the ReactDataTable wraper it('render basic data', () => { wrap = mount(); @@ -53,5 +53,11 @@ describe('legacy-table', () => { expect(cells.eq(2).text()).toEqual('12.346%'); expect(cells.eq(4).text()).toEqual('2.47k'); }); + + it('render empty data', () => { + wrap.setProps(transformProps(testData.empty)); + const tree = wrap.render(); + expect(tree.text()).toContain('No data available in table'); + }); }); }); diff --git a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/testData.ts b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/testData.ts index fabb82d2051f..1205049ff2e7 100644 --- a/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/testData.ts +++ b/superset-frontend/temporary_superset_ui/superset-ui/plugins/superset-ui-plugins/packages/superset-ui-legacy-plugin-chart-table/test/testData.ts @@ -102,7 +102,19 @@ const advanced: ChartProps = { }, }; +const empty = { + ...advanced, + queryData: { + ...advanced.queryData, + data: { + ...advanced.queryData.data, + records: [], + }, + }, +}; + export default { basic, advanced, + empty, };