/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ describe('Visualization > Pivot Table', () => { const PIVOT_TABLE_FORM_DATA = { datasource: '3__table', viz_type: 'pivot_table', slice_id: 61, granularity_sqla: 'ds', time_grain_sqla: 'P1D', time_range: '100+years+ago+:+now', metrics: ['sum__num'], adhoc_filters: [], groupby: ['name'], columns: ['state'], row_limit: 5000, pandas_aggfunc: 'sum', pivot_margins: true, number_format: '.3s', combine_metric: false, }; const TEST_METRIC = { expressionType: 'SIMPLE', column: { id: 338, column_name: 'num_boys', expression: '', filterable: false, groupby: false, is_dttm: false, type: 'BIGINT', optionName: '_col_num_boys', }, aggregate: 'SUM', hasCustomLabel: false, label: 'SUM(num_boys)', optionName: 'metric_gvpdjt0v2qf_6hkf56o012', }; function verify(formData) { cy.visitChartByParams(JSON.stringify(formData)); cy.verifySliceSuccess({ waitAlias: '@getJson', chartSelector: 'table' }); } beforeEach(() => { cy.login(); cy.intercept('POST', '/superset/explore_json/**').as('getJson'); }); it('should work with single groupby', () => { verify(PIVOT_TABLE_FORM_DATA); cy.get('.chart-container tr:eq(0) th:eq(1)').contains('sum__num'); cy.get('.chart-container tr:eq(1) th:eq(0)').contains('state'); cy.get('.chart-container tr:eq(2) th:eq(0)').contains('name'); }); it('should work with more than one groupby', () => { verify({ ...PIVOT_TABLE_FORM_DATA, groupby: ['name', 'gender'], }); cy.get('.chart-container tr:eq(0) th:eq(2)').contains('sum__num'); cy.get('.chart-container tr:eq(1) th:eq(1)').contains('state'); cy.get('.chart-container tr:eq(2) th:eq(0)').contains('name'); cy.get('.chart-container tr:eq(2) th:eq(1)').contains('gender'); }); it('should work with multiple metrics', () => { verify({ ...PIVOT_TABLE_FORM_DATA, metrics: ['sum__num', TEST_METRIC], }); cy.get('.chart-container tr:eq(0) th:eq(1)').contains('sum__num'); cy.get('.chart-container tr:eq(0) th:eq(2)').contains('SUM(num_boys)'); cy.get('.chart-container tr:eq(1) th:eq(0)').contains('state'); cy.get('.chart-container tr:eq(2) th:eq(0)').contains('name'); }); it('should work with multiple groupby and multiple metrics', () => { verify({ ...PIVOT_TABLE_FORM_DATA, groupby: ['name', 'gender'], metrics: ['sum__num', TEST_METRIC], }); cy.get('.chart-container tr:eq(0) th:eq(2)').contains('sum__num'); cy.get('.chart-container tr:eq(0) th:eq(3)').contains('SUM(num_boys)'); cy.get('.chart-container tr:eq(2) th:eq(0)').contains('name'); cy.get('.chart-container tr:eq(2) th:eq(1)').contains('gender'); }); });