diff --git a/superset/assets/.eslintrc b/superset/assets/.eslintrc
index e49a4e0f1bb..c85c957c79c 100644
--- a/superset/assets/.eslintrc
+++ b/superset/assets/.eslintrc
@@ -6,8 +6,8 @@
"experimentalObjectRestSpread": true
}
},
- "globals": {
- "document": true,
+ "env": {
+ "browser": true
},
"rules": {
"prefer-template": 0,
@@ -26,7 +26,6 @@
"no-mixed-operators": 0,
"no-continue": 0,
"no-bitwise": 0,
- "no-undef": 0,
"no-multi-assign": 0,
"react/no-array-index-key": 0,
"no-restricted-properties": 0,
diff --git a/superset/assets/cypress/.eslintrc b/superset/assets/cypress/.eslintrc
new file mode 100644
index 00000000000..5b988562725
--- /dev/null
+++ b/superset/assets/cypress/.eslintrc
@@ -0,0 +1,8 @@
+{
+ "plugins": [
+ "cypress"
+ ],
+ "env": {
+ "cypress/globals": true
+ }
+}
diff --git a/superset/assets/cypress/integration/dashboard/dashboard_tests.js b/superset/assets/cypress/integration/dashboard/dashboard_tests.js
index 10e4f1132f3..31ce7044558 100644
--- a/superset/assets/cypress/integration/dashboard/dashboard_tests.js
+++ b/superset/assets/cypress/integration/dashboard/dashboard_tests.js
@@ -1,5 +1,5 @@
-describe('Load dashboard', function () {
- it('Load birth names dashboard', function () {
+describe('Load dashboard', () => {
+ it('Load birth names dashboard', () => {
cy.server();
cy.login();
diff --git a/superset/assets/cypress/integration/explore/control_tests.js b/superset/assets/cypress/integration/explore/control_tests.js
index 1c95f04cd35..a742d6d0a90 100644
--- a/superset/assets/cypress/integration/explore/control_tests.js
+++ b/superset/assets/cypress/integration/explore/control_tests.js
@@ -2,8 +2,8 @@
// Tests for setting controls in the UI
// ***********************************************
-describe('Groupby', function () {
- it('Set groupby', function () {
+describe('Groupby', () => {
+ it('Set groupby', () => {
cy.server();
cy.login();
@@ -21,8 +21,8 @@ describe('Groupby', function () {
});
});
-describe('SimpleAdhocMetric', function () {
- it('Clear metric and set simple adhoc metric', function () {
+describe('SimpleAdhocMetric', () => {
+ it('Clear metric and set simple adhoc metric', () => {
cy.server();
cy.login();
@@ -36,7 +36,9 @@ describe('SimpleAdhocMetric', function () {
cy.get('.select-clear').click();
cy.get('.Select-control').click({ force: true });
cy.get('input').type('sum_girls', { force: true });
- cy.get('.VirtualizedSelectFocusedOption').trigger('mousedown').click();
+ cy.get('.VirtualizedSelectFocusedOption')
+ .trigger('mousedown')
+ .click();
});
cy.get('#metrics-edit-popover').within(() => {
@@ -44,7 +46,9 @@ describe('SimpleAdhocMetric', function () {
cy.get('span').click();
cy.get('input').type(metricName);
});
- cy.get('button').contains('Save').click();
+ cy.get('button')
+ .contains('Save')
+ .click();
});
cy.get('button.query').click();
@@ -56,4 +60,3 @@ describe('SimpleAdhocMetric', function () {
});
});
});
-
diff --git a/superset/assets/cypress/integration/explore/visualizations/big_number.js b/superset/assets/cypress/integration/explore/visualizations/big_number.js
index 1ee49eb2768..c6bca9e0e51 100644
--- a/superset/assets/cypress/integration/explore/visualizations/big_number.js
+++ b/superset/assets/cypress/integration/explore/visualizations/big_number.js
@@ -2,10 +2,10 @@ import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
// Big Number Total
-describe('Big Number Total', function () {
+describe('Big Number Total', () => {
const BIG_NUMBER_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'big_number_total' };
- it('Test big number chart with adhoc metric', function () {
+ it('Test big number chart with adhoc metric', () => {
cy.server();
cy.login();
@@ -16,20 +16,22 @@ describe('Big Number Total', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', querySubstring: NUM_METRIC.label });
});
- it('Test big number chart with simple filter', function () {
+ it('Test big number chart with simple filter', () => {
cy.server();
cy.login();
- const filters = [{
- expressionType: 'SIMPLE',
- subject: 'name',
- operator: 'in',
- comparator: ['Aaron', 'Amy', 'Andrea'],
- clause: 'WHERE',
- sqlExpression: null,
- fromFormData: true,
- filterOptionName: 'filter_4y6teao56zs_ebjsvwy48c',
- }];
+ const filters = [
+ {
+ expressionType: 'SIMPLE',
+ subject: 'name',
+ operator: 'in',
+ comparator: ['Aaron', 'Amy', 'Andrea'],
+ clause: 'WHERE',
+ sqlExpression: null,
+ fromFormData: true,
+ filterOptionName: 'filter_4y6teao56zs_ebjsvwy48c',
+ },
+ ];
const formData = { ...BIG_NUMBER_DEFAULTS, metric: 'count', adhoc_filters: filters };
@@ -38,7 +40,7 @@ describe('Big Number Total', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson' });
});
- it('Test big number chart ignores groupby', function () {
+ it('Test big number chart ignores groupby', () => {
cy.server();
cy.login();
diff --git a/superset/assets/cypress/integration/explore/visualizations/line.js b/superset/assets/cypress/integration/explore/visualizations/line.js
index 7bac091a863..dc4e7d4bc87 100644
--- a/superset/assets/cypress/integration/explore/visualizations/line.js
+++ b/superset/assets/cypress/integration/explore/visualizations/line.js
@@ -1,9 +1,9 @@
import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
-describe('Line', function () {
+describe('Line', () => {
const LINE_CHART_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'line' };
- it('Test line chart with adhoc metric', function () {
+ it('Test line chart with adhoc metric', () => {
cy.server();
cy.login();
@@ -14,7 +14,7 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with groupby', function () {
+ it('Test line chart with groupby', () => {
cy.server();
cy.login();
@@ -28,21 +28,23 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with simple filter', function () {
+ it('Test line chart with simple filter', () => {
cy.server();
cy.login();
const metrics = ['count'];
- const filters = [{
- expressionType: 'SIMPLE',
- subject: 'name',
- operator: 'in',
- comparator: ['Aaron', 'Amy', 'Andrea'],
- clause: 'WHERE',
- sqlExpression: null,
- fromFormData: true,
- filterOptionName: 'filter_4y6teao56zs_ebjsvwy48c',
- }];
+ const filters = [
+ {
+ expressionType: 'SIMPLE',
+ subject: 'name',
+ operator: 'in',
+ comparator: ['Aaron', 'Amy', 'Andrea'],
+ clause: 'WHERE',
+ sqlExpression: null,
+ fromFormData: true,
+ filterOptionName: 'filter_4y6teao56zs_ebjsvwy48c',
+ },
+ ];
const formData = { ...LINE_CHART_DEFAULTS, metrics, adhoc_filters: filters };
@@ -51,7 +53,7 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with series limit sort asc', function () {
+ it('Test line chart with series limit sort asc', () => {
cy.server();
cy.login();
@@ -68,7 +70,7 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with series limit sort desc', function () {
+ it('Test line chart with series limit sort desc', () => {
cy.server();
cy.login();
@@ -86,7 +88,7 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with rolling avg', function () {
+ it('Test line chart with rolling avg', () => {
cy.server();
cy.login();
@@ -99,39 +101,54 @@ describe('Line', function () {
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with time shift 1 year', function () {
+ it('Test line chart with time shift 1 year', () => {
cy.server();
cy.login();
const metrics = [NUM_METRIC];
- const formData = { ...LINE_CHART_DEFAULTS, metrics, time_compare: ['1+year'], comparison_type: 'values' };
+ const formData = {
+ ...LINE_CHART_DEFAULTS,
+ metrics,
+ time_compare: ['1+year'],
+ comparison_type: 'values',
+ };
cy.route('POST', '/superset/explore_json/**').as('getJson');
cy.visitChartByParams(JSON.stringify(formData));
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with time shift yoy', function () {
+ it('Test line chart with time shift yoy', () => {
cy.server();
cy.login();
const metrics = [NUM_METRIC];
- const formData = { ...LINE_CHART_DEFAULTS, metrics, time_compare: ['1+year'], comparison_type: 'ratio' };
+ const formData = {
+ ...LINE_CHART_DEFAULTS,
+ metrics,
+ time_compare: ['1+year'],
+ comparison_type: 'ratio',
+ };
cy.route('POST', '/superset/explore_json/**').as('getJson');
cy.visitChartByParams(JSON.stringify(formData));
cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
});
- it('Test line chart with time shift percentage change', function () {
+ it('Test line chart with time shift percentage change', () => {
cy.server();
cy.login();
const metrics = [NUM_METRIC];
- const formData = { ...LINE_CHART_DEFAULTS, metrics, time_compare: ['1+year'], comparison_type: 'percentage' };
+ const formData = {
+ ...LINE_CHART_DEFAULTS,
+ metrics,
+ time_compare: ['1+year'],
+ comparison_type: 'percentage',
+ };
cy.route('POST', '/superset/explore_json/**').as('getJson');
cy.visitChartByParams(JSON.stringify(formData));
diff --git a/superset/assets/package.json b/superset/assets/package.json
index 11b2b77f4b8..d5571e08bb9 100644
--- a/superset/assets/package.json
+++ b/superset/assets/package.json
@@ -150,6 +150,7 @@
"eslint": "^4.19.0",
"eslint-config-airbnb": "^15.0.1",
"eslint-config-prettier": "^2.9.0",
+ "eslint-plugin-cypress": "^2.0.1",
"eslint-plugin-import": "^2.2.0",
"eslint-plugin-jsx-a11y": "^5.1.1",
"eslint-plugin-prettier": "^2.6.0",
diff --git a/superset/assets/spec/.eslintrc b/superset/assets/spec/.eslintrc
index d9889afc005..5b4214b0d60 100644
--- a/superset/assets/spec/.eslintrc
+++ b/superset/assets/spec/.eslintrc
@@ -1,4 +1,7 @@
{
+ "env": {
+ "mocha": true
+ },
"rules": {
"import/no-extraneous-dependencies": ["error", {"devDependencies": true}]
}
diff --git a/superset/assets/spec/helpers/shim.js b/superset/assets/spec/helpers/shim.js
index 0d48341b400..6decdc96b21 100644
--- a/superset/assets/spec/helpers/shim.js
+++ b/superset/assets/spec/helpers/shim.js
@@ -1,4 +1,4 @@
-/* eslint no-undef: 0, no-native-reassign: 0 */
+/* eslint no-native-reassign: 0 */
import 'babel-polyfill';
import chai from 'chai';
import jsdom from 'jsdom';
@@ -55,4 +55,3 @@ global.window.XMLHttpRequest = global.XMLHttpRequest;
global.window.location = { href: 'about:blank' };
global.window.performance = { now: () => new Date().getTime() };
global.$ = require('jquery')(global.window);
-
diff --git a/superset/assets/spec/javascripts/CRUD/CollectionTable_spec.jsx b/superset/assets/spec/javascripts/CRUD/CollectionTable_spec.jsx
index 69556888516..20bc359dc61 100644
--- a/superset/assets/spec/javascripts/CRUD/CollectionTable_spec.jsx
+++ b/superset/assets/spec/javascripts/CRUD/CollectionTable_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import CollectionTable from '../../../src/CRUD/CollectionTable';
diff --git a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
index 96ed0895997..de242ba999d 100644
--- a/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
+++ b/superset/assets/spec/javascripts/addSlice/AddSliceContainer_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Button } from 'react-bootstrap';
import Select from 'react-virtualized-select';
diff --git a/superset/assets/spec/javascripts/chart/Chart_spec.jsx b/superset/assets/spec/javascripts/chart/Chart_spec.jsx
index d1e3f373c7a..e5c0bb9843c 100644
--- a/superset/assets/spec/javascripts/chart/Chart_spec.jsx
+++ b/superset/assets/spec/javascripts/chart/Chart_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx b/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
index 867006993e8..316ac34774f 100644
--- a/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
+++ b/superset/assets/spec/javascripts/components/AlteredSliceTag_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { Table, Thead, Td, Th, Tr } from 'reactable';
diff --git a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
index 98d8b517c0e..7401eae54cd 100644
--- a/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
+++ b/superset/assets/spec/javascripts/components/AsyncSelect_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import Select from 'react-select';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx b/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
index 8a7f74abcdb..8358b49e97d 100644
--- a/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/components/CachedLabel_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/components/Checkbox_spec.jsx b/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
index b53fbfab537..8b74d12589b 100644
--- a/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
+++ b/superset/assets/spec/javascripts/components/Checkbox_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import sinon from 'sinon';
import { shallow } from 'enzyme';
diff --git a/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx b/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
index 1c531a1ff19..04529e1240d 100644
--- a/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ColumnOption_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ColumnOption from '../../../src/components/ColumnOption';
diff --git a/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx b/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
index 9e3cfe82a3c..587469f5c68 100644
--- a/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ColumnTypeLabel_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ColumnTypeLabel from '../../../src/components/ColumnTypeLabel';
diff --git a/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx b/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
index 84357d799e1..f8a042610b6 100644
--- a/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
+++ b/superset/assets/spec/javascripts/components/CopyToClipboard_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import CopyToClipboard from '../../../src/components/CopyToClipboard';
diff --git a/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx b/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
index 81c8f15016e..5232d8ab8c0 100644
--- a/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
+++ b/superset/assets/spec/javascripts/components/FilterableTable/FilterableTable_spec.jsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { mount } from 'enzyme';
import FilterableTable from '../../../../src/components/FilterableTable/FilterableTable';
diff --git a/superset/assets/spec/javascripts/components/MetricOption_spec.jsx b/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
index 7af2cebd609..3fd923000d7 100644
--- a/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
+++ b/superset/assets/spec/javascripts/components/MetricOption_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import MetricOption from '../../../src/components/MetricOption';
diff --git a/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx b/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
index 6f132a9bcc3..41adf12af7b 100644
--- a/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
+++ b/superset/assets/spec/javascripts/components/ModalTrigger_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import ModalTrigger from '../../../src/components/ModalTrigger';
diff --git a/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx b/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
index 278a1ac24a1..43b5a268312 100644
--- a/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
+++ b/superset/assets/spec/javascripts/components/OnPasteSelect_spec.jsx
@@ -3,7 +3,6 @@ import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import VirtualizedSelect from 'react-virtualized-select';
import Select, { Creatable } from 'react-select';
diff --git a/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx b/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
index cf45332ebb9..4b818e108bd 100644
--- a/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
+++ b/superset/assets/spec/javascripts/components/OptionDescription_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import InfoTooltipWithTrigger from '../../../src/components/InfoTooltipWithTrigger';
diff --git a/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx b/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
index e5a17b75c1c..33826fecbbb 100644
--- a/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
+++ b/superset/assets/spec/javascripts/components/PopoverSection_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import PopoverSection from '../../../src/components/PopoverSection';
diff --git a/superset/assets/spec/javascripts/components/URLShortLinkButton_spec.jsx b/superset/assets/spec/javascripts/components/URLShortLinkButton_spec.jsx
index 1aa0074ccf9..67edd08ca63 100644
--- a/superset/assets/spec/javascripts/components/URLShortLinkButton_spec.jsx
+++ b/superset/assets/spec/javascripts/components/URLShortLinkButton_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import configureStore from 'redux-mock-store';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/components/URLShortLinkModal_spec.jsx b/superset/assets/spec/javascripts/components/URLShortLinkModal_spec.jsx
index 494d0d390a0..6311262da63 100644
--- a/superset/assets/spec/javascripts/components/URLShortLinkModal_spec.jsx
+++ b/superset/assets/spec/javascripts/components/URLShortLinkModal_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import configureStore from 'redux-mock-store';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import URLShortLinkModal from '../../../src/components/URLShortLinkModal';
diff --git a/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx b/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
index e793fef2c48..a854f7eb27f 100644
--- a/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
+++ b/superset/assets/spec/javascripts/components/VirtualizedRendererWrap_spec.jsx
@@ -3,7 +3,6 @@ import React from 'react';
import sinon from 'sinon';
import PropTypes from 'prop-types';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import VirtualizedRendererWrap from '../../../src/components/VirtualizedRendererWrap';
diff --git a/superset/assets/spec/javascripts/dashboard/.eslintrc b/superset/assets/spec/javascripts/dashboard/.eslintrc
index a3f86e3a17a..36759a20b1e 100644
--- a/superset/assets/spec/javascripts/dashboard/.eslintrc
+++ b/superset/assets/spec/javascripts/dashboard/.eslintrc
@@ -17,7 +17,6 @@
"no-mixed-operators": 0,
"no-continue": 2,
"no-bitwise": 2,
- "no-undef": 2,
"no-multi-assign": 2,
"no-restricted-properties": 2,
"no-prototype-builtins": 2,
diff --git a/superset/assets/spec/javascripts/dashboard/actions/dashboardLayout_spec.js b/superset/assets/spec/javascripts/dashboard/actions/dashboardLayout_spec.js
index e58bb11a48b..5be11913d2c 100644
--- a/superset/assets/spec/javascripts/dashboard/actions/dashboardLayout_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/actions/dashboardLayout_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/CodeModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/CodeModal_spec.jsx
index d316dc3d385..094e1ee65b3 100644
--- a/superset/assets/spec/javascripts/dashboard/components/CodeModal_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/CodeModal_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import CodeModal from '../../../../src/dashboard/components/CodeModal';
diff --git a/superset/assets/spec/javascripts/dashboard/components/CssEditor_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/CssEditor_spec.jsx
index 8c991fa489c..d630fe91698 100644
--- a/superset/assets/spec/javascripts/dashboard/components/CssEditor_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/CssEditor_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import CssEditor from '../../../../src/dashboard/components/CssEditor';
diff --git a/superset/assets/spec/javascripts/dashboard/components/DashboardBuilder_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/DashboardBuilder_spec.jsx
index 4c3185fecde..7215e0859b5 100644
--- a/superset/assets/spec/javascripts/dashboard/components/DashboardBuilder_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/DashboardBuilder_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { shallow, mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import ParentSize from '@vx/responsive/build/components/ParentSize';
diff --git a/superset/assets/spec/javascripts/dashboard/components/DashboardGrid_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/DashboardGrid_spec.jsx
index d11c37f3315..83f97608457 100644
--- a/superset/assets/spec/javascripts/dashboard/components/DashboardGrid_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/DashboardGrid_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/Dashboard_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/Dashboard_spec.jsx
index aa6446315bd..76ff38872c6 100644
--- a/superset/assets/spec/javascripts/dashboard/components/Dashboard_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/Dashboard_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
index 673118bd3b7..199b3d21262 100644
--- a/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/HeaderActionsDropdown_spec.jsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import { DropdownButton, MenuItem } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/dashboard/components/Header_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/Header_spec.jsx
index e7ecfc142c9..28153bb3ecb 100644
--- a/superset/assets/spec/javascripts/dashboard/components/Header_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/Header_spec.jsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import Header from '../../../../src/dashboard/components/Header';
diff --git a/superset/assets/spec/javascripts/dashboard/components/MissingChart_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/MissingChart_spec.jsx
index 92a18c10c9e..e43f1147a17 100644
--- a/superset/assets/spec/javascripts/dashboard/components/MissingChart_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/MissingChart_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import Loading from '../../../../src/components/Loading';
diff --git a/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
index 564857c0887..7df757589be 100644
--- a/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/RefreshIntervalModal_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import RefreshIntervalModal from '../../../../src/dashboard/components/RefreshIntervalModal';
diff --git a/superset/assets/spec/javascripts/dashboard/components/SliceAdder_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/SliceAdder_spec.jsx
index da0f7df7544..704eb52732d 100644
--- a/superset/assets/spec/javascripts/dashboard/components/SliceAdder_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/SliceAdder_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it, beforeEach, afterEach } from 'mocha';
import sinon from 'sinon';
import { expect } from 'chai';
diff --git a/superset/assets/spec/javascripts/dashboard/components/dnd/DragDroppable_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/dnd/DragDroppable_spec.jsx
index c7e2c2a8d36..b45e9d8ac36 100644
--- a/superset/assets/spec/javascripts/dashboard/components/dnd/DragDroppable_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/dnd/DragDroppable_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow, mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/ChartHolder_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/ChartHolder_spec.jsx
index 821b6371f70..a2e50e8d2cf 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/ChartHolder_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/ChartHolder_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx
index dbd70540c4c..db8b45af573 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Chart_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Column_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Column_spec.jsx
index e97414b65e2..a0fbffde0d5 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Column_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Column_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Divider_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Divider_spec.jsx
index c8317f8459f..05425324f33 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Divider_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Divider_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Header_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Header_spec.jsx
index 1d547756a89..f21f1067497 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Header_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Header_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Markdown_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Markdown_spec.jsx
index 9046089ee3c..f3aceee5b42 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Markdown_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Markdown_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import AceEditor from 'react-ace';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Row_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Row_spec.jsx
index a718ff406a1..54037c770ff 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Row_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Row_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tab_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tab_spec.jsx
index fae59b2590e..1162e84261f 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tab_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tab_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tabs_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tabs_spec.jsx
index d521fe50457..16f4360c3d3 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tabs_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/Tabs_spec.jsx
@@ -1,7 +1,6 @@
import { Provider } from 'react-redux';
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import { Tabs as BootstrapTabs, Tab as BootstrapTab } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/DraggableNewComponent_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/DraggableNewComponent_spec.jsx
index 4334b37ca45..9e2993ad677 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/DraggableNewComponent_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/DraggableNewComponent_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DragDroppable from '../../../../../../src/dashboard/components/dnd/DragDroppable';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewColumn_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewColumn_spec.jsx
index cb07cb988a4..240cf5ea8a3 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewColumn_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewColumn_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DraggableNewComponent from '../../../../../../src/dashboard/components/gridComponents/new/DraggableNewComponent';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewDivider_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewDivider_spec.jsx
index 71703b3900f..af96f6045ea 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewDivider_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewDivider_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DraggableNewComponent from '../../../../../../src/dashboard/components/gridComponents/new/DraggableNewComponent';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewHeader_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewHeader_spec.jsx
index a499fe8f6e8..5f2194c62de 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewHeader_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewHeader_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DraggableNewComponent from '../../../../../../src/dashboard/components/gridComponents/new/DraggableNewComponent';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewRow_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewRow_spec.jsx
index e91893d489d..b86d1674bb9 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewRow_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewRow_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DraggableNewComponent from '../../../../../../src/dashboard/components/gridComponents/new/DraggableNewComponent';
diff --git a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewTabs_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewTabs_spec.jsx
index 4e71c8ca426..edd13b76d0e 100644
--- a/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewTabs_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/gridComponents/new/NewTabs_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import DraggableNewComponent from '../../../../../../src/dashboard/components/gridComponents/new/DraggableNewComponent';
diff --git a/superset/assets/spec/javascripts/dashboard/components/menu/HoverMenu_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/menu/HoverMenu_spec.jsx
index 1f850857437..3d0fca7c8ed 100644
--- a/superset/assets/spec/javascripts/dashboard/components/menu/HoverMenu_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/menu/HoverMenu_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import HoverMenu from '../../../../../src/dashboard/components/menu/HoverMenu';
diff --git a/superset/assets/spec/javascripts/dashboard/components/menu/WithPopoverMenu_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/menu/WithPopoverMenu_spec.jsx
index 5add770a8cf..d382d252e1d 100644
--- a/superset/assets/spec/javascripts/dashboard/components/menu/WithPopoverMenu_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/menu/WithPopoverMenu_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import WithPopoverMenu from '../../../../../src/dashboard/components/menu/WithPopoverMenu';
diff --git a/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableContainer_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableContainer_spec.jsx
index 69fca76f692..be4ae7c2831 100644
--- a/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableContainer_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableContainer_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import Resizable from 're-resizable';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import ResizableContainer from '../../../../../src/dashboard/components/resizable/ResizableContainer';
diff --git a/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableHandle_spec.jsx b/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableHandle_spec.jsx
index 0c37855d25d..66e42860e73 100644
--- a/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableHandle_spec.jsx
+++ b/superset/assets/spec/javascripts/dashboard/components/resizable/ResizableHandle_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import ResizableHandle from '../../../../../src/dashboard/components/resizable/ResizableHandle';
diff --git a/superset/assets/spec/javascripts/dashboard/reducers/dashboardLayout_spec.js b/superset/assets/spec/javascripts/dashboard/reducers/dashboardLayout_spec.js
index dd933ac5726..1b805e0d6b8 100644
--- a/superset/assets/spec/javascripts/dashboard/reducers/dashboardLayout_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/reducers/dashboardLayout_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import layoutReducer from '../../../../src/dashboard/reducers/dashboardLayout';
diff --git a/superset/assets/spec/javascripts/dashboard/reducers/dashboardState_spec.js b/superset/assets/spec/javascripts/dashboard/reducers/dashboardState_spec.js
index 7772f710155..a8e3dbd86ea 100644
--- a/superset/assets/spec/javascripts/dashboard/reducers/dashboardState_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/reducers/dashboardState_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import {
diff --git a/superset/assets/spec/javascripts/dashboard/reducers/sliceEntities_spec.js b/superset/assets/spec/javascripts/dashboard/reducers/sliceEntities_spec.js
index 7e3bb76bc12..df43ae591d5 100644
--- a/superset/assets/spec/javascripts/dashboard/reducers/sliceEntities_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/reducers/sliceEntities_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import {
diff --git a/superset/assets/spec/javascripts/dashboard/util/componentIsResizable_spec.js b/superset/assets/spec/javascripts/dashboard/util/componentIsResizable_spec.js
index b49a91f7bb2..e8986be49d5 100644
--- a/superset/assets/spec/javascripts/dashboard/util/componentIsResizable_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/componentIsResizable_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import componentIsResizable from '../../../../src/dashboard/util/componentIsResizable';
diff --git a/superset/assets/spec/javascripts/dashboard/util/dnd-reorder_spec.js b/superset/assets/spec/javascripts/dashboard/util/dnd-reorder_spec.js
index 4ff6a52bcc7..7169229be76 100644
--- a/superset/assets/spec/javascripts/dashboard/util/dnd-reorder_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/dnd-reorder_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import reorderItem from '../../../../src/dashboard/util/dnd-reorder';
diff --git a/superset/assets/spec/javascripts/dashboard/util/dropOverflowsParent_spec.js b/superset/assets/spec/javascripts/dashboard/util/dropOverflowsParent_spec.js
index 8e6f88964c6..3fc7d0250e2 100644
--- a/superset/assets/spec/javascripts/dashboard/util/dropOverflowsParent_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/dropOverflowsParent_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import dropOverflowsParent from '../../../../src/dashboard/util/dropOverflowsParent';
diff --git a/superset/assets/spec/javascripts/dashboard/util/findFirstParentContainer_spec.js b/superset/assets/spec/javascripts/dashboard/util/findFirstParentContainer_spec.js
index ecaca676640..372f4cb93a7 100644
--- a/superset/assets/spec/javascripts/dashboard/util/findFirstParentContainer_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/findFirstParentContainer_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import findFirstParentContainerId from '../../../../src/dashboard/util/findFirstParentContainer';
diff --git a/superset/assets/spec/javascripts/dashboard/util/findParentId_spec.js b/superset/assets/spec/javascripts/dashboard/util/findParentId_spec.js
index 71c8aece17d..2ff15b23e32 100644
--- a/superset/assets/spec/javascripts/dashboard/util/findParentId_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/findParentId_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import findParentId from '../../../../src/dashboard/util/findParentId';
diff --git a/superset/assets/spec/javascripts/dashboard/util/getChartIdsFromLayout_spec.js b/superset/assets/spec/javascripts/dashboard/util/getChartIdsFromLayout_spec.js
index 71bbccd59a2..3674ac5faf8 100644
--- a/superset/assets/spec/javascripts/dashboard/util/getChartIdsFromLayout_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/getChartIdsFromLayout_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import getChartIdsFromLayout from '../../../../src/dashboard/util/getChartIdsFromLayout';
diff --git a/superset/assets/spec/javascripts/dashboard/util/getDashboardUrl_spec.js b/superset/assets/spec/javascripts/dashboard/util/getDashboardUrl_spec.js
index c45e65a02a3..cf58c78364d 100644
--- a/superset/assets/spec/javascripts/dashboard/util/getDashboardUrl_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/getDashboardUrl_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import getDashboardUrl from '../../../../src/dashboard/util/getDashboardUrl';
diff --git a/superset/assets/spec/javascripts/dashboard/util/getDetailedComponentWidth_spec.js b/superset/assets/spec/javascripts/dashboard/util/getDetailedComponentWidth_spec.js
index 99e2282f7a2..e977e289f37 100644
--- a/superset/assets/spec/javascripts/dashboard/util/getDetailedComponentWidth_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/getDetailedComponentWidth_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import getDetailedComponentWidth from '../../../../src/dashboard/util/getDetailedComponentWidth';
diff --git a/superset/assets/spec/javascripts/dashboard/util/getDropPosition_spec.js b/superset/assets/spec/javascripts/dashboard/util/getDropPosition_spec.js
index 287b7a6f33e..938a86adeba 100644
--- a/superset/assets/spec/javascripts/dashboard/util/getDropPosition_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/getDropPosition_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import getDropPosition, {
diff --git a/superset/assets/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.js b/superset/assets/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.js
index 388630be522..66ef5e7207f 100644
--- a/superset/assets/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/getFormDataWithExtraFilters_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import getFormDataWithExtraFilters from '../../../../src/dashboard/util/charts/getFormDataWithExtraFilters';
diff --git a/superset/assets/spec/javascripts/dashboard/util/isValidChild_spec.js b/superset/assets/spec/javascripts/dashboard/util/isValidChild_spec.js
index 3563059d7b1..2a0efcbb358 100644
--- a/superset/assets/spec/javascripts/dashboard/util/isValidChild_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/isValidChild_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import isValidChild from '../../../../src/dashboard/util/isValidChild';
diff --git a/superset/assets/spec/javascripts/dashboard/util/newComponentFactory_spec.js b/superset/assets/spec/javascripts/dashboard/util/newComponentFactory_spec.js
index f52eba978f7..b7cdb70e320 100644
--- a/superset/assets/spec/javascripts/dashboard/util/newComponentFactory_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/newComponentFactory_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import newComponentFactory from '../../../../src/dashboard/util/newComponentFactory';
diff --git a/superset/assets/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js b/superset/assets/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js
index 8d00c186e29..c8618277373 100644
--- a/superset/assets/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js
+++ b/superset/assets/spec/javascripts/dashboard/util/newEntitiesFromDrop_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import newEntitiesFromDrop from '../../../../src/dashboard/util/newEntitiesFromDrop';
diff --git a/superset/assets/spec/javascripts/datasource/DatasourceEditor_spec.jsx b/superset/assets/spec/javascripts/datasource/DatasourceEditor_spec.jsx
index 137ac3956ff..0b7c6ab614a 100644
--- a/superset/assets/spec/javascripts/datasource/DatasourceEditor_spec.jsx
+++ b/superset/assets/spec/javascripts/datasource/DatasourceEditor_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { Tabs } from 'react-bootstrap';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import configureStore from 'redux-mock-store';
import $ from 'jquery';
diff --git a/superset/assets/spec/javascripts/datasource/DatasourceModal_spec.jsx b/superset/assets/spec/javascripts/datasource/DatasourceModal_spec.jsx
index 3cbc92f9ec9..ef0a4f4d5a0 100644
--- a/superset/assets/spec/javascripts/datasource/DatasourceModal_spec.jsx
+++ b/superset/assets/spec/javascripts/datasource/DatasourceModal_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { Modal } from 'react-bootstrap';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import configureStore from 'redux-mock-store';
import { shallow } from 'enzyme';
import $ from 'jquery';
diff --git a/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js b/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js
index 36d3bdd0955..eb3161e193b 100644
--- a/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js
+++ b/superset/assets/spec/javascripts/explore/AdhocFilter_spec.js
@@ -1,5 +1,4 @@
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import AdhocFilter, { EXPRESSION_TYPES, CLAUSES } from '../../../src/explore/AdhocFilter';
diff --git a/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js b/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
index 432be7620a2..fe6797c013f 100644
--- a/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
+++ b/superset/assets/spec/javascripts/explore/AdhocMetric_spec.js
@@ -1,5 +1,4 @@
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import AdhocMetric, { EXPRESSION_TYPES } from '../../../src/explore/AdhocMetric';
import { AGGREGATES } from '../../../src/explore/constants';
diff --git a/superset/assets/spec/javascripts/explore/chartActions_spec.js b/superset/assets/spec/javascripts/explore/chartActions_spec.js
index f1e49efee2e..6d8b009e701 100644
--- a/superset/assets/spec/javascripts/explore/chartActions_spec.js
+++ b/superset/assets/spec/javascripts/explore/chartActions_spec.js
@@ -1,4 +1,3 @@
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import $ from 'jquery';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocFilterControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocFilterControl_spec.jsx
index 2123ed7c2e0..f38562534ae 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocFilterControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocFilterControl_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import AdhocFilter, { EXPRESSION_TYPES, CLAUSES } from '../../../../src/explore/AdhocFilter';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSimpleTabContent_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSimpleTabContent_spec.jsx
index 2014bbc7c9f..7c99c6c3aed 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSimpleTabContent_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSimpleTabContent_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { FormGroup } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSqlTabContent_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSqlTabContent_spec.jsx
index a1cdb232472..c3766bf388f 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSqlTabContent_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopoverSqlTabContent_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { FormGroup } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopover_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopover_spec.jsx
index b6395813b92..23d3b9ab56c 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopover_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocFilterEditPopover_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Button, Popover, Tab, Tabs } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocFilterOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocFilterOption_spec.jsx
index 673b854e5c8..9d2e2d3ef5f 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocFilterOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocFilterOption_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label, OverlayTrigger } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
index 015999a4d7f..d845cc58521 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopoverTitle_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
index eebc7038690..5f03c2a7b03 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricEditPopover_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Button, FormGroup, Popover } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
index 4ed5d68d7dd..47c09f965b7 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricOption_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label, OverlayTrigger } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/AdhocMetricStaticOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AdhocMetricStaticOption_spec.jsx
index 54ff78e66f1..b0e426c0004 100644
--- a/superset/assets/spec/javascripts/explore/components/AdhocMetricStaticOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AdhocMetricStaticOption_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import AdhocMetricStaticOption from '../../../../src/explore/components/AdhocMetricStaticOption';
diff --git a/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
index 233eb8d75f2..e70858b40c8 100644
--- a/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/AggregateOption_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import AggregateOption from '../../../../src/explore/components/AggregateOption';
diff --git a/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
index 522329a512b..9e98cb6e2e7 100644
--- a/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/BoundsControl_spec.jsx
@@ -3,7 +3,6 @@ import React from 'react';
import { FormControl } from 'react-bootstrap';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { mount } from 'enzyme';
import BoundsControl from '../../../../src/explore/components/controls/BoundsControl';
diff --git a/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
index a3312450b07..27aba7d371a 100644
--- a/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/CheckboxControl_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import CheckboxControl from '../../../../src/explore/components/controls/CheckboxControl';
diff --git a/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
index ec586385695..2285df42304 100644
--- a/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ColorPickerControl_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
import { SketchPicker } from 'react-color';
diff --git a/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx b/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
index 10e582b31ec..1551286af23 100644
--- a/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ColorScheme_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { mount } from 'enzyme';
import { Creatable } from 'react-select';
diff --git a/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
index c63392e41ec..7a9a59da0c8 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlPanelSection_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Panel } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
index 64a657e1f76..7f408f9d6d8 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlPanelsContainer_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { getFormDataFromControls, defaultControls }
from '../../../../src/explore/store';
diff --git a/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx b/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
index 118799eb8eb..80fc0d0f463 100644
--- a/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ControlRow_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ControlSetRow from '../../../../src/explore/components/ControlRow';
diff --git a/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
index d03e30b0abf..7f28bf31355 100644
--- a/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DatasourceControl_spec.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import sinon from 'sinon';
import configureStore from 'redux-mock-store';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import DatasourceModal from '../../../../src/datasource/DatasourceModal';
import DatasourceControl from '../../../../src/explore/components/controls/DatasourceControl';
diff --git a/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
index 9c380c42029..2230d973d54 100644
--- a/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DateFilterControl_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Button, Label } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
index ab43ddf8643..8bca8714f5a 100644
--- a/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/DisplayQueryButton_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { mount } from 'enzyme';
import ModalTrigger from './../../../../src/components/ModalTrigger';
diff --git a/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
index 3789fcc8afe..896b3103a20 100644
--- a/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/EmbedCodeButton_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow, mount } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx b/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
index 5e701f2fb23..933e0dfb7e9 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ExploreActionButtons_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ExploreActionButtons from
'../../../../src/explore/components/ExploreActionButtons';
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx b/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
index 03c6ad17f98..b354b8d46ae 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ExploreChartHeader_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import ExploreChartHeader from '../../../../src/explore/components/ExploreChartHeader';
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js b/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
index b159f17cb62..0d82de58b90 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
+++ b/superset/assets/spec/javascripts/explore/components/ExploreChartPanel_spec.js
@@ -3,8 +3,7 @@
// import React from 'react';
// import { expect } from 'chai';
-// import { describe, it } from 'mocha';
-
+//
// import ChartContainer from '../../../../src/explore/components/ChartContainer';
// describe('ChartContainer', () => {
diff --git a/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js b/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
index 9fe35e8bcba..e6340f2aea0 100644
--- a/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
+++ b/superset/assets/spec/javascripts/explore/components/ExploreViewContainer_spec.js
@@ -3,8 +3,7 @@
// import React from 'react';
// import { expect } from 'chai';
-// import { describe, it } from 'mocha';
-// import { shallow } from 'enzyme';
+// // import { shallow } from 'enzyme';
// import ExploreViewContainer
// from '../../../../src/explore/components/ExploreViewContainer';
diff --git a/superset/assets/spec/javascripts/explore/components/FilterDefinitionOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/FilterDefinitionOption_spec.jsx
index 05e02b92a4b..62e4fe37600 100644
--- a/superset/assets/spec/javascripts/explore/components/FilterDefinitionOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/FilterDefinitionOption_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import FilterDefinitionOption from '../../../../src/explore/components/FilterDefinitionOption';
diff --git a/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
index 97a685822c4..4774d9ca590 100644
--- a/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/FixedOrMetricControl_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
index 418e9c5812a..1a8f766c4d5 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricDefinitionOption_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import configureStore from 'redux-mock-store';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import MetricDefinitionOption from '../../../../src/explore/components/MetricDefinitionOption';
diff --git a/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
index 896a5276e29..5e0f3aea951 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricDefinitionValue_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import MetricDefinitionValue from '../../../../src/explore/components/MetricDefinitionValue';
diff --git a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
index 8afc9900bf6..6685bffa837 100644
--- a/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/MetricsControl_spec.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import MetricsControl from '../../../../src/explore/components/controls/MetricsControl';
diff --git a/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx b/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
index c22a7bb7ab3..70712af9172 100644
--- a/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/QueryAndSaveBtns_spec.jsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { beforeEach, describe, it } from 'mocha';
import { expect } from 'chai';
import { shallow } from 'enzyme';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx b/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
index 9cdd4851b57..53dd86095b2 100644
--- a/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/RowCountLabel_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import { Label } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx b/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
index 33ab84487a9..f29f491c9ac 100644
--- a/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/RunQueryActionButton_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import RunQueryActionButton
diff --git a/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx b/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
index 5e1e4b8cd5d..4b4f1a43bce 100644
--- a/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/SaveModal_spec.jsx
@@ -3,7 +3,6 @@ import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow, mount } from 'enzyme';
import { Modal, Button, Radio } from 'react-bootstrap';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
index 38194e5cba4..b0cf1db5f55 100644
--- a/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/SelectControl_spec.jsx
@@ -4,7 +4,6 @@ import Select, { Creatable } from 'react-select';
import VirtualizedSelect from 'react-virtualized-select';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import OnPasteSelect from '../../../../src/components/OnPasteSelect';
import VirtualizedRendererWrap from '../../../../src/components/VirtualizedRendererWrap';
diff --git a/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx b/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
index c1253f09336..d6fc1222dc0 100644
--- a/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/TextArea_spec.jsx
@@ -3,7 +3,6 @@ import React from 'react';
import { FormControl } from 'react-bootstrap';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import AceEditor from 'react-ace';
diff --git a/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
index 7e28ab0d8ae..3a03d76c427 100644
--- a/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/TimeSeriesColumnControl_spec.jsx
@@ -3,7 +3,6 @@ import React from 'react';
import { FormControl, OverlayTrigger } from 'react-bootstrap';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import TimeSeriesColumnControl from '../../../../src/explore/components/controls/TimeSeriesColumnControl';
diff --git a/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
index a840e7cbb37..eef3f2772cf 100644
--- a/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/ViewportControl_spec.jsx
@@ -1,7 +1,6 @@
/* eslint-disable no-unused-expressions */
import React from 'react';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { OverlayTrigger, Label } from 'react-bootstrap';
diff --git a/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx b/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
index 03b73c9eae2..bd41e1d6de6 100644
--- a/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/components/VizTypeControl_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it, beforeEach } from 'mocha';
import { shallow } from 'enzyme';
import { Modal } from 'react-bootstrap';
import VizTypeControl from '../../../../src/explore/components/controls/VizTypeControl';
diff --git a/superset/assets/spec/javascripts/explore/exploreActions_spec.js b/superset/assets/spec/javascripts/explore/exploreActions_spec.js
index 72aebbd551a..7b4749a579d 100644
--- a/superset/assets/spec/javascripts/explore/exploreActions_spec.js
+++ b/superset/assets/spec/javascripts/explore/exploreActions_spec.js
@@ -1,5 +1,4 @@
/* eslint-disable no-unused-expressions */
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import { defaultState } from '../../../src/explore/store';
import exploreReducer from '../../../src/explore/reducers/exploreReducer';
diff --git a/superset/assets/spec/javascripts/explore/utils_spec.jsx b/superset/assets/spec/javascripts/explore/utils_spec.jsx
index 8bfea684640..9d2eaf01542 100644
--- a/superset/assets/spec/javascripts/explore/utils_spec.jsx
+++ b/superset/assets/spec/javascripts/explore/utils_spec.jsx
@@ -1,4 +1,3 @@
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import URI from 'urijs';
import { getExploreUrlAndPayload, getExploreLongUrl } from '../../../src/explore/exploreUtils';
diff --git a/superset/assets/spec/javascripts/logger_spec.js b/superset/assets/spec/javascripts/logger_spec.js
index 64580b4bdbc..e5b46b4f9c4 100644
--- a/superset/assets/spec/javascripts/logger_spec.js
+++ b/superset/assets/spec/javascripts/logger_spec.js
@@ -1,5 +1,4 @@
import $ from 'jquery';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/messageToasts/.eslintrc b/superset/assets/spec/javascripts/messageToasts/.eslintrc
index a3f86e3a17a..36759a20b1e 100644
--- a/superset/assets/spec/javascripts/messageToasts/.eslintrc
+++ b/superset/assets/spec/javascripts/messageToasts/.eslintrc
@@ -17,7 +17,6 @@
"no-mixed-operators": 0,
"no-continue": 2,
"no-bitwise": 2,
- "no-undef": 2,
"no-multi-assign": 2,
"no-restricted-properties": 2,
"no-prototype-builtins": 2,
diff --git a/superset/assets/spec/javascripts/messageToasts/components/ToastPresenter_spec.jsx b/superset/assets/spec/javascripts/messageToasts/components/ToastPresenter_spec.jsx
index aa04adcb3cd..ed39d7c7451 100644
--- a/superset/assets/spec/javascripts/messageToasts/components/ToastPresenter_spec.jsx
+++ b/superset/assets/spec/javascripts/messageToasts/components/ToastPresenter_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import mockMessageToasts from '../mockMessageToasts';
diff --git a/superset/assets/spec/javascripts/messageToasts/components/Toast_spec.jsx b/superset/assets/spec/javascripts/messageToasts/components/Toast_spec.jsx
index ce3396cd623..2ecf88959fb 100644
--- a/superset/assets/spec/javascripts/messageToasts/components/Toast_spec.jsx
+++ b/superset/assets/spec/javascripts/messageToasts/components/Toast_spec.jsx
@@ -1,7 +1,6 @@
import { Alert } from 'react-bootstrap';
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import mockMessageToasts from '../mockMessageToasts';
diff --git a/superset/assets/spec/javascripts/messageToasts/reducers/messageToasts_spec.js b/superset/assets/spec/javascripts/messageToasts/reducers/messageToasts_spec.js
index 8d7127087e7..6471ccfa58b 100644
--- a/superset/assets/spec/javascripts/messageToasts/reducers/messageToasts_spec.js
+++ b/superset/assets/spec/javascripts/messageToasts/reducers/messageToasts_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { ADD_TOAST, REMOVE_TOAST } from '../../../../src/messageToasts/actions';
diff --git a/superset/assets/spec/javascripts/messageToasts/utils/getToastsFromPyFlashMessages_spec.js b/superset/assets/spec/javascripts/messageToasts/utils/getToastsFromPyFlashMessages_spec.js
index a3c7ce90680..edcddefac65 100644
--- a/superset/assets/spec/javascripts/messageToasts/utils/getToastsFromPyFlashMessages_spec.js
+++ b/superset/assets/spec/javascripts/messageToasts/utils/getToastsFromPyFlashMessages_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import {
diff --git a/superset/assets/spec/javascripts/modules/colors_spec.jsx b/superset/assets/spec/javascripts/modules/colors_spec.jsx
index be882330203..a91c74f1632 100644
--- a/superset/assets/spec/javascripts/modules/colors_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/colors_spec.jsx
@@ -1,4 +1,3 @@
-import { it, describe, before } from 'mocha';
import { expect } from 'chai';
import { getColorFromScheme, hexToRGB } from '../../../src/modules/colors';
import { getInstance } from '../../../src/modules/ColorSchemeManager';
diff --git a/superset/assets/spec/javascripts/modules/dates_spec.js b/superset/assets/spec/javascripts/modules/dates_spec.js
index 7101b1dad2e..957d8205437 100644
--- a/superset/assets/spec/javascripts/modules/dates_spec.js
+++ b/superset/assets/spec/javascripts/modules/dates_spec.js
@@ -1,5 +1,4 @@
-import { it, describe } from 'mocha';
-import { expect } from 'chai';
+import { assert, expect } from 'chai';
import {
tickMultiFormat,
formatDate,
diff --git a/superset/assets/spec/javascripts/modules/geo_spec.jsx b/superset/assets/spec/javascripts/modules/geo_spec.jsx
index db51bb4f061..18b45db0796 100644
--- a/superset/assets/spec/javascripts/modules/geo_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/geo_spec.jsx
@@ -1,4 +1,3 @@
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import { unitToRadius } from '../../../src/modules/geo';
diff --git a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx b/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
index 05283b04615..f86e69cca7b 100644
--- a/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/sandbox_spec.jsx
@@ -1,4 +1,3 @@
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import sandboxedEval from '../../../src/modules/sandbox';
diff --git a/superset/assets/spec/javascripts/modules/time_spec.js b/superset/assets/spec/javascripts/modules/time_spec.js
index 36260a461f4..09a0d1491cf 100644
--- a/superset/assets/spec/javascripts/modules/time_spec.js
+++ b/superset/assets/spec/javascripts/modules/time_spec.js
@@ -1,5 +1,4 @@
-import { it, describe } from 'mocha';
-import { expect } from 'chai';
+import { expect, assert } from 'chai';
import moment from 'moment';
import { getPlaySliderParams, truncate } from '../../../src/modules/time';
diff --git a/superset/assets/spec/javascripts/modules/utils_spec.jsx b/superset/assets/spec/javascripts/modules/utils_spec.jsx
index 4a319afbe1c..f227970ece8 100644
--- a/superset/assets/spec/javascripts/modules/utils_spec.jsx
+++ b/superset/assets/spec/javascripts/modules/utils_spec.jsx
@@ -1,5 +1,4 @@
-import { it, describe } from 'mocha';
-import { expect } from 'chai';
+import { expect, assert } from 'chai';
import {
tryNumify,
slugify,
diff --git a/superset/assets/spec/javascripts/profile/App_spec.jsx b/superset/assets/spec/javascripts/profile/App_spec.jsx
index dcef27be7a4..80e578999fd 100644
--- a/superset/assets/spec/javascripts/profile/App_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/App_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { Col, Row, Tab } from 'react-bootstrap';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
diff --git a/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx b/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
index 08457d9858f..04b0079c27d 100644
--- a/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/CreatedContent_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
import CreatedContent from '../../../src/profile/components/CreatedContent';
diff --git a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
index de0ca80d535..5387322b4c3 100644
--- a/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/EditableTitle_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import sinon from 'sinon';
import { expect } from 'chai';
diff --git a/superset/assets/spec/javascripts/profile/Favorites_spec.jsx b/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
index 252d99ef204..b35817cfc52 100644
--- a/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/Favorites_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
diff --git a/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx b/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
index 60240fc31d8..0122e672788 100644
--- a/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/RecentActivity_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
diff --git a/superset/assets/spec/javascripts/profile/Security_spec.jsx b/superset/assets/spec/javascripts/profile/Security_spec.jsx
index 20376d24160..e544c456da2 100644
--- a/superset/assets/spec/javascripts/profile/Security_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/Security_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user, userNoPerms } from './fixtures';
diff --git a/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx b/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
index 315dd6fd1fd..2c5b3e52543 100644
--- a/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
+++ b/superset/assets/spec/javascripts/profile/UserInfo_spec.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import Gravatar from 'react-gravatar';
import { Panel } from 'react-bootstrap';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { user } from './fixtures';
diff --git a/superset/assets/spec/javascripts/sqllab/App_spec.jsx b/superset/assets/spec/javascripts/sqllab/App_spec.jsx
index ce76e309f40..4e64d179ca7 100644
--- a/superset/assets/spec/javascripts/sqllab/App_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/App_spec.jsx
@@ -3,7 +3,6 @@ import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx b/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
index fe4e9c413a8..7ea6862e2b9 100644
--- a/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/ColumnElement_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { mockedActions, table } from './fixtures';
diff --git a/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx b/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
index 662cb352f39..e8f8438864d 100644
--- a/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/CopyQueryTabUrl_spec.jsx
@@ -1,5 +1,4 @@
import React from 'react';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { initialState } from './fixtures';
diff --git a/superset/assets/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx b/superset/assets/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
index 1d0448e6c73..98972ffb2bf 100644
--- a/superset/assets/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/ExploreResultsButton_spec.jsx
@@ -3,7 +3,6 @@ import configureStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx b/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
index 634e8a9d4f3..b8bc395ab63 100644
--- a/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/HighlightedSql_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import SyntaxHighlighter from 'react-syntax-highlighter';
import { mount, shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import HighlightedSql from '../../../src/SqlLab/components/HighlightedSql';
diff --git a/superset/assets/spec/javascripts/sqllab/Link_spec.jsx b/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
index e884d238417..f37dd6f2f15 100644
--- a/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/Link_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import Link from '../../../src/SqlLab/components/Link';
diff --git a/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx b/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
index cff450137d8..dc256044af5 100644
--- a/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QuerySearch_spec.jsx
@@ -2,7 +2,6 @@ import React from 'react';
import Select from 'react-select';
import { Button } from 'react-bootstrap';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx b/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
index b8f6dd51850..bca5c19ca9e 100644
--- a/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QueryStateLabel_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { Label } from 'react-bootstrap';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import QueryStateLabel from '../../../src/SqlLab/components/QueryStateLabel';
diff --git a/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx b/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
index 5e2560a15ab..c985750faf8 100644
--- a/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/QueryTable_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { Table } from 'reactable';
diff --git a/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx b/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
index 8ca9acdf58d..d3f3690cc0a 100644
--- a/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/ResultSet_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
index 865b67aa449..c47f593250a 100644
--- a/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SaveQuery_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { FormControl } from 'react-bootstrap';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import SaveQuery from '../../../src/SqlLab/components/SaveQuery';
import ModalTrigger from '../../../src/components/ModalTrigger';
diff --git a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
index bc4957e13fc..62cb9ae197a 100644
--- a/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SqlEditorLeftBar_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import sinon from 'sinon';
import { expect } from 'chai';
diff --git a/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx b/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
index b0689650da3..4e6a2c8701a 100644
--- a/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/SqlEditor_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { initialState, queries, table } from './fixtures';
diff --git a/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx b/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
index d200d403793..f95941963f8 100644
--- a/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TabStatusIcon_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import sinon from 'sinon';
import { expect } from 'chai';
-import { describe, it } from 'mocha';
import { shallow } from 'enzyme';
import TabStatusIcon from '../../../src/SqlLab/components/TabStatusIcon';
diff --git a/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx b/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
index 0846af81667..6d4e007eff3 100644
--- a/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TabbedSqlEditors_spec.jsx
@@ -5,7 +5,6 @@ import URI from 'urijs';
import { Tab } from 'react-bootstrap';
import { shallow, mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx b/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
index b5d8b768f53..6d683d3388e 100644
--- a/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/TableElement_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount, shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import Link from '../../../src/SqlLab/components/Link';
diff --git a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
index 681d7314266..c7a95340738 100644
--- a/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
+++ b/superset/assets/spec/javascripts/sqllab/Timer_spec.jsx
@@ -1,6 +1,5 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it, beforeEach } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
diff --git a/superset/assets/spec/javascripts/sqllab/actions_spec.js b/superset/assets/spec/javascripts/sqllab/actions_spec.js
index c3d4aa27579..c2f1f4521ec 100644
--- a/superset/assets/spec/javascripts/sqllab/actions_spec.js
+++ b/superset/assets/spec/javascripts/sqllab/actions_spec.js
@@ -1,5 +1,4 @@
/* eslint-disable no-unused-expressions */
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import sinon from 'sinon';
import $ from 'jquery';
diff --git a/superset/assets/spec/javascripts/sqllab/reducers_spec.js b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
index 2931d13b46a..1ade0382ec1 100644
--- a/superset/assets/spec/javascripts/sqllab/reducers_spec.js
+++ b/superset/assets/spec/javascripts/sqllab/reducers_spec.js
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import * as r from '../../../src/SqlLab/reducers';
diff --git a/superset/assets/spec/javascripts/utils/common_spec.jsx b/superset/assets/spec/javascripts/utils/common_spec.jsx
index 861c38ae530..1b5651366c7 100644
--- a/superset/assets/spec/javascripts/utils/common_spec.jsx
+++ b/superset/assets/spec/javascripts/utils/common_spec.jsx
@@ -1,4 +1,3 @@
-import { it, describe } from 'mocha';
import { expect } from 'chai';
import { isTruthy, optionFromValue } from '../../../src/utils/common';
diff --git a/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx b/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
index f1b58f1763e..ded0acc0341 100644
--- a/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
+++ b/superset/assets/spec/javascripts/visualizations/nvd3_viz_spec.jsx
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import { formatLabel } from '../../../src/visualizations/nvd3_vis';
diff --git a/superset/assets/spec/javascripts/visualizations/table_spec.jsx b/superset/assets/spec/javascripts/visualizations/table_spec.jsx
index 14e04d76df6..5252e9dd4fe 100644
--- a/superset/assets/spec/javascripts/visualizations/table_spec.jsx
+++ b/superset/assets/spec/javascripts/visualizations/table_spec.jsx
@@ -1,4 +1,3 @@
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import $ from 'jquery';
import '../../helpers/shim';
diff --git a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
index 113f00cd255..bfb9825948b 100644
--- a/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
+++ b/superset/assets/spec/javascripts/welcome/DashboardTable_spec.jsx
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
+import sinon from 'sinon';
import DashboardTable from '../../../src/welcome/DashboardTable';
diff --git a/superset/assets/spec/javascripts/welcome/Welcome_spec.jsx b/superset/assets/spec/javascripts/welcome/Welcome_spec.jsx
index a0a39826082..4ffd8ca7fb5 100644
--- a/superset/assets/spec/javascripts/welcome/Welcome_spec.jsx
+++ b/superset/assets/spec/javascripts/welcome/Welcome_spec.jsx
@@ -1,7 +1,6 @@
import React from 'react';
import { Panel, Row, Tab } from 'react-bootstrap';
import { shallow } from 'enzyme';
-import { describe, it } from 'mocha';
import { expect } from 'chai';
import Welcome from '../../../src/welcome/Welcome';
diff --git a/superset/assets/src/SqlLab/App.jsx b/superset/assets/src/SqlLab/App.jsx
index f86966a1c3f..01f93578d09 100644
--- a/superset/assets/src/SqlLab/App.jsx
+++ b/superset/assets/src/SqlLab/App.jsx
@@ -3,6 +3,7 @@ import { createStore, compose, applyMiddleware } from 'redux';
import { Provider } from 'react-redux';
import thunkMiddleware from 'redux-thunk';
import { hot } from 'react-hot-loader';
+import $ from 'jquery';
import getInitialState from './getInitialState';
import rootReducer from './reducers';
diff --git a/superset/assets/src/SqlLab/actions.js b/superset/assets/src/SqlLab/actions.js
index 81bd91356db..a808949c2f3 100644
--- a/superset/assets/src/SqlLab/actions.js
+++ b/superset/assets/src/SqlLab/actions.js
@@ -1,5 +1,3 @@
-/* global window */
-/* eslint no-undef: 2 */
import $ from 'jquery';
import shortid from 'shortid';
import JSONbig from 'json-bigint';
diff --git a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
index b6412389755..dfaab5a087a 100644
--- a/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
+++ b/superset/assets/src/SqlLab/components/ExploreResultsButton.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import moment from 'moment';
import React from 'react';
import PropTypes from 'prop-types';
diff --git a/superset/assets/src/SqlLab/components/QuerySearch.jsx b/superset/assets/src/SqlLab/components/QuerySearch.jsx
index d13d99376bc..17dd9b1b6bf 100644
--- a/superset/assets/src/SqlLab/components/QuerySearch.jsx
+++ b/superset/assets/src/SqlLab/components/QuerySearch.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import { Button } from 'react-bootstrap';
diff --git a/superset/assets/src/SqlLab/components/SqlEditor.jsx b/superset/assets/src/SqlLab/components/SqlEditor.jsx
index d3ed2bb6eb4..c595ea6c2a9 100644
--- a/superset/assets/src/SqlLab/components/SqlEditor.jsx
+++ b/superset/assets/src/SqlLab/components/SqlEditor.jsx
@@ -1,5 +1,3 @@
-/* global window */
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import throttle from 'lodash.throttle';
diff --git a/superset/assets/src/SqlLab/components/SqlEditorLeftBar.jsx b/superset/assets/src/SqlLab/components/SqlEditorLeftBar.jsx
index d20d494bcfb..7bc71223d63 100644
--- a/superset/assets/src/SqlLab/components/SqlEditorLeftBar.jsx
+++ b/superset/assets/src/SqlLab/components/SqlEditorLeftBar.jsx
@@ -1,5 +1,3 @@
-/* global window */
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import { ControlLabel, Button } from 'react-bootstrap';
diff --git a/superset/assets/src/SqlLab/getInitialState.js b/superset/assets/src/SqlLab/getInitialState.js
index 9452ac570c7..c33ff1e2f4c 100644
--- a/superset/assets/src/SqlLab/getInitialState.js
+++ b/superset/assets/src/SqlLab/getInitialState.js
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import shortid from 'shortid';
import { t } from '../locales';
import getToastsFromPyFlashMessages from '../messageToasts/utils/getToastsFromPyFlashMessages';
diff --git a/superset/assets/src/SqlLab/reducers.js b/superset/assets/src/SqlLab/reducers.js
index ec880278f99..7fa60b1a4ee 100644
--- a/superset/assets/src/SqlLab/reducers.js
+++ b/superset/assets/src/SqlLab/reducers.js
@@ -2,6 +2,7 @@ import { combineReducers } from 'redux';
import shortid from 'shortid';
import messageToasts from '../messageToasts/reducers';
+import getInitialState from './getInitialState';
import * as actions from './actions';
import { now } from '../modules/dates';
import {
diff --git a/superset/assets/src/chart/Chart.jsx b/superset/assets/src/chart/Chart.jsx
index a9dd0ff3b7a..43d13b18451 100644
--- a/superset/assets/src/chart/Chart.jsx
+++ b/superset/assets/src/chart/Chart.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import { Tooltip } from 'react-bootstrap';
diff --git a/superset/assets/src/dashboard/.eslintrc b/superset/assets/src/dashboard/.eslintrc
index a3f86e3a17a..36759a20b1e 100644
--- a/superset/assets/src/dashboard/.eslintrc
+++ b/superset/assets/src/dashboard/.eslintrc
@@ -17,7 +17,6 @@
"no-mixed-operators": 0,
"no-continue": 2,
"no-bitwise": 2,
- "no-undef": 2,
"no-multi-assign": 2,
"no-restricted-properties": 2,
"no-prototype-builtins": 2,
diff --git a/superset/assets/src/dashboard/components/Dashboard.jsx b/superset/assets/src/dashboard/components/Dashboard.jsx
index 2bb9b9ca20e..20c161b6cb8 100644
--- a/superset/assets/src/dashboard/components/Dashboard.jsx
+++ b/superset/assets/src/dashboard/components/Dashboard.jsx
@@ -1,4 +1,3 @@
-/* global window */
import React from 'react';
import PropTypes from 'prop-types';
diff --git a/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx b/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
index 4c253991806..c04e2b42250 100644
--- a/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
+++ b/superset/assets/src/dashboard/components/HeaderActionsDropdown.jsx
@@ -1,4 +1,3 @@
-/* global window */
import React from 'react';
import PropTypes from 'prop-types';
import $ from 'jquery';
diff --git a/superset/assets/src/datasource/DatasourceEditor.jsx b/superset/assets/src/datasource/DatasourceEditor.jsx
index 48c240145f3..4d56b4680b9 100644
--- a/superset/assets/src/datasource/DatasourceEditor.jsx
+++ b/superset/assets/src/datasource/DatasourceEditor.jsx
@@ -394,7 +394,8 @@ export class DatasourceEditor extends React.PureComponent {
);
}
renderSpatialTab() {
- const spatials = this.state.datasource.spatials;
+ const { datasource } = this.state;
+ const { spatials, all_cols: allCols } = datasource;
return (
}
@@ -414,7 +415,7 @@ export class DatasourceEditor extends React.PureComponent {
name: (d, onChange) => (
),
config: (v, onChange) => (
-
+
),
}}
/>
diff --git a/superset/assets/src/explore/App.jsx b/superset/assets/src/explore/App.jsx
index 2f279897754..d46b49458ec 100644
--- a/superset/assets/src/explore/App.jsx
+++ b/superset/assets/src/explore/App.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import React from 'react';
import { hot } from 'react-hot-loader';
import { createStore, applyMiddleware, compose } from 'redux';
diff --git a/superset/assets/src/explore/actions/exploreActions.js b/superset/assets/src/explore/actions/exploreActions.js
index b8a883ee713..bd9a174991e 100644
--- a/superset/assets/src/explore/actions/exploreActions.js
+++ b/superset/assets/src/explore/actions/exploreActions.js
@@ -34,6 +34,12 @@ export function fetchDatasourcesSucceeded() {
return { type: FETCH_DATASOURCES_SUCCEEDED };
}
+export const FETCH_DATASOURCES_FAILED = 'FETCH_DATASOURCES_FAILED';
+export function fetchDatasourcesFailed(error) {
+ return { type: FETCH_DATASOURCES_FAILED, error };
+}
+
+
export const POST_DATASOURCES_FAILED = 'POST_DATASOURCES_FAILED';
export function postDatasourcesFailed(error) {
return { type: POST_DATASOURCES_FAILED, error };
diff --git a/superset/assets/src/explore/components/AdhocFilterEditPopoverSqlTabContent.jsx b/superset/assets/src/explore/components/AdhocFilterEditPopoverSqlTabContent.jsx
index 7e8a6a6a39b..6e5fe3c5618 100644
--- a/superset/assets/src/explore/components/AdhocFilterEditPopoverSqlTabContent.jsx
+++ b/superset/assets/src/explore/components/AdhocFilterEditPopoverSqlTabContent.jsx
@@ -1,6 +1,7 @@
import React from 'react';
import PropTypes from 'prop-types';
import AceEditor from 'react-ace';
+import ace from 'brace';
import 'brace/mode/sql';
import 'brace/theme/github';
import 'brace/ext/language_tools';
diff --git a/superset/assets/src/explore/components/AdhocMetricEditPopover.jsx b/superset/assets/src/explore/components/AdhocMetricEditPopover.jsx
index 77926a836cc..96b0314b45e 100644
--- a/superset/assets/src/explore/components/AdhocMetricEditPopover.jsx
+++ b/superset/assets/src/explore/components/AdhocMetricEditPopover.jsx
@@ -2,6 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { Button, ControlLabel, FormGroup, Popover, Tab, Tabs } from 'react-bootstrap';
import VirtualizedSelect from 'react-virtualized-select';
+import ace from 'brace';
import AceEditor from 'react-ace';
import 'brace/mode/sql';
import 'brace/theme/github';
diff --git a/superset/assets/src/explore/components/controls/DatasourceControl.jsx b/superset/assets/src/explore/components/controls/DatasourceControl.jsx
index 5b616f1a7fe..53922188d20 100644
--- a/superset/assets/src/explore/components/controls/DatasourceControl.jsx
+++ b/superset/assets/src/explore/components/controls/DatasourceControl.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import {
diff --git a/superset/assets/src/explore/components/controls/SelectAsyncControl.jsx b/superset/assets/src/explore/components/controls/SelectAsyncControl.jsx
index fc8fb3cc25e..2fb778bd4a4 100644
--- a/superset/assets/src/explore/components/controls/SelectAsyncControl.jsx
+++ b/superset/assets/src/explore/components/controls/SelectAsyncControl.jsx
@@ -1,4 +1,3 @@
-/* eslint no-undef: 2 */
import React from 'react';
import PropTypes from 'prop-types';
import Select from '../../../components/AsyncSelect';
diff --git a/superset/assets/src/messageToasts/.eslintrc b/superset/assets/src/messageToasts/.eslintrc
index a3f86e3a17a..36759a20b1e 100644
--- a/superset/assets/src/messageToasts/.eslintrc
+++ b/superset/assets/src/messageToasts/.eslintrc
@@ -17,7 +17,6 @@
"no-mixed-operators": 0,
"no-continue": 2,
"no-bitwise": 2,
- "no-undef": 2,
"no-multi-assign": 2,
"no-restricted-properties": 2,
"no-prototype-builtins": 2,
diff --git a/superset/assets/src/visualizations/BigNumber/BigNumber.jsx b/superset/assets/src/visualizations/BigNumber/BigNumber.jsx
index 9f8a4a221b0..ff78a56e7be 100644
--- a/superset/assets/src/visualizations/BigNumber/BigNumber.jsx
+++ b/superset/assets/src/visualizations/BigNumber/BigNumber.jsx
@@ -1,5 +1,6 @@
import React from 'react';
import PropTypes from 'prop-types';
+
import { XYChart, AreaSeries, CrossHair, LinearGradient } from '@data-ui/xy-chart';
import { brandColor } from '../../modules/colors';
diff --git a/superset/assets/src/visualizations/BigNumber/adaptor.jsx b/superset/assets/src/visualizations/BigNumber/adaptor.jsx
index 40a3a0f3d36..fc20c2239fd 100644
--- a/superset/assets/src/visualizations/BigNumber/adaptor.jsx
+++ b/superset/assets/src/visualizations/BigNumber/adaptor.jsx
@@ -1,6 +1,7 @@
import React from 'react';
import ReactDOM from 'react-dom';
import * as color from 'd3-color';
+import d3 from 'd3';
import BigNumberVis, { renderTooltipFactory } from './BigNumber';
import { d3FormatPreset } from '../../modules/utils';
diff --git a/superset/assets/src/visualizations/MapBox/MapBox.jsx b/superset/assets/src/visualizations/MapBox/MapBox.jsx
index e6eb71a51b2..85cd1b1ad3c 100644
--- a/superset/assets/src/visualizations/MapBox/MapBox.jsx
+++ b/superset/assets/src/visualizations/MapBox/MapBox.jsx
@@ -122,9 +122,9 @@ MapBox.defaultProps = defaultProps;
function createReducer(aggregatorName, customMetric) {
if (aggregatorName === 'sum' || !customMetric) {
return (a, b) => a + b;
- } else if (aggName === 'min') {
+ } else if (aggregatorName === 'min') {
return Math.min;
- } else if (aggName === 'max') {
+ } else if (aggregatorName === 'max') {
return Math.max;
}
return function (a, b) {
diff --git a/superset/assets/src/visualizations/TimeTable/TimeTable.jsx b/superset/assets/src/visualizations/TimeTable/TimeTable.jsx
index ec85262329b..8ce9a7d7a10 100644
--- a/superset/assets/src/visualizations/TimeTable/TimeTable.jsx
+++ b/superset/assets/src/visualizations/TimeTable/TimeTable.jsx
@@ -150,7 +150,7 @@ class TimeTable extends React.PureComponent {
const { timeLag } = column;
const totalLag = Object.keys(reversedEntries).length;
if (timeLag > totalLag) {
- errorMsg = `The time lag set at ${timeLag} exceeds the length of data at ${reversedData.length}. No data available.`;
+ errorMsg = `The time lag set at ${timeLag} exceeds the length of data at ${reversedEntries.length}. No data available.`;
} else {
v = reversedEntries[timeLag][valueField];
}
diff --git a/superset/assets/src/visualizations/deckgl/layers/common.js b/superset/assets/src/visualizations/deckgl/layers/common.js
index 7eed0615922..0a446dd0984 100644
--- a/superset/assets/src/visualizations/deckgl/layers/common.js
+++ b/superset/assets/src/visualizations/deckgl/layers/common.js
@@ -1,5 +1,6 @@
import dompurify from 'dompurify';
import { fitBounds } from 'viewport-mercator-project';
+import d3 from 'd3';
import sandboxedEval from '../../../modules/sandbox';
diff --git a/superset/assets/src/visualizations/deckgl/layers/geojson.jsx b/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
index 74a862a2e27..72790f1efdb 100644
--- a/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
+++ b/superset/assets/src/visualizations/deckgl/layers/geojson.jsx
@@ -28,10 +28,10 @@ const alterProps = (props, propOverrides) => {
}
});
if (typeof props.fillColor === 'string') {
- newProps.fillColor = hexToRGB(p.fillColor);
+ newProps.fillColor = hexToRGB(props.fillColor);
}
if (typeof props.strokeColor === 'string') {
- newProps.strokeColor = hexToRGB(p.strokeColor);
+ newProps.strokeColor = hexToRGB(props.strokeColor);
}
return {
...newProps,
diff --git a/superset/assets/src/visualizations/line_multi.js b/superset/assets/src/visualizations/line_multi.js
index 684916c728b..b8cd1a07852 100644
--- a/superset/assets/src/visualizations/line_multi.js
+++ b/superset/assets/src/visualizations/line_multi.js
@@ -1,7 +1,8 @@
+import d3 from 'd3';
+
import nvd3Vis from './nvd3_vis';
import { getExploreLongUrl } from '../explore/exploreUtils';
-
export default function lineMulti(slice, payload) {
/*
* Show multiple line charts
diff --git a/superset/assets/yarn.lock b/superset/assets/yarn.lock
index 6f04ebfd186..e0fc1ea6f19 100644
--- a/superset/assets/yarn.lock
+++ b/superset/assets/yarn.lock
@@ -4529,6 +4529,12 @@ eslint-module-utils@^2.2.0:
debug "^2.6.8"
pkg-dir "^1.0.0"
+eslint-plugin-cypress@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-cypress/-/eslint-plugin-cypress-2.0.1.tgz#647e942cacbfd71b0f1a1ed6978472fbd475c60a"
+ dependencies:
+ globals "^11.0.1"
+
eslint-plugin-import@^2.2.0:
version "2.14.0"
resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8"