This is an automated email from the ASF dual-hosted git repository.
ccwilliams pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git
The following commit(s) were added to refs/heads/master by this push:
new b453cd2 [lint] turn no-undef back on, set browser, cypress, and mocha
env's (#5879)
b453cd2 is described below
commit b453cd2bf20aa89d2cd6e7f0e7d8365074d502aa
Author: Chris Williams <[email protected]>
AuthorDate: Thu Sep 13 14:45:24 2018 -0700
[lint] turn no-undef back on, set browser, cypress, and mocha env's (#5879)
* [lint] turn no-undef back on, set browser, cypress, and mocha env's, and
fix issues
* [lint] fix undefined var in TimeTable.jsx
---
superset/assets/.eslintrc | 5 +-
superset/assets/cypress/.eslintrc | 8 +++
.../integration/dashboard/dashboard_tests.js | 4 +-
.../cypress/integration/explore/control_tests.js | 17 +++---
.../explore/visualizations/big_number.js | 30 ++++++-----
.../integration/explore/visualizations/line.js | 63 ++++++++++++++--------
superset/assets/package.json | 1 +
superset/assets/spec/.eslintrc | 3 ++
superset/assets/spec/helpers/shim.js | 3 +-
.../spec/javascripts/CRUD/CollectionTable_spec.jsx | 1 -
.../addSlice/AddSliceContainer_spec.jsx | 1 -
.../assets/spec/javascripts/chart/Chart_spec.jsx | 1 -
.../components/AlteredSliceTag_spec.jsx | 1 -
.../javascripts/components/AsyncSelect_spec.jsx | 1 -
.../javascripts/components/CachedLabel_spec.jsx | 1 -
.../spec/javascripts/components/Checkbox_spec.jsx | 1 -
.../javascripts/components/ColumnOption_spec.jsx | 1 -
.../components/ColumnTypeLabel_spec.jsx | 1 -
.../components/CopyToClipboard_spec.jsx | 1 -
.../FilterableTable/FilterableTable_spec.jsx | 1 -
.../javascripts/components/MetricOption_spec.jsx | 1 -
.../javascripts/components/ModalTrigger_spec.jsx | 1 -
.../javascripts/components/OnPasteSelect_spec.jsx | 1 -
.../components/OptionDescription_spec.jsx | 1 -
.../javascripts/components/PopoverSection_spec.jsx | 1 -
.../components/URLShortLinkButton_spec.jsx | 1 -
.../components/URLShortLinkModal_spec.jsx | 1 -
.../components/VirtualizedRendererWrap_spec.jsx | 1 -
.../assets/spec/javascripts/dashboard/.eslintrc | 1 -
.../dashboard/actions/dashboardLayout_spec.js | 1 -
.../dashboard/components/CodeModal_spec.jsx | 1 -
.../dashboard/components/CssEditor_spec.jsx | 1 -
.../dashboard/components/DashboardBuilder_spec.jsx | 1 -
.../dashboard/components/DashboardGrid_spec.jsx | 1 -
.../dashboard/components/Dashboard_spec.jsx | 1 -
.../components/HeaderActionsDropdown_spec.jsx | 1 -
.../dashboard/components/Header_spec.jsx | 1 -
.../dashboard/components/MissingChart_spec.jsx | 1 -
.../components/RefreshIntervalModal_spec.jsx | 1 -
.../dashboard/components/SliceAdder_spec.jsx | 1 -
.../components/dnd/DragDroppable_spec.jsx | 1 -
.../components/gridComponents/ChartHolder_spec.jsx | 1 -
.../components/gridComponents/Chart_spec.jsx | 1 -
.../components/gridComponents/Column_spec.jsx | 1 -
.../components/gridComponents/Divider_spec.jsx | 1 -
.../components/gridComponents/Header_spec.jsx | 1 -
.../components/gridComponents/Markdown_spec.jsx | 1 -
.../components/gridComponents/Row_spec.jsx | 1 -
.../components/gridComponents/Tab_spec.jsx | 1 -
.../components/gridComponents/Tabs_spec.jsx | 1 -
.../new/DraggableNewComponent_spec.jsx | 1 -
.../gridComponents/new/NewColumn_spec.jsx | 1 -
.../gridComponents/new/NewDivider_spec.jsx | 1 -
.../gridComponents/new/NewHeader_spec.jsx | 1 -
.../components/gridComponents/new/NewRow_spec.jsx | 1 -
.../components/gridComponents/new/NewTabs_spec.jsx | 1 -
.../dashboard/components/menu/HoverMenu_spec.jsx | 1 -
.../components/menu/WithPopoverMenu_spec.jsx | 1 -
.../resizable/ResizableContainer_spec.jsx | 1 -
.../components/resizable/ResizableHandle_spec.jsx | 1 -
.../dashboard/reducers/dashboardLayout_spec.js | 1 -
.../dashboard/reducers/dashboardState_spec.js | 1 -
.../dashboard/reducers/sliceEntities_spec.js | 1 -
.../dashboard/util/componentIsResizable_spec.js | 1 -
.../javascripts/dashboard/util/dnd-reorder_spec.js | 1 -
.../dashboard/util/dropOverflowsParent_spec.js | 1 -
.../util/findFirstParentContainer_spec.js | 1 -
.../dashboard/util/findParentId_spec.js | 1 -
.../dashboard/util/getChartIdsFromLayout_spec.js | 1 -
.../dashboard/util/getDashboardUrl_spec.js | 1 -
.../util/getDetailedComponentWidth_spec.js | 1 -
.../dashboard/util/getDropPosition_spec.js | 1 -
.../util/getFormDataWithExtraFilters_spec.js | 1 -
.../dashboard/util/isValidChild_spec.js | 1 -
.../dashboard/util/newComponentFactory_spec.js | 1 -
.../dashboard/util/newEntitiesFromDrop_spec.js | 1 -
.../datasource/DatasourceEditor_spec.jsx | 1 -
.../datasource/DatasourceModal_spec.jsx | 1 -
.../spec/javascripts/explore/AdhocFilter_spec.js | 1 -
.../spec/javascripts/explore/AdhocMetric_spec.js | 1 -
.../spec/javascripts/explore/chartActions_spec.js | 1 -
.../explore/components/AdhocFilterControl_spec.jsx | 1 -
...AdhocFilterEditPopoverSimpleTabContent_spec.jsx | 1 -
.../AdhocFilterEditPopoverSqlTabContent_spec.jsx | 1 -
.../components/AdhocFilterEditPopover_spec.jsx | 1 -
.../explore/components/AdhocFilterOption_spec.jsx | 1 -
.../AdhocMetricEditPopoverTitle_spec.jsx | 1 -
.../components/AdhocMetricEditPopover_spec.jsx | 1 -
.../explore/components/AdhocMetricOption_spec.jsx | 1 -
.../components/AdhocMetricStaticOption_spec.jsx | 1 -
.../explore/components/AggregateOption_spec.jsx | 1 -
.../explore/components/BoundsControl_spec.jsx | 1 -
.../explore/components/CheckboxControl_spec.jsx | 1 -
.../explore/components/ColorPickerControl_spec.jsx | 1 -
.../explore/components/ColorScheme_spec.jsx | 1 -
.../components/ControlPanelSection_spec.jsx | 1 -
.../components/ControlPanelsContainer_spec.jsx | 1 -
.../explore/components/ControlRow_spec.jsx | 1 -
.../explore/components/DatasourceControl_spec.jsx | 1 -
.../explore/components/DateFilterControl_spec.jsx | 1 -
.../explore/components/DisplayQueryButton_spec.jsx | 1 -
.../explore/components/EmbedCodeButton_spec.jsx | 1 -
.../components/ExploreActionButtons_spec.jsx | 1 -
.../explore/components/ExploreChartHeader_spec.jsx | 1 -
.../explore/components/ExploreChartPanel_spec.js | 3 +-
.../components/ExploreViewContainer_spec.js | 3 +-
.../components/FilterDefinitionOption_spec.jsx | 1 -
.../components/FixedOrMetricControl_spec.jsx | 1 -
.../components/MetricDefinitionOption_spec.jsx | 1 -
.../components/MetricDefinitionValue_spec.jsx | 1 -
.../explore/components/MetricsControl_spec.jsx | 1 -
.../explore/components/QueryAndSaveBtns_spec.jsx | 1 -
.../explore/components/RowCountLabel_spec.jsx | 1 -
.../components/RunQueryActionButton_spec.jsx | 1 -
.../explore/components/SaveModal_spec.jsx | 1 -
.../explore/components/SelectControl_spec.jsx | 1 -
.../explore/components/TextArea_spec.jsx | 1 -
.../components/TimeSeriesColumnControl_spec.jsx | 1 -
.../explore/components/ViewportControl_spec.jsx | 1 -
.../explore/components/VizTypeControl_spec.jsx | 1 -
.../javascripts/explore/exploreActions_spec.js | 1 -
.../assets/spec/javascripts/explore/utils_spec.jsx | 1 -
superset/assets/spec/javascripts/logger_spec.js | 1 -
.../spec/javascripts/messageToasts/.eslintrc | 1 -
.../components/ToastPresenter_spec.jsx | 1 -
.../messageToasts/components/Toast_spec.jsx | 1 -
.../messageToasts/reducers/messageToasts_spec.js | 1 -
.../utils/getToastsFromPyFlashMessages_spec.js | 1 -
.../spec/javascripts/modules/colors_spec.jsx | 1 -
.../assets/spec/javascripts/modules/dates_spec.js | 3 +-
.../assets/spec/javascripts/modules/geo_spec.jsx | 1 -
.../spec/javascripts/modules/sandbox_spec.jsx | 1 -
.../assets/spec/javascripts/modules/time_spec.js | 3 +-
.../assets/spec/javascripts/modules/utils_spec.jsx | 3 +-
.../assets/spec/javascripts/profile/App_spec.jsx | 1 -
.../javascripts/profile/CreatedContent_spec.jsx | 1 -
.../javascripts/profile/EditableTitle_spec.jsx | 1 -
.../spec/javascripts/profile/Favorites_spec.jsx | 1 -
.../javascripts/profile/RecentActivity_spec.jsx | 1 -
.../spec/javascripts/profile/Security_spec.jsx | 1 -
.../spec/javascripts/profile/UserInfo_spec.jsx | 1 -
.../assets/spec/javascripts/sqllab/App_spec.jsx | 1 -
.../spec/javascripts/sqllab/ColumnElement_spec.jsx | 1 -
.../javascripts/sqllab/CopyQueryTabUrl_spec.jsx | 1 -
.../sqllab/ExploreResultsButton_spec.jsx | 1 -
.../javascripts/sqllab/HighlightedSql_spec.jsx | 1 -
.../assets/spec/javascripts/sqllab/Link_spec.jsx | 1 -
.../spec/javascripts/sqllab/QuerySearch_spec.jsx | 1 -
.../javascripts/sqllab/QueryStateLabel_spec.jsx | 1 -
.../spec/javascripts/sqllab/QueryTable_spec.jsx | 1 -
.../spec/javascripts/sqllab/ResultSet_spec.jsx | 1 -
.../spec/javascripts/sqllab/SaveQuery_spec.jsx | 1 -
.../javascripts/sqllab/SqlEditorLeftBar_spec.jsx | 1 -
.../spec/javascripts/sqllab/SqlEditor_spec.jsx | 1 -
.../spec/javascripts/sqllab/TabStatusIcon_spec.jsx | 1 -
.../javascripts/sqllab/TabbedSqlEditors_spec.jsx | 1 -
.../spec/javascripts/sqllab/TableElement_spec.jsx | 1 -
.../assets/spec/javascripts/sqllab/Timer_spec.jsx | 1 -
.../assets/spec/javascripts/sqllab/actions_spec.js | 1 -
.../spec/javascripts/sqllab/reducers_spec.js | 1 -
.../assets/spec/javascripts/utils/common_spec.jsx | 1 -
.../javascripts/visualizations/nvd3_viz_spec.jsx | 1 -
.../spec/javascripts/visualizations/table_spec.jsx | 1 -
.../javascripts/welcome/DashboardTable_spec.jsx | 2 +-
.../spec/javascripts/welcome/Welcome_spec.jsx | 1 -
superset/assets/src/SqlLab/App.jsx | 1 +
superset/assets/src/SqlLab/actions.js | 2 -
.../src/SqlLab/components/ExploreResultsButton.jsx | 1 -
.../assets/src/SqlLab/components/QuerySearch.jsx | 1 -
.../assets/src/SqlLab/components/SqlEditor.jsx | 2 -
.../src/SqlLab/components/SqlEditorLeftBar.jsx | 2 -
superset/assets/src/SqlLab/getInitialState.js | 1 -
superset/assets/src/SqlLab/reducers.js | 1 +
superset/assets/src/chart/Chart.jsx | 1 -
superset/assets/src/dashboard/.eslintrc | 1 -
.../assets/src/dashboard/components/Dashboard.jsx | 1 -
.../dashboard/components/HeaderActionsDropdown.jsx | 1 -
.../assets/src/datasource/DatasourceEditor.jsx | 5 +-
superset/assets/src/explore/App.jsx | 1 -
.../assets/src/explore/actions/exploreActions.js | 6 +++
.../AdhocFilterEditPopoverSqlTabContent.jsx | 1 +
.../explore/components/AdhocMetricEditPopover.jsx | 1 +
.../components/controls/DatasourceControl.jsx | 1 -
.../components/controls/SelectAsyncControl.jsx | 1 -
superset/assets/src/messageToasts/.eslintrc | 1 -
.../src/visualizations/BigNumber/BigNumber.jsx | 1 +
.../src/visualizations/BigNumber/adaptor.jsx | 1 +
.../assets/src/visualizations/MapBox/MapBox.jsx | 4 +-
.../src/visualizations/TimeTable/TimeTable.jsx | 2 +-
.../src/visualizations/deckgl/layers/common.js | 1 +
.../src/visualizations/deckgl/layers/geojson.jsx | 4 +-
superset/assets/src/visualizations/line_multi.js | 3 +-
superset/assets/yarn.lock | 6 +++
193 files changed, 118 insertions(+), 237 deletions(-)
diff --git a/superset/assets/.eslintrc b/superset/assets/.eslintrc
index e49a4e0..c85c957 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 0000000..5b98856
--- /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 10e4f11..31ce704 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 1c95f04..a742d6d 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 1ee49eb..c6bca9e 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 7bac091..dc4e7d4 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 11b2b77..d5571e0 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 d9889af..5b4214b 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 0d48341..6decdc9 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 6955688..20bc359 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 96ed089..de242ba 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 d1e3f37..e5c0bb9 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 8670069..316ac34 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 98d8b51..7401eae 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 8a7f74a..8358b49 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 b53fbfa..8b74d12 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 1c531a1..04529e1 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 9e3cfe8..587469f 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 84357d7..f8a0426 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 81c8f15..5232d8a 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 7af2ceb..3fd9230 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 6f132a9..41adf12 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 278a1ac..43b5a26 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 cf45332..4b818e1 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 e5a17b7..33826fe 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 1aa0074..67edd08 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 494d0d3..6311262 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 e793fef..a854f7e 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 a3f86e3..36759a2 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 e58bb11..5be1191 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 d316dc3..094e1ee 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 8c991fa..d630fe9 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 4c3185f..7215e08 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 d11c37f..83f9760 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 aa64463..76ff388 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 673118b..199b3d2 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 e7ecfc1..28153bb 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 92a18c1..e43f114 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 564857c..7df7575 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 da0f7df..704eb52 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 c7e2c2a..b45e9d8 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 821b637..a2e50e8 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 dbd7054..db8b45a 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 e97414b..a0fbffd 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 c8317f8..0542532 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 1d54775..f21f106 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 9046089..f3aceee 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 a718ff4..54037c7 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 fae59b2..1162e84 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 d521fe5..16f4360 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 4334b37..9e2993a 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 cb07cb9..240cf5e 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 71703b3..af96f60 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 a499fe8..5f2194c 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 e91893d..b86d167 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 4e71c8c..edd13b7 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 1f85085..3d0fca7 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 5add770..d382d25 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 69fca76..be4ae7c 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 0c37855..66e4286 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 dd933ac..1b805e0 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 7772f71..a8e3dbd 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 7e3bb76..df43ae5 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 b49a91f..e8986be 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 4ff6a52..7169229 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 8e6f889..3fc7d02 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 ecaca67..372f4cb 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 71c8aec..2ff15b2 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 71bbccd..3674ac5 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 c45e65a..cf58c78 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 99e2282..e977e28 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 287b7a6..938a86a 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 388630b..66ef5e7 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 3563059..2a0efcb 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 f52eba9..b7cdb70 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 8d00c18..c861827 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 137ac39..0b7c6ab 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 3cbc92f..ef0a4f4 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 36d3bdd..eb3161e 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 432be76..fe6797c 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 f1e49ef..6d8b009 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 2123ed7..f385625 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 2014bbc..7c99c6c 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 a1cdb23..c3766bf 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 b639581..23d3b9a 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 673b854..9d2e2d3 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 015999a..d845cc5 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 eebc703..5f03c2a 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 4ed5d68..47c09f9 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 54ff78e..b0e426c 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 233eb8d..e70858b 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 522329a..9e98cb6 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 a331245..27aba7d 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 ec58638..2285df4 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 10e582b..1551286 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 c63392e..7a9a59d 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 64a657e..7f408f9 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 118799e..80fc0d0 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 d03e30b..7f28bf3 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 9c380c4..2230d97 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 ab43ddf..8bca871 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 3789fcc..896b310 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 5e701f2..933e0df 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 03c6ad1..b354b8d 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 b159f17..0d82de5 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 9fe35e8..e6340f2 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 05e02b9..62e4fe3 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 97a6858..4774d9c 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 418e9c5..1a8f766 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 896a527..5e0f3ae 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 8afc990..6685bff 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 c22a7bb..70712af 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 9cdd485..53dd860 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 33ab844..f29f491 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 5e1e4b8..4b4f1a4 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 38194e5..b0cf1db 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 c1253f0..d6fc122 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 7e28ab0..3a03d76 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 a840e7c..eef3f27 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 03b73c9..bd41e1d 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 72aebbd..7b4749a 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 8bfea68..9d2eaf0 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 64580b4..e5b46b4 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 a3f86e3..36759a2 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 aa04adc..ed39d7c 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 ce3396c..2ecf889 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 8d71270..6471ccf 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 a3c7ce9..edcddef 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 be88233..a91c74f 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 7101b1d..957d820 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 db51bb4..18b45db 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 05283b0..f86e69c 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 36260a4..09a0d14 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 4a319af..f227970 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 dcef27b..80e5789 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 08457d9..04b0079 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 de0ca80..5387322 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 252d99e..b35817c 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 60240fc..0122e67 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 20376d2..e544c45 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 315dd6f..2c5b3e5 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 ce76e30..4e64d17 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 fe4e9c4..7ea6862 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 662cb35..e8f8438 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 1d0448e..98972ff 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 634e8a9..b8bc395 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 e884d23..f37dd6f 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 cff4501..dc25604 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 b8f6dd5..bca5c19 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 5e2560a..c985750 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 8ca9acd..d3f3690 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 865b67a..c47f593 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 bc4957e..62cb9ae 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 b068965..4e6a2c8 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 d200d40..f959419 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 0846af8..6d4e007 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 b5d8b76..6d683d3 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 681d731..c7a9534 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 c3d4aa2..c2f1f45 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 2931d13..1ade038 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 861c38a..1b56513 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 f1b58f1..ded0acc 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 14e04d7..5252e9d 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 113f00c..bfb9825 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 a0a3982..4ffd8ca 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 f86966a..01f9357 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 81bd913..a808949 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 b641238..dfaab5a 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 d13d993..17dd9b1 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 d3ed2bb..c595ea6 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 d20d494..7bc7122 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 9452ac5..c33ff1e 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 ec88027..7fa60b1 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 a9dd0ff..43d13b1 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 a3f86e3..36759a2 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 2bb9b9c..20c161b 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 4c25399..c04e2b4 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 48c2401..4d56b46 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 {
</Fieldset>);
}
renderSpatialTab() {
- const spatials = this.state.datasource.spatials;
+ const { datasource } = this.state;
+ const { spatials, all_cols: allCols } = datasource;
return (
<Tab
title={<CollectionTabTitle collection={spatials} title={t('Spatial')}
/>}
@@ -414,7 +415,7 @@ export class DatasourceEditor extends React.PureComponent {
name: (d, onChange) => (
<EditableTitle canEdit title={d} onSaveTitle={onChange} />),
config: (v, onChange) => (
- <SpatialControl value={v} onChange={onChange}
choices={datasource.all_cols} />
+ <SpatialControl value={v} onChange={onChange} choices={allCols}
/>
),
}}
/>
diff --git a/superset/assets/src/explore/App.jsx
b/superset/assets/src/explore/App.jsx
index 2f27989..d46b494 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 b8a883e..bd9a174 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 7e8a6a6..6e5fe3c 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 77926a8..96b0314 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 5b616f1..5392218 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 fc8fb3c..2fb778b 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 a3f86e3..36759a2 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 9f8a4a2..ff78a56 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 40a3a0f..fc20c22 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 e6eb71a..85cd1b1 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 ec85262..8ce9a7d 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 7eed061..0a446dd 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 74a862a..72790f1 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 684916c..b8cd1a0 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 6f04ebf..e0fc1ea 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"