You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2022/09/02 16:55:18 UTC

[superset] 05/05: Additional sample data management enhancements

This is an automated email from the ASF dual-hosted git repository.

diegopucci pushed a commit to branch chore/cypress-runtime-enhancements
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 1c4d440794623d2584f3da770e5e26eba250612b
Author: geido <di...@gmail.com>
AuthorDate: Fri Sep 2 19:54:55 2022 +0300

    Additional sample data management enhancements
---
 .../cypress-base/cypress/support/index.d.ts        |   1 -
 .../cypress-base/cypress/support/index.ts          | 234 ++++++++++-----------
 2 files changed, 110 insertions(+), 125 deletions(-)

diff --git a/superset-frontend/cypress-base/cypress/support/index.d.ts b/superset-frontend/cypress-base/cypress/support/index.d.ts
index a7e0f6836a..b884c1c430 100644
--- a/superset-frontend/cypress-base/cypress/support/index.d.ts
+++ b/superset-frontend/cypress-base/cypress/support/index.d.ts
@@ -38,7 +38,6 @@ declare namespace Cypress {
 
     getBySel(selector: string): cy;
     getBySelLike(selector: string): cy;
-    getSampleData(): void;
     cleanCharts(): cy;
     cleanDashboards(): cy;
     loadChartFixtures(): cy;
diff --git a/superset-frontend/cypress-base/cypress/support/index.ts b/superset-frontend/cypress-base/cypress/support/index.ts
index 6116feef9c..1c374eafc6 100644
--- a/superset-frontend/cypress-base/cypress/support/index.ts
+++ b/superset-frontend/cypress-base/cypress/support/index.ts
@@ -23,8 +23,6 @@ require('cy-verify-downloads').addCustomCommand();
 
 const BASE_EXPLORE_URL = '/explore/?form_data=';
 const TokenName = Cypress.env('TOKEN_NAME');
-let SAMPLE_DASHBOARDS: Record<string, any>[] = [];
-let SAMPLE_CHARTS: Record<string, any>[] = [];
 let DASHBOARD_FIXTURES: Record<string, any>[] = [];
 let CHART_FIXTURES: Record<string, any>[] = [];
 
@@ -44,73 +42,69 @@ before(() => {
   cy.login();
   cy.loadChartFixtures();
   cy.loadDashboardFixtures();
-  cy.getSampleData();
   cy.cleanDashboards();
   cy.cleanCharts();
 });
 
-Cypress.Commands.add('getSampleData', () => {
-  cy.getCharts().then((slices: any) => {
-    SAMPLE_CHARTS = slices;
-  });
-  cy.getDashboards().then((dashboards: any) => {
-    SAMPLE_DASHBOARDS = dashboards;
-  });
-});
-
 Cypress.Commands.add('cleanDashboards', () =>
-{
-  const deletableDashboards = [];
-  for (let i = 0; i < DASHBOARD_FIXTURES.length; i += 1) {
-    const isInDb = SAMPLE_DASHBOARDS.find(d => d.dashboard_title === DASHBOARD_FIXTURES[i].dashboard_title);
-    if (isInDb) {
-      deletableDashboards.push(isInDb.id);
+  cy.getDashboards().then((sampleDashboards: any) => {
+    const deletableDashboards = [];
+    for (let i = 0; i < DASHBOARD_FIXTURES.length; i += 1) {
+      const isInDb = sampleDashboards.find((d: any) => d.dashboard_title === DASHBOARD_FIXTURES[i].dashboard_title);
+      if (isInDb) {
+        deletableDashboards.push(isInDb.id);
+      }
     }
-  }
-  return cy
-    .request({
-      failOnStatusCode: false,
-      method: 'DELETE',
-      url: `api/v1/dashboard/?q=!(${deletableDashboards.join(',')})`,
-      headers: {
-        Cookie: `csrf_access_token=${window.localStorage.getItem(
-          'access_token',
-        )}`,
-        'Content-Type': 'application/json',
-        Authorization: `Bearer ${TokenName}`,
-        'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
-        Referer: `${Cypress.config().baseUrl}/`,
-      },
-    })
-    .then(resp => resp)
-});
+    if (deletableDashboards.length) {
+      return cy
+      .request({
+        failOnStatusCode: false,
+        method: 'DELETE',
+        url: `api/v1/dashboard/?q=!(${deletableDashboards.join(',')})`,
+        headers: {
+          Cookie: `csrf_access_token=${window.localStorage.getItem(
+            'access_token',
+          )}`,
+          'Content-Type': 'application/json',
+          Authorization: `Bearer ${TokenName}`,
+          'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
+          Referer: `${Cypress.config().baseUrl}/`,
+        },
+      })
+      .then(resp => resp)
+    }
+  })
+);
 
 Cypress.Commands.add('cleanCharts', () =>
-{
-  const deletableCharts = [];
-  for (let i = 0; i < CHART_FIXTURES.length; i += 1) {
-    const isInDb = SAMPLE_CHARTS.find(c => c.slice_name === CHART_FIXTURES[i].slice_name);
-    if (isInDb) {
-      deletableCharts.push(isInDb.id);
+  cy.getCharts().then((sampleCharts: any) => {
+    const deletableCharts = [];
+    for (let i = 0; i < CHART_FIXTURES.length; i += 1) {
+      const isInDb = sampleCharts.find((c: any) => c.slice_name === CHART_FIXTURES[i].slice_name);
+      if (isInDb) {
+        deletableCharts.push(isInDb.id);
+      }
     }
-  }
-  return cy
-    .request({
-      failOnStatusCode: false,
-      method: 'DELETE',
-      url: `api/v1/chart/?q=!(${deletableCharts.join(',')})`,
-      headers: {
-        Cookie: `csrf_access_token=${window.localStorage.getItem(
-          'access_token',
-        )}`,
-        'Content-Type': 'application/json',
-        Authorization: `Bearer ${TokenName}`,
-        'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
-        Referer: `${Cypress.config().baseUrl}/`,
-      },
-    })
-    .then(resp => resp)
-});
+    if (deletableCharts) {
+      return cy
+      .request({
+        failOnStatusCode: false,
+        method: 'DELETE',
+        url: `api/v1/chart/?q=!(${deletableCharts.join(',')})`,
+        headers: {
+          Cookie: `csrf_access_token=${window.localStorage.getItem(
+            'access_token',
+          )}`,
+          'Content-Type': 'application/json',
+          Authorization: `Bearer ${TokenName}`,
+          'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
+          Referer: `${Cypress.config().baseUrl}/`,
+        },
+      })
+      .then(resp => resp)
+    }
+  })
+);
 
 Cypress.Commands.add('getBySel', (selector, ...args) =>
   cy.get(`[data-test=${selector}]`, ...args),
@@ -241,70 +235,61 @@ Cypress.Commands.add(
   },
 );
 
-Cypress.Commands.add('createSampleDashboards', () => {
-  const requests: any = [];
-  cy.cleanDashboards();
-  cy.fixture('dashboards.json').then(dashboards => {
-    for (let i = 0; i < dashboards.length; i += 1) {
-      requests.push(
-        cy.request({
-          method: 'POST',
-          url: `/api/v1/dashboard/`,
-          body: dashboards[i],
-          failOnStatusCode: false,
-          headers: {
-            Cookie: `csrf_access_token=${window.localStorage.getItem(
-              'access_token',
-            )}`,
-            'Content-Type': 'application/json',
-            Authorization: `Bearer ${TokenName}`,
-            'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
-            Referer: `${Cypress.config().baseUrl}/`,
-          },
-        }),
-      );
+Cypress.Commands.add('createSampleDashboards', () =>
+  cy.cleanDashboards().then(() => {
+    for (let i = 0; i < DASHBOARD_FIXTURES.length; i += 1) {
+      cy.request({
+        method: 'POST',
+        url: `/api/v1/dashboard/`,
+        body: DASHBOARD_FIXTURES[i],
+        failOnStatusCode: false,
+        headers: {
+          Cookie: `csrf_access_token=${window.localStorage.getItem(
+            'access_token',
+          )}`,
+          'Content-Type': 'application/json',
+          Authorization: `Bearer ${TokenName}`,
+          'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
+          Referer: `${Cypress.config().baseUrl}/`,
+        },
+      })
     }
-    return Promise.all(requests).then(() => cy.getSampleData());
-  });
-});
+  })
+);
 
-Cypress.Commands.add('createSampleCharts', () => {
-  const requests: any = [];
-  cy.cleanCharts();
-  return cy.fixture('charts.json').then(charts => {
-    for (let i = 0; i < charts.length; i += 1) {
-      requests.push(
-        cy.request({
-          method: 'POST',
-          url: `/api/v1/chart/`,
-          body: charts[i],
-          failOnStatusCode: false,
-          headers: {
-            Cookie: `csrf_access_token=${window.localStorage.getItem(
-              'access_token',
-            )}`,
-            'Content-Type': 'application/json',
-            Authorization: `Bearer ${TokenName}`,
-            'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
-            Referer: `${Cypress.config().baseUrl}/`,
-          },
-        }),
-      );
+Cypress.Commands.add('createSampleCharts', () =>
+  cy.cleanCharts().then(() => {
+    for (let i = 0; i < CHART_FIXTURES.length; i += 1) {
+      cy.request({
+        method: 'POST',
+        url: `/api/v1/chart/`,
+        body: CHART_FIXTURES[i],
+        failOnStatusCode: false,
+        headers: {
+          Cookie: `csrf_access_token=${window.localStorage.getItem(
+            'access_token',
+          )}`,
+          'Content-Type': 'application/json',
+          Authorization: `Bearer ${TokenName}`,
+          'X-CSRFToken': `${window.localStorage.getItem('access_token')}`,
+          Referer: `${Cypress.config().baseUrl}/`,
+        },
+      })
     }
-    return Promise.all(requests).then(() => cy.getSampleData());
-  });
-});
+  })
+);
 
 Cypress.Commands.add(
   'deleteDashboardByName',
-  (dashboardName: string, failOnStatusCode: boolean) => {
-    const dashboard = SAMPLE_DASHBOARDS.find(
-      d => d.dashboard_title === dashboardName,
-    );
-    if (dashboard) {
-      cy.deleteDashboard(dashboard.id, failOnStatusCode);
-    }
-  },
+  (dashboardName: string, failOnStatusCode: boolean) =>
+    cy.getDashboards().then((sampleDashboards: any) => {
+      const dashboard = sampleDashboards.find(
+        (d: any) => d.dashboard_title === dashboardName,
+      );
+      if (dashboard) {
+        cy.deleteDashboard(dashboard.id, failOnStatusCode);
+      }
+    })
 );
 
 Cypress.Commands.add('deleteDashboard', (id: number, failOnStatusCode = false) =>
@@ -373,10 +358,11 @@ Cypress.Commands.add('getCharts', () =>
 
 Cypress.Commands.add(
   'deleteChartByName',
-  (sliceName: string, failOnStatusCode: boolean) => {
-    const chart = SAMPLE_CHARTS.find(c => c.slice_name === sliceName);
-    if (chart) {
-      cy.deleteChart(chart.id, failOnStatusCode);
-    }
-  },
+  (sliceName: string, failOnStatusCode: boolean) =>
+    cy.getCharts().then((sampleCharts: any) => {
+      const chart = sampleCharts.find((c: any) => c.slice_name === sliceName);
+      if (chart) {
+        cy.deleteChart(chart.id, failOnStatusCode);
+      }
+    })
 );