You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by gr...@apache.org on 2018/09/11 18:03:50 UTC
[incubator-superset] branch master updated: Adding line and big
number total integration tests (#5846)
This is an automated email from the ASF dual-hosted git repository.
graceguo 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 6ae285b Adding line and big number total integration tests (#5846)
6ae285b is described below
commit 6ae285b6f7a46a1150440fd0463df86821c0cf9d
Author: michellethomas <mi...@gmail.com>
AuthorDate: Tue Sep 11 11:03:46 2018 -0700
Adding line and big number total integration tests (#5846)
* Adding line and big number total integration tests
* Breakout visualization tests into multiple files
---
superset/assets/cypress.json | 4 +-
.../cypress/integration/explore/control_tests.js | 6 +-
.../integration/explore/visualization_tests.js | 54 --------
.../explore/visualizations/big_number.js | 58 +++++++++
.../integration/explore/visualizations/line.js | 140 +++++++++++++++++++++
.../explore/visualizations/shared.helper.js | 40 ++++++
superset/assets/cypress/support/commands.js | 22 +++-
7 files changed, 262 insertions(+), 62 deletions(-)
diff --git a/superset/assets/cypress.json b/superset/assets/cypress.json
index c84e05d..7ede593 100644
--- a/superset/assets/cypress.json
+++ b/superset/assets/cypress.json
@@ -1,3 +1,5 @@
{
- "baseUrl": "http://localhost:8081"
+ "baseUrl": "http://localhost:8081",
+ "videoUploadOnPasses": false,
+ "ignoreTestFiles": "*.helper.js"
}
diff --git a/superset/assets/cypress/integration/explore/control_tests.js b/superset/assets/cypress/integration/explore/control_tests.js
index d4c5e4c..1c95f04 100644
--- a/superset/assets/cypress/integration/explore/control_tests.js
+++ b/superset/assets/cypress/integration/explore/control_tests.js
@@ -9,7 +9,7 @@ describe('Groupby', function () {
cy.route('POST', '/superset/explore_json/**').as('getJson');
cy.visitChartByName('Num Births Trend');
- cy.verifySliceSuccess('@getJson');
+ cy.verifySliceSuccess({ waitAlias: '@getJson' });
cy.get('[data-test=groupby]').within(() => {
cy.get('.Select-control').click();
@@ -17,7 +17,7 @@ describe('Groupby', function () {
cy.get('.VirtualizedSelectFocusedOption').click();
});
cy.get('button.query').click();
- cy.verifySliceSuccess('@getJson');
+ cy.verifySliceSuccess({ waitAlias: '@getJson' });
});
});
@@ -30,7 +30,7 @@ describe('SimpleAdhocMetric', function () {
cy.route('POST', '/superset/explore_json/**').as('getJson');
cy.visitChartByName('Num Births Trend');
- cy.verifySliceSuccess('@getJson');
+ cy.verifySliceSuccess({ waitAlias: '@getJson' });
cy.get('[data-test=metrics]').within(() => {
cy.get('.select-clear').click();
diff --git a/superset/assets/cypress/integration/explore/visualization_tests.js b/superset/assets/cypress/integration/explore/visualization_tests.js
deleted file mode 100644
index 50c331d..0000000
--- a/superset/assets/cypress/integration/explore/visualization_tests.js
+++ /dev/null
@@ -1,54 +0,0 @@
-// ***********************************************
-// Tests for visualization types
-// ***********************************************
-
-const FORM_DATA_DEFAULTS = {
- datasource: '3__table',
- viz_type: 'line',
- granularity_sqla: 'ds',
- time_grain_sqla: null,
- time_range: '100+years+ago+:+now',
- adhoc_filters: [],
- groupby: [],
- limit: null,
- timeseries_limit_metric: null,
- order_desc: false,
- contribution: false,
-};
-
-describe('Line', function () {
- it('Test line chart with adhoc metric', function () {
- cy.server();
- cy.login();
-
- const metrics = [{
- expressionType: 'SIMPLE',
- column: {
- id: 336,
- column_name: 'num',
- verbose_name: null,
- description: null,
- expression: '',
- filterable: false,
- groupby: false,
- is_dttm: false,
- type: 'BIGINT',
- database_expression: null,
- python_date_format: null,
- optionName: '_col_num',
- },
- aggregate: 'SUM',
- sqlExpression: null,
- hasCustomLabel: false,
- fromFormData: false,
- label: 'SUM(num)',
- optionName: 'metric_1de0s4viy5d_ly7y8k6ghvk',
- }];
-
- const formData = { ...FORM_DATA_DEFAULTS, metrics };
-
- cy.route('POST', '/superset/explore_json/**').as('getJson');
- cy.visitChartByParams(JSON.stringify(formData));
- cy.verifySliceSuccess('@getJson');
- });
-});
diff --git a/superset/assets/cypress/integration/explore/visualizations/big_number.js b/superset/assets/cypress/integration/explore/visualizations/big_number.js
new file mode 100644
index 0000000..1ee49eb
--- /dev/null
+++ b/superset/assets/cypress/integration/explore/visualizations/big_number.js
@@ -0,0 +1,58 @@
+import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
+
+// Big Number Total
+
+describe('Big Number Total', function () {
+ const BIG_NUMBER_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'big_number_total' };
+
+ it('Test big number chart with adhoc metric', function () {
+ cy.server();
+ cy.login();
+
+ const formData = { ...BIG_NUMBER_DEFAULTS, metric: NUM_METRIC };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', querySubstring: NUM_METRIC.label });
+ });
+
+ it('Test big number chart with simple filter', function () {
+ 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 formData = { ...BIG_NUMBER_DEFAULTS, metric: 'count', adhoc_filters: filters };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson' });
+ });
+
+ it('Test big number chart ignores groupby', function () {
+ cy.server();
+ cy.login();
+
+ const formData = { ...BIG_NUMBER_DEFAULTS, metric: NUM_METRIC, groupby: ['state'] };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.wait(['@getJson']).then((data) => {
+ expect(data.status).to.eq(200);
+ if (data.response.body.error) {
+ expect(data.response.body.error).to.eq(null);
+ }
+ expect(data.response.body.query).not.contains(formData.groupby[0]);
+ cy.get('.slice_container');
+ });
+ });
+});
diff --git a/superset/assets/cypress/integration/explore/visualizations/line.js b/superset/assets/cypress/integration/explore/visualizations/line.js
new file mode 100644
index 0000000..7bac091
--- /dev/null
+++ b/superset/assets/cypress/integration/explore/visualizations/line.js
@@ -0,0 +1,140 @@
+import { FORM_DATA_DEFAULTS, NUM_METRIC } from './shared.helper';
+
+describe('Line', function () {
+ const LINE_CHART_DEFAULTS = { ...FORM_DATA_DEFAULTS, viz_type: 'line' };
+
+ it('Test line chart with adhoc metric', function () {
+ cy.server();
+ cy.login();
+
+ const formData = { ...LINE_CHART_DEFAULTS, metrics: [NUM_METRIC] };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+
+ it('Test line chart with groupby', function () {
+ cy.server();
+ cy.login();
+
+ const metrics = ['count'];
+ const groupby = ['gender'];
+
+ const formData = { ...LINE_CHART_DEFAULTS, metrics, groupby };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+
+ it('Test line chart with simple filter', function () {
+ 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 formData = { ...LINE_CHART_DEFAULTS, metrics, adhoc_filters: filters };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+
+ it('Test line chart with series limit sort asc', function () {
+ cy.server();
+ cy.login();
+
+ const formData = {
+ ...LINE_CHART_DEFAULTS,
+ metrics: [NUM_METRIC],
+ limit: 10,
+ groupby: ['name'],
+ timeseries_limit_metric: NUM_METRIC,
+ };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+
+ it('Test line chart with series limit sort desc', function () {
+ cy.server();
+ cy.login();
+
+ const formData = {
+ ...LINE_CHART_DEFAULTS,
+ metrics: [NUM_METRIC],
+ limit: 10,
+ groupby: ['name'],
+ timeseries_limit_metric: NUM_METRIC,
+ order_desc: true,
+ };
+
+ cy.route('POST', '/superset/explore_json/**').as('getJson');
+ cy.visitChartByParams(JSON.stringify(formData));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+
+ it('Test line chart with rolling avg', function () {
+ cy.server();
+ cy.login();
+
+ const metrics = [NUM_METRIC];
+
+ const formData = { ...LINE_CHART_DEFAULTS, metrics, rolling_type: 'mean', rolling_periods: 10 };
+
+ 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 1 year', function () {
+ cy.server();
+ cy.login();
+
+ const metrics = [NUM_METRIC];
+
+ 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 () {
+ cy.server();
+ cy.login();
+
+ const metrics = [NUM_METRIC];
+
+ 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 () {
+ cy.server();
+ cy.login();
+
+ const metrics = [NUM_METRIC];
+
+ 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));
+ cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'svg' });
+ });
+});
diff --git a/superset/assets/cypress/integration/explore/visualizations/shared.helper.js b/superset/assets/cypress/integration/explore/visualizations/shared.helper.js
new file mode 100644
index 0000000..7a1e519
--- /dev/null
+++ b/superset/assets/cypress/integration/explore/visualizations/shared.helper.js
@@ -0,0 +1,40 @@
+// ***********************************************
+// Constants for visualization tests
+// ***********************************************
+
+export const FORM_DATA_DEFAULTS = {
+ datasource: '3__table',
+ granularity_sqla: 'ds',
+ time_grain_sqla: null,
+ time_range: '100+years+ago+:+now',
+ adhoc_filters: [],
+ groupby: [],
+ limit: null,
+ timeseries_limit_metric: null,
+ order_desc: false,
+ contribution: false,
+};
+
+export const NUM_METRIC = {
+ expressionType: 'SIMPLE',
+ column: {
+ id: 336,
+ column_name: 'num',
+ verbose_name: null,
+ description: null,
+ expression: '',
+ filterable: false,
+ groupby: false,
+ is_dttm: false,
+ type: 'BIGINT',
+ database_expression: null,
+ python_date_format: null,
+ optionName: '_col_num',
+ },
+ aggregate: 'SUM',
+ sqlExpression: null,
+ hasCustomLabel: false,
+ fromFormData: false,
+ label: 'Sum(num)',
+ optionName: 'metric_1de0s4viy5d_ly7y8k6ghvk',
+ };
diff --git a/superset/assets/cypress/support/commands.js b/superset/assets/cypress/support/commands.js
index 41c64a7..28e02a5 100644
--- a/superset/assets/cypress/support/commands.js
+++ b/superset/assets/cypress/support/commands.js
@@ -50,10 +50,24 @@ Cypress.Commands.add('visitChartByParams', (params) => {
cy.visit(`${BASE_EXPLORE_URL}${params}`);
});
-Cypress.Commands.add('verifySliceSuccess', (waitAlias) => {
- cy.wait([waitAlias]).then((data) => {
+Cypress.Commands.add('verifySliceSuccess', ({ waitAlias, querySubstring, chartSelector }) => {
+ cy.wait(waitAlias).then((data) => {
expect(data.status).to.eq(200);
- expect(data.response.body).to.have.property('error', null);
- cy.get('.slice_container');
+ if (data.response.body.error) {
+ expect(data.response.body.error).to.eq(null);
+ }
+ if (querySubstring) {
+ expect(data.response.body.query).contains(querySubstring);
+ }
+
+ cy.get('.slice_container').within(() => {
+ if (chartSelector) {
+ cy.get(chartSelector).then((charts) => {
+ const firstChart = charts[0];
+ expect(firstChart.clientWidth).greaterThan(0);
+ expect(firstChart.clientHeight).greaterThan(0);
+ });
+ }
+ });
});
});