229 lines
9.4 KiB
TypeScript
229 lines
9.4 KiB
TypeScript
import {expect} from '@playwright/test';
|
|
|
|
import {
|
|
ChartKitQa,
|
|
DialogFieldBarsSettingsQa,
|
|
Operations,
|
|
WizardPageQa,
|
|
WizardVisualizationId,
|
|
} from '../../../../../src/shared';
|
|
import {PlaceholderName} from '../../../../page-objects/wizard/SectionVisualization';
|
|
import WizardPage from '../../../../page-objects/wizard/WizardPage';
|
|
import {openTestPage, slct} from '../../../../utils';
|
|
import datalensTest from '../../../../utils/playwright/globalTestDefinition';
|
|
|
|
datalensTest.describe('Wizard', () => {
|
|
datalensTest.describe('Flat table', () => {
|
|
datalensTest.beforeEach(async ({page, config}) => {
|
|
await openTestPage(page, config.wizard.urls.WizardBasicDataset);
|
|
|
|
const wizardPage = new WizardPage({page});
|
|
await wizardPage.setVisualization(WizardVisualizationId.FlatTable);
|
|
});
|
|
|
|
datalensTest('Tree column sorting', async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
|
|
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
|
|
|
|
const treeFieldName = 'tree';
|
|
await wizardPage.createNewFieldWithFormula(
|
|
treeFieldName,
|
|
'tree(array([Category], [sub_category]))',
|
|
);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
treeFieldName,
|
|
);
|
|
await expect(previewLoader).not.toBeVisible();
|
|
|
|
// Open a tree branch
|
|
await chartContainer.locator('td', {hasText: 'Furniture'}).click();
|
|
|
|
// Sort values by clicking on header
|
|
await chartContainer.locator('thead', {hasText: treeFieldName}).first().click();
|
|
|
|
const expectedOrder = [
|
|
['Technology'],
|
|
['Office Supplies'],
|
|
['Furniture'],
|
|
['Tables'],
|
|
['Furnishings'],
|
|
['Chairs'],
|
|
['Bookcases'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
|
|
});
|
|
|
|
datalensTest('Sorting negative numbers with linear indicator', async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
|
|
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
|
|
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'Id');
|
|
await wizardPage.filterEditor.selectFilterOperation(Operations.LT);
|
|
await wizardPage.filterEditor.setInputValue('5');
|
|
await wizardPage.filterEditor.apply();
|
|
|
|
const treeFieldName = 'Id2';
|
|
await wizardPage.createNewFieldWithFormula(treeFieldName, 'max([id] - 2.5)');
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'Id',
|
|
);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'Id2',
|
|
);
|
|
// Add bar to Id2
|
|
await wizardPage.visualizationItemDialog.open(PlaceholderName.FlatTableColumns, 'Id2');
|
|
await wizardPage.page.locator(slct(DialogFieldBarsSettingsQa.EnableButton)).click();
|
|
await wizardPage.visualizationItemDialog.clickOnApplyButton();
|
|
|
|
await expect(previewLoader).not.toBeVisible();
|
|
|
|
const initialOrder = [
|
|
['1', '-1,50'],
|
|
['2', '-0,50'],
|
|
['3', '0,50'],
|
|
['4', '1,50'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
|
|
|
|
// Sort values by clicking on header
|
|
await chartContainer.locator('thead', {hasText: 'Id2'}).first().click();
|
|
const expectedOrder = [
|
|
['4', '1,50'],
|
|
['3', '0,50'],
|
|
['2', '-0,50'],
|
|
['1', '-1,50'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
|
|
});
|
|
|
|
datalensTest('Sorting dates with null values', async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
|
|
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
|
|
|
|
await wizardPage.createNewFieldWithFormula('year', 'year([Order_date])');
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'year');
|
|
await wizardPage.filterEditor.selectFilterOperation(Operations.EQ);
|
|
await wizardPage.filterEditor.setInputValue('2015');
|
|
await wizardPage.filterEditor.apply();
|
|
|
|
await wizardPage.createNewFieldWithFormula('month', 'datetrunc([Order_date], "month")');
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'month',
|
|
);
|
|
|
|
await wizardPage.createNewFieldWithFormula(
|
|
'with_null',
|
|
'if(month([Order_date]) = 2) then null else datetrunc([month], "month") end',
|
|
);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'with_null',
|
|
);
|
|
|
|
await expect(previewLoader).not.toBeVisible();
|
|
|
|
const initialOrder = [
|
|
['01.01.2015', '01.01.2015'],
|
|
['01.02.2015', 'null'],
|
|
['01.03.2015', '01.03.2015'],
|
|
['01.04.2015', '01.04.2015'],
|
|
['01.05.2015', '01.05.2015'],
|
|
['01.06.2015', '01.06.2015'],
|
|
['01.07.2015', '01.07.2015'],
|
|
['01.08.2015', '01.08.2015'],
|
|
['01.09.2015', '01.09.2015'],
|
|
['01.10.2015', '01.10.2015'],
|
|
['01.11.2015', '01.11.2015'],
|
|
['01.12.2015', '01.12.2015'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
|
|
|
|
// Sort values by clicking on header
|
|
await chartContainer.locator('thead', {hasText: 'with_null'}).first().click();
|
|
const expectedOrder = [
|
|
['01.12.2015', '01.12.2015'],
|
|
['01.11.2015', '01.11.2015'],
|
|
['01.10.2015', '01.10.2015'],
|
|
['01.09.2015', '01.09.2015'],
|
|
['01.08.2015', '01.08.2015'],
|
|
['01.07.2015', '01.07.2015'],
|
|
['01.06.2015', '01.06.2015'],
|
|
['01.05.2015', '01.05.2015'],
|
|
['01.04.2015', '01.04.2015'],
|
|
['01.03.2015', '01.03.2015'],
|
|
['01.01.2015', '01.01.2015'],
|
|
['01.02.2015', 'null'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
|
|
});
|
|
|
|
datalensTest('Sorting numbers with null values', async ({page}) => {
|
|
const wizardPage = new WizardPage({page});
|
|
const chartContainer = page.locator(slct(WizardPageQa.SectionPreview));
|
|
const previewLoader = chartContainer.locator(slct(ChartKitQa.Loader));
|
|
|
|
await wizardPage.createNewFieldWithFormula('year', 'year([Order_date])');
|
|
await wizardPage.sectionVisualization.addFieldByClick(PlaceholderName.Filters, 'year');
|
|
await wizardPage.filterEditor.selectFilterOperation(Operations.EQ);
|
|
await wizardPage.filterEditor.setInputValue('2015');
|
|
await wizardPage.filterEditor.apply();
|
|
|
|
await wizardPage.createNewFieldWithFormula('month', 'datepart([Order_date], "month")');
|
|
await wizardPage.createNewFieldWithFormula(
|
|
'with_null',
|
|
'if([month] = 2) then null else [month] end',
|
|
);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'month',
|
|
);
|
|
await wizardPage.sectionVisualization.addFieldByClick(
|
|
PlaceholderName.FlatTableColumns,
|
|
'with_null',
|
|
);
|
|
await expect(previewLoader).not.toBeVisible();
|
|
|
|
const initialOrder = [
|
|
['1', '1'],
|
|
['2', 'null'],
|
|
['3', '3'],
|
|
['4', '4'],
|
|
['5', '5'],
|
|
['6', '6'],
|
|
['7', '7'],
|
|
['8', '8'],
|
|
['9', '9'],
|
|
['10', '10'],
|
|
['11', '11'],
|
|
['12', '12'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(initialOrder);
|
|
|
|
// Sort values by clicking on header
|
|
await chartContainer.locator('thead', {hasText: 'with_null'}).first().click();
|
|
const expectedOrder = [
|
|
['12', '12'],
|
|
['11', '11'],
|
|
['10', '10'],
|
|
['9', '9'],
|
|
['8', '8'],
|
|
['7', '7'],
|
|
['6', '6'],
|
|
['5', '5'],
|
|
['4', '4'],
|
|
['3', '3'],
|
|
['1', '1'],
|
|
['2', 'null'],
|
|
];
|
|
expect(await wizardPage.chartkit.getRowsTexts()).toEqual(expectedOrder);
|
|
});
|
|
});
|
|
});
|