From 38667b72b1123f1075b9fdff80c38383317886ba Mon Sep 17 00:00:00 2001 From: Ville Brofeldt <33317356+villebro@users.noreply.github.com> Date: Wed, 24 Jun 2020 19:38:36 +0300 Subject: [PATCH] fix: refine shouldUseLegacyApi and add tests (#10148) * fix: refine shouldUseLegacyApi and add tests * address review comments --- .../spec/javascripts/explore/utils_spec.jsx | 43 +++++++++++++++++++ superset-frontend/src/explore/exploreUtils.js | 4 +- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/superset-frontend/spec/javascripts/explore/utils_spec.jsx b/superset-frontend/spec/javascripts/explore/utils_spec.jsx index c08f1d0363..b4821933d0 100644 --- a/superset-frontend/spec/javascripts/explore/utils_spec.jsx +++ b/superset-frontend/spec/javascripts/explore/utils_spec.jsx @@ -23,8 +23,10 @@ import { buildV1ChartDataPayload, getExploreUrl, getExploreLongUrl, + shouldUseLegacyApi, } from 'src/explore/exploreUtils'; import * as hostNamesConfig from 'src/utils/hostNamesConfig'; +import { getChartMetadataRegistry } from '@superset-ui/chart'; describe('exploreUtils', () => { const location = window.location; @@ -202,4 +204,45 @@ describe('exploreUtils', () => { expect(v1RequestPayload).hasOwnProperty('queries'); }); }); + + describe('shouldUseLegacyApi', () => { + beforeAll(() => { + getChartMetadataRegistry() + .registerValue('my_legacy_viz', { useLegacyApi: true }) + .registerValue('my_v1_viz', { useLegacyApi: false }); + }); + + afterAll(() => { + getChartMetadataRegistry().remove('my_legacy_viz').remove('my_v1_viz'); + }); + + it('returns true for legacy viz', () => { + const useLegacyApi = shouldUseLegacyApi({ + ...formData, + viz_type: 'my_legacy_viz', + }); + expect(useLegacyApi).toBe(true); + }); + + it('returns false for v1 viz', () => { + const useLegacyApi = shouldUseLegacyApi({ + ...formData, + viz_type: 'my_v1_viz', + }); + expect(useLegacyApi).toBe(false); + }); + + it('returns false for formData with unregistered viz_type', () => { + const useLegacyApi = shouldUseLegacyApi({ + ...formData, + viz_type: 'undefined_viz', + }); + expect(useLegacyApi).toBe(false); + }); + + it('returns false for formData without viz_type', () => { + const useLegacyApi = shouldUseLegacyApi(formData); + expect(useLegacyApi).toBe(false); + }); + }); }); diff --git a/superset-frontend/src/explore/exploreUtils.js b/superset-frontend/src/explore/exploreUtils.js index 5d7e2065bd..22dc534371 100644 --- a/superset-frontend/src/explore/exploreUtils.js +++ b/superset-frontend/src/explore/exploreUtils.js @@ -194,8 +194,8 @@ export function getExploreUrl({ } export const shouldUseLegacyApi = formData => { - const { useLegacyApi } = getChartMetadataRegistry().get(formData.viz_type); - return useLegacyApi || false; + const vizMetadata = getChartMetadataRegistry().get(formData.viz_type); + return vizMetadata ? vizMetadata.useLegacyApi : false; }; export const buildV1ChartDataPayload = ({