datalens-ui/tests/suites/dataset/parameters/parameterDialogValidation.test.ts
2026-06-24 21:10:34 +05:00

112 lines
5.0 KiB
TypeScript

import {Page} from '@playwright/test';
import {DialogParameterDataTypes} from '../../../page-objects/common/DialogParameter';
import DatasetPage from '../../../page-objects/dataset/DatasetPage';
import {openTestPage} from '../../../utils';
import {RobotChartsDatasetUrls} from '../../../utils/constants';
import datalensTest from '../../../utils/playwright/globalTestDefinition';
const PARAMETER_NAME = 'PARAMETER_TEST_NAME';
const PARAMETER_VALUE = 'PARAMETER_TEST_VALUE';
datalensTest.describe('Datasets - Parameter dialog validation', () => {
datalensTest.beforeEach(async ({page}: {page: Page}) => {
await openTestPage(page, RobotChartsDatasetUrls.DatasetWithParameters, {tab: 'parameters'});
});
datalensTest('Required fields validation', async ({page}: {page: Page}) => {
const datasetPage = new DatasetPage({page});
await datasetPage.datasetTabSection.clickAddButton();
const nameInput = await datasetPage.dialogParameter.getNameInput();
const defaultValueInput = await datasetPage.dialogParameter.getDefaultValueInput();
const applyButton = await datasetPage.dialogParameter.getApplyButton();
// Try to apply with empty fields
await datasetPage.dialogParameter.apply();
// Check that all fields are invalid and submit button is disabled
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
expect(applyButton).toBeDisabled();
// Set parameter name
await datasetPage.dialogParameter.setName(PARAMETER_NAME);
// Check that name field is valid, default value field is not, submit button is disabled
expect(nameInput).not.toHaveAttribute('aria-invalid');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
expect(applyButton).toBeDisabled();
// Set parameter value
await datasetPage.dialogParameter.setDefaultValue(PARAMETER_VALUE);
// Check that all fields are valid and submit button is enabled
expect(nameInput).not.toHaveAttribute('aria-invalid');
expect(defaultValueInput).not.toHaveAttribute('aria-invalid');
expect(applyButton).not.toBeDisabled();
// Set empty values in fields
await datasetPage.dialogParameter.setName('');
await datasetPage.dialogParameter.setDefaultValue('');
// Check that all fields are invalid and submit button is disabled
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
expect(applyButton).toBeDisabled();
});
datalensTest('Parameter name validation', async ({page}: {page: Page}) => {
const datasetPage = new DatasetPage({page});
await datasetPage.datasetTabSection.clickAddButton();
const nameInput = await datasetPage.dialogParameter.getNameInput();
await datasetPage.dialogParameter.setName('_');
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setName('абв');
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setName('±');
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setName('tab');
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setName('1234567890asdfghzxcvbn!@#$%^&*_-QWERTY');
expect(nameInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setName('PARAMETER_NAME');
expect(nameInput).not.toHaveAttribute('aria-invalid');
});
datalensTest('Parameter default_value validation [number]', async ({page}: {page: Page}) => {
const datasetPage = new DatasetPage({page});
await datasetPage.datasetTabSection.clickAddButton();
await datasetPage.dialogParameter.selectType(DialogParameterDataTypes.Int);
const defaultValueInput = await datasetPage.dialogParameter.getDefaultValueInput();
await datasetPage.dialogParameter.setDefaultValue('abc');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setDefaultValue('123.456');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setDefaultValue('123');
expect(defaultValueInput).not.toHaveAttribute('aria-invalid');
await datasetPage.dialogParameter.selectType(DialogParameterDataTypes.Float);
await datasetPage.dialogParameter.setDefaultValue('abc');
expect(defaultValueInput).toHaveAttribute('aria-invalid', 'true');
await datasetPage.dialogParameter.setDefaultValue('123.456');
expect(defaultValueInput).not.toHaveAttribute('aria-invalid');
await datasetPage.dialogParameter.setDefaultValue('123');
expect(defaultValueInput).not.toHaveAttribute('aria-invalid');
});
});