ToolJet/cypress-tests/cypress/e2e/database/database.cy.js

138 lines
3.9 KiB
JavaScript
Raw Normal View History

import { filterSelectors, sortSelectors } from "Selectors/database";
import { databaseText, filterText, sortText } from "Texts/database";
import { navigateToDatabase } from "Support/utils/common";
import {
verifyAllElementsOfPage,
createTableAndVerifyToastMessage,
editTableNameAndVerifyToastMessage,
deleteTableAndVerifyToastMessage,
createNewColumnAndVerify,
navigateToTable,
addNewRowAndVerify,
filterOperation,
sortOperation,
deleteCondition,
deleteRowAndVerify,
editRowWithInvalidData,
editRowAndVerify,
} from "Support/utils/database";
import { fake } from "Fixtures/fake";
import { randomNumber } from "Support/utils/commonWidget";
import { randomString } from "Support/utils/textInput";
describe("Database Functionality", () => {
const data = {};
data.tableName = fake.tableName;
data.newTableName = fake.tableName;
data.editTableName = fake.tableName;
data.maximumLength = randomNumber(8, 10);
data.dataType = ["varchar", "int", "float", "boolean"];
const columnDetails = () => {
let column = {
name: fake.firstName,
defaultValueDoublePrecision:
Math.floor(Math.random() * (1000 - 100) + 100) / 100,
defaultValueInt: randomNumber(10, 99),
defaultValueVarchar: randomString(data.maximumLength),
};
return column;
};
let column1 = columnDetails();
let column2 = columnDetails();
const rowData = () => {
let row = {
varcharData: randomString(data.maximumLength),
doublePrecisionData: Math.floor(Math.random() * (1000 - 100) + 100) / 100,
intData: randomNumber(10, 99),
};
return row;
};
let row1 = rowData();
let row2 = rowData();
let row3 = rowData();
let row4 = rowData();
beforeEach(() => {
cy.appUILogin();
});
it("Verify that all elements of the table page", () => {
navigateToDatabase();
verifyAllElementsOfPage();
createTableAndVerifyToastMessage(data.tableName, false);
createTableAndVerifyToastMessage(
data.newTableName,
true,
[column1.name, column2.name],
[data.dataType[0], data.dataType[1]],
true,
[column1.defaultValueVarchar, column1.defaultValueInt]
);
});
it("Verify all operations of table", () => {
navigateToDatabase();
navigateToTable(data.tableName);
editTableNameAndVerifyToastMessage(data.newTableName, data.editTableName);
deleteTableAndVerifyToastMessage(data.editTableName);
createNewColumnAndVerify(
data.tableName,
column1.name,
data.dataType[0],
true,
column1.defaultValueVarchar
);
addNewRowAndVerify(data.tableName, false);
addNewRowAndVerify(data.tableName, false, [column1.name], true, [
row1.varcharData,
]);
createNewColumnAndVerify(
data.tableName,
column2.name,
data.dataType[1],
false
);
addNewRowAndVerify(
data.tableName,
false,
[column1.name, column2.name],
[row2.varcharData, row2.intData]
);
addNewRowAndVerify(
data.tableName,
true,
[column1.name, column2.name],
[row3.varcharData, row3.intData]
);
filterOperation(
data.tableName,
[databaseText.idColumnName],
[filterText.operation.greaterThan],
["2"]
);
deleteCondition(
filterSelectors.filterButton,
[databaseText.idColumnName],
filterSelectors.deleteIcon
);
sortOperation(
data.tableName,
[databaseText.idColumnName],
[sortText.order.descending]
);
deleteCondition(
sortSelectors.sortButton,
[databaseText.idColumnName],
sortSelectors.deleteIcon
);
cy.reload();
deleteRowAndVerify(data.tableName, ["1", "2"]);
editRowWithInvalidData(data.tableName, "3", column2.name, row4.varcharData);
editRowAndVerify(
data.tableName,
"3",
[databaseText.idColumnName, column1.name, column2.name],
[row4.varcharData, row4.intData]
);
});
});