From 1fe0272b9f583f41da6ff6047acc69692436f5a8 Mon Sep 17 00:00:00 2001 From: Christopher Council Date: Mon, 17 Dec 2018 17:50:56 -0800 Subject: [PATCH 1/7] Update CONTRIBUTING.md Doc fixes --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3a4dbd048afb..e1575a30dd83 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -202,7 +202,7 @@ Make sure your machine meets the [OS dependencies](https://superset.incubator.ap ```bash # Create a virtual environemnt and activate it (recommended) -virtualenv -p python3 venv . # setup a python3.6 virtualenv +virtualenv -p python3 venv # setup a python3.6 virtualenv source venv/bin/activate # Install external dependencies From f55e1810b645a728f9e02ac45a48c98104ae9dbe Mon Sep 17 00:00:00 2001 From: chris_council Date: Thu, 3 Jan 2019 14:06:46 -0800 Subject: [PATCH 2/7] Part of fix for https://github.com/apache/incubator-superset/issues/6590, also depends on https://github.com/apache-superset/superset-ui/pull/71 --- superset/assets/package.json | 2 +- .../javascripts/sqllab/actions/sqlLab_spec.js | 20 +++++++++++++++++-- superset/assets/src/SqlLab/actions/sqlLab.js | 6 ++---- .../FilterableTable/FilterableTable.jsx | 3 ++- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/superset/assets/package.json b/superset/assets/package.json index 429723dc45c5..5a1ad725d9dc 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -53,7 +53,7 @@ "@data-ui/xy-chart": "^0.0.61", "@superset-ui/chart": "^0.7.0", "@superset-ui/color": "^0.7.0", - "@superset-ui/connection": "^0.5.0", + "@superset-ui/connection": "^0.7.3", "@superset-ui/core": "^0.7.0", "@superset-ui/number-format": "^0.7.2", "@superset-ui/time-format": "^0.7.2", diff --git a/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js b/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js index 7953d636d9f9..f92a8221f8df 100644 --- a/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js +++ b/superset/assets/spec/javascripts/sqllab/actions/sqlLab_spec.js @@ -6,6 +6,8 @@ import * as actions from '../../../../src/SqlLab/actions/sqlLab'; import { query } from '../fixtures'; describe('async actions', () => { + const mockBigNumber = '9223372036854775807'; + let dispatch; beforeEach(() => { @@ -42,7 +44,7 @@ describe('async actions', () => { describe('fetchQueryResults', () => { const fetchQueryEndpoint = 'glob:*/superset/results/*'; - fetchMock.get(fetchQueryEndpoint, '{ "data": "" }'); + fetchMock.get(fetchQueryEndpoint, '{ "data": ' + mockBigNumber + ' }'); const makeRequest = () => { const actionThunk = actions.fetchQueryResults(query); @@ -65,6 +67,13 @@ describe('async actions', () => { }); }); + it('parses large number result without losing precision', () => + makeRequest().then(() => { + expect(fetchMock.calls(fetchQueryEndpoint)).toHaveLength(1); + expect(dispatch.callCount).toBe(2); + expect(dispatch.getCall(1).lastArg.results.data.toString()).toBe(mockBigNumber); + })); + it('calls querySuccess on fetch success', () => makeRequest().then(() => { expect(dispatch.callCount).toBe(2); @@ -88,7 +97,7 @@ describe('async actions', () => { describe('runQuery', () => { const runQueryEndpoint = 'glob:*/superset/sql_json/*'; - fetchMock.post(runQueryEndpoint, { data: '' }); + fetchMock.post(runQueryEndpoint, '{ "data": ' + mockBigNumber + ' }'); const makeRequest = () => { const request = actions.runQuery(query); @@ -111,6 +120,13 @@ describe('async actions', () => { }); }); + it('parses large number result without losing precision', () => + makeRequest().then(() => { + expect(fetchMock.calls(runQueryEndpoint)).toHaveLength(1); + expect(dispatch.callCount).toBe(2); + expect(dispatch.getCall(1).lastArg.results.data.toString()).toBe(mockBigNumber); + })); + it('calls querySuccess on fetch success', () => { expect.assertions(3); diff --git a/superset/assets/src/SqlLab/actions/sqlLab.js b/superset/assets/src/SqlLab/actions/sqlLab.js index 084aaea80fa4..5c52379b3c27 100644 --- a/superset/assets/src/SqlLab/actions/sqlLab.js +++ b/superset/assets/src/SqlLab/actions/sqlLab.js @@ -111,11 +111,9 @@ export function fetchQueryResults(query) { return SupersetClient.get({ endpoint: `/superset/results/${query.resultsKey}/`, - parseMethod: 'text', }) - .then(({ text = '{}' }) => { - const bigIntJson = JSONbig.parse(text); - dispatch(querySuccess(query, bigIntJson)); + .then(({ json = {} }) => { + dispatch(querySuccess(query, json)); }) .catch(response => getClientErrorObject(response).then((error) => { diff --git a/superset/assets/src/components/FilterableTable/FilterableTable.jsx b/superset/assets/src/components/FilterableTable/FilterableTable.jsx index 307d97c3d5eb..4105ff65b0d6 100644 --- a/superset/assets/src/components/FilterableTable/FilterableTable.jsx +++ b/superset/assets/src/components/FilterableTable/FilterableTable.jsx @@ -1,5 +1,6 @@ import { List } from 'immutable'; import PropTypes from 'prop-types'; +import JSONbig from 'json-bigint'; import React, { PureComponent } from 'react'; import { Column, @@ -85,7 +86,7 @@ export default class FilterableTable extends PureComponent { if (['string', 'number'].indexOf(typeof (val)) >= 0) { newRow[k] = val; } else { - newRow[k] = JSON.stringify(val); + newRow[k] = JSONbig.stringify(val); } } return newRow; From cfe048ce18690e602e591b839f9c49c1ffad9f78 Mon Sep 17 00:00:00 2001 From: chris_council Date: Tue, 8 Jan 2019 18:27:58 -0800 Subject: [PATCH 3/7] Bumped version of superset-ui-connector --- superset/assets/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/assets/package.json b/superset/assets/package.json index 5a1ad725d9dc..578bf4fb74ad 100644 --- a/superset/assets/package.json +++ b/superset/assets/package.json @@ -53,7 +53,7 @@ "@data-ui/xy-chart": "^0.0.61", "@superset-ui/chart": "^0.7.0", "@superset-ui/color": "^0.7.0", - "@superset-ui/connection": "^0.7.3", + "@superset-ui/connection": "^0.8.0", "@superset-ui/core": "^0.7.0", "@superset-ui/number-format": "^0.7.2", "@superset-ui/time-format": "^0.7.2", From 81f721d3144215c1522d3281bd41b9f4bf2b5db3 Mon Sep 17 00:00:00 2001 From: chris_council Date: Wed, 9 Jan 2019 09:04:59 -0800 Subject: [PATCH 4/7] Updated package-lock,json --- superset/assets/package-lock.json | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/superset/assets/package-lock.json b/superset/assets/package-lock.json index c7bbc232854c..9c843010a962 100644 --- a/superset/assets/package-lock.json +++ b/superset/assets/package-lock.json @@ -2217,17 +2217,18 @@ } }, "@superset-ui/connection": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@superset-ui/connection/-/connection-0.5.0.tgz", - "integrity": "sha512-neac60ghZfDoDdOdNPbWO7D/xGhbkjHno9ii3HD2sgs/WQWLL25IzS/yPYVzQ7ZVrtPYPYxBiXizp/mFzqq2Yg==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@superset-ui/connection/-/connection-0.8.0.tgz", + "integrity": "sha512-wxKXvG38D4fTv+10693yPMQHsTA7Q+X4n8QHiai+3e2ka/bI72tv/wHSyc0MH1C5C/YVI1TNGfsg4qi6rlePIw==", "requires": { "@babel/runtime": "^7.1.2", + "json-bigint": "^0.3.0", "whatwg-fetch": "^2.0.4" }, "dependencies": { "whatwg-fetch": { "version": "2.0.4", - "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" } } From c22077ff253ab68666e01ec0572f0eba683f24c6 Mon Sep 17 00:00:00 2001 From: chris_council Date: Wed, 9 Jan 2019 09:21:45 -0800 Subject: [PATCH 5/7] Removed unused import (linting issue) --- superset/assets/src/SqlLab/actions/sqlLab.js | 1 - 1 file changed, 1 deletion(-) diff --git a/superset/assets/src/SqlLab/actions/sqlLab.js b/superset/assets/src/SqlLab/actions/sqlLab.js index 5c52379b3c27..0a380eb36465 100644 --- a/superset/assets/src/SqlLab/actions/sqlLab.js +++ b/superset/assets/src/SqlLab/actions/sqlLab.js @@ -1,5 +1,4 @@ import shortid from 'shortid'; -import JSONbig from 'json-bigint'; import { t } from '@superset-ui/translation'; import { SupersetClient } from '@superset-ui/connection'; From 7fb2bc2a3a565a8921f92764b213b11f2b6dc0a1 Mon Sep 17 00:00:00 2001 From: chris_council Date: Wed, 9 Jan 2019 11:31:14 -0800 Subject: [PATCH 6/7] Added @babel/polyfill import --- superset/assets/spec/helpers/shim.js | 1 + 1 file changed, 1 insertion(+) diff --git a/superset/assets/spec/helpers/shim.js b/superset/assets/spec/helpers/shim.js index 2d21b3f1453d..73a981241844 100644 --- a/superset/assets/spec/helpers/shim.js +++ b/superset/assets/spec/helpers/shim.js @@ -1,4 +1,5 @@ /* eslint no-native-reassign: 0 */ +import '@babel/polyfill'; import 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'; import jsdom from 'jsdom'; import { configure } from 'enzyme'; From e9acd3cae8e4fe8a480737d0e12265878ef14d26 Mon Sep 17 00:00:00 2001 From: chris_council Date: Wed, 9 Jan 2019 12:23:37 -0800 Subject: [PATCH 7/7] Reset mock history before each test, not after each test --- .../assets/spec/javascripts/welcome/DashboardTable_spec.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx index 4f60cddab07a..852df7c6cdd1 100644 --- a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx +++ b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx @@ -25,7 +25,7 @@ function setup() { } describe('DashboardTable', () => { - afterEach(fetchMock.resetHistory); + beforeEach(fetchMock.resetHistory); it('renders a Loading initially', () => { const wrapper = setup();