PromucFlow_constructor/app/client/cypress/e2e/GSheet/Misc_Spec.ts
Saroj 1b534cdd79
test: Additional regression scenarios for gsheet (#25844)
## Description
- Added following  regression scenarios for gsheet
   1. Create query from active ds tab
   2. Create query from ds details page
   3. Generate CRUD page from active ds
   4. Generate CRUD page from entity explorer
   5. Added test to add query from global search

#### Type of change
- Cypress
## Testing
>
#### How Has This Been Tested?
- [ ] Cypress
## Checklist:
#### QA activity:
- [ ] [Speedbreak
features](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#speedbreakers-)
have been covered
- [ ] Test plan covers all impacted features and [areas of
interest](https://github.com/appsmithorg/TestSmith/wiki/Guidelines-for-test-plans#areas-of-interest-)
- [ ] Test plan has been peer reviewed by project stakeholders and other
QA members
- [ ] Manually tested functionality on DP
- [ ] We had an implementation alignment call with stakeholders post QA
Round 2
- [ ] Cypress test cases have been added and approved by SDET/manual QA
- [ ] Added `Test Plan Approved` label after Cypress tests were reviewed
- [ ] Added `Test Plan Approved` label after JUnit tests were reviewed
2023-08-01 16:42:44 +05:30

227 lines
9.0 KiB
TypeScript

/// <reference types="Cypress" />
import { GSHEET_DATA } from "../../fixtures/test-data-gsheet";
import {
homePage,
gsheetHelper,
dataSources,
agHelper,
assertHelper,
table,
entityExplorer,
deployMode,
locators,
draggableWidgets,
} from "../../support/Objects/ObjectsCore";
const workspaceName = "gsheet apps";
const dataSourceName = "gsheet";
let appName = "gsheet-app";
let spreadSheetName = "test-sheet";
describe("GSheet Miscellaneous Tests", function () {
const columnHeaders = [
"uniq_id",
"japanese_name",
"currencies",
"specialChars",
"product_name",
"manufacturer",
"price",
"rowIndex",
];
before("Setup app and spreadsheet", function () {
//Add a new app and an add new spreadsheet query
//Setting up the spreadsheet name
const uuid = Cypress._.random(0, 10000);
spreadSheetName = spreadSheetName + "_" + uuid;
appName = appName + "-" + uuid;
//Adding query to insert a new spreadsheet
homePage.NavigateToHome();
homePage.CreateAppInWorkspace(workspaceName);
homePage.RenameApplication(appName);
gsheetHelper.AddNewSpreadsheetQuery(
dataSourceName,
spreadSheetName,
JSON.stringify(GSHEET_DATA),
);
cy.get("@postExecute").then((interception: any) => {
expect(
interception.response.body.data.body.properties.title,
).to.deep.equal(spreadSheetName);
});
});
it("1. Add query from active ds tab and verify", () => {
dataSources.CreateQueryFromActiveTab(dataSourceName);
// entityExplorer.CreateNewDsQuery(dataSourceName);
agHelper.RenameWithInPane("Fetch_Details");
dataSources.ValidateNSelectDropdown(
"Operation",
"Fetch Many",
"Fetch Details",
);
dataSources.ValidateNSelectDropdown("Entity", "Spreadsheet");
agHelper.Sleep(500);
dataSources.ValidateNSelectDropdown("Spreadsheet", "", spreadSheetName);
dataSources.RunQuery();
cy.get("@postExecute").then((interception: any) => {
expect(interception.response.body.data.body.name).to.deep.equal(
spreadSheetName,
);
});
});
it("2. Add query from edit datasource page and verify", () => {
dataSources.CreateQueryForDS(dataSourceName, "", "fetch_many", false);
dataSources.ValidateNSelectDropdown("Operation", "Fetch Many");
dataSources.ValidateNSelectDropdown("Entity", "Sheet Row(s)");
agHelper.Sleep(500);
dataSources.ValidateNSelectDropdown("Spreadsheet", "", spreadSheetName);
dataSources.ValidateNSelectDropdown("Sheet name", "", "Sheet1");
dataSources.RunQueryNVerifyResponseViews(GSHEET_DATA.length);
dataSources.AssertQueryResponseHeaders(columnHeaders);
dataSources.AssertQueryTableResponse(0, GSHEET_DATA[0].uniq_id);
dataSources.AssertQueryTableResponse(1, "ホーンビィ 2014 カタログ"); // Asserting other language
dataSources.AssertQueryTableResponse(2, "₹, $, €, ¥, £"); // Asserting different symbols
dataSources.AssertQueryTableResponse(3, "!@#$%^&*"); // Asserting special chars
});
it("3. Add query from global search and verify", () => {
dataSources.AddQueryFromGlobalSearch(dataSourceName);
dataSources.ValidateNSelectDropdown("Operation", "Fetch Many");
dataSources.ValidateNSelectDropdown("Entity", "Sheet Row(s)");
agHelper.Sleep(500);
dataSources.ValidateNSelectDropdown("Spreadsheet", "", spreadSheetName);
dataSources.ValidateNSelectDropdown("Sheet name", "", "Sheet1");
dataSources.RunQueryNVerifyResponseViews(GSHEET_DATA.length);
dataSources.AssertQueryResponseHeaders(columnHeaders);
dataSources.AssertQueryTableResponse(0, GSHEET_DATA[0].uniq_id);
dataSources.AssertQueryTableResponse(1, "ホーンビィ 2014 カタログ"); // Asserting other language
dataSources.AssertQueryTableResponse(2, "₹, $, €, ¥, £"); // Asserting different symbols
dataSources.AssertQueryTableResponse(3, "!@#$%^&*"); // Asserting special chars
});
it("4. Generate CRUD page from active datasource page and verify", () => {
// Navigating to active datasource page
dataSources.NavigateFromActiveDS(dataSourceName, false, false);
// Select the spreadsheet and sheet name
agHelper.GetNClick(dataSources._selectTableDropdown, 0, true);
agHelper.GetNClickByContains(dataSources._dropdownOption, spreadSheetName);
agHelper.Sleep(1000);
agHelper.GetNClick(dataSources._selectSheetNameDropdown, 0, true);
agHelper.GetNClickByContains(dataSources._dropdownOption, "Sheet1");
// Click on generate page button and verify the page is generated
agHelper.GetNClick(dataSources._generatePageBtn);
assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
agHelper.AssertContains("Successfully generated a page");
assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200);
assertHelper.AssertNetworkStatus("@updateLayout", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it"));
assertHelper.AssertNetworkStatus("@updateLayout", 200);
//deploy the app and verify the table data
deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE_V1));
const data = GSHEET_DATA.filter((item) => item.rowIndex === "0")[0];
table.ReadTableRowColumnData(0, 0, "v1").then((cellData) => {
expect(cellData).to.eq(data.uniq_id);
});
table.ReadTableRowColumnData(0, 1, "v1").then((cellData) => {
expect(cellData).to.eq(data.japanese_name);
});
table.ReadTableRowColumnData(0, 2, "v1").then((cellData) => {
expect(cellData).to.eq(data.currencies);
});
table.ReadTableRowColumnData(0, 3, "v1").then((cellData) => {
expect(cellData).to.eq(data.specialChars);
});
table.ReadTableRowColumnData(0, 4, "v1").then((cellData) => {
expect(cellData).to.eq(data.product_name);
});
//Validating loaded JSON form
agHelper.GetElement(locators._spanButton("Update")).then((selector) => {
cy.wrap(selector)
.invoke("attr", "class")
.then((classes) => {
expect(classes).not.contain("bp3-disabled");
});
});
dataSources.AssertJSONFormHeader(0, 13, "Id", "0");
deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad();
});
it("5. Generate CRUD page from entity explorer and verify", () => {
// Adding pafe with data from entity explorer
entityExplorer.AddNewPage("Generate page with data");
// Select the datasource, spreadsheet and sheet name
agHelper.GetNClick(dataSources._selectDatasourceDropdown);
agHelper.GetNClickByContains(dataSources._dropdownOption, dataSourceName);
agHelper.Sleep(1000);
agHelper.GetNClick(dataSources._selectTableDropdown, 0, true);
agHelper.GetNClickByContains(dataSources._dropdownOption, spreadSheetName);
agHelper.Sleep(1000);
agHelper.GetNClick(dataSources._selectSheetNameDropdown, 0, true);
agHelper.GetNClickByContains(dataSources._dropdownOption, "Sheet1");
// Click on generate page button and verify the page is generated
agHelper.GetNClick(dataSources._generatePageBtn);
assertHelper.AssertNetworkStatus("@replaceLayoutWithCRUDPage", 201);
agHelper.AssertContains("Successfully generated a page");
assertHelper.AssertNetworkStatus("@getActions", 200);
assertHelper.AssertNetworkStatus("@postExecute", 200);
assertHelper.AssertNetworkStatus("@updateLayout", 200);
agHelper.GetNClick(dataSources._visibleTextSpan("Got it"));
assertHelper.AssertNetworkStatus("@updateLayout", 200);
//deploy the app and verify the table data
deployMode.DeployApp(locators._widgetInDeployed(draggableWidgets.TABLE_V1));
const data = GSHEET_DATA.filter((item) => item.rowIndex === "1")[0];
table.ReadTableRowColumnData(1, 0, "v1").then((cellData) => {
expect(cellData).to.eq(data.uniq_id);
});
table.ReadTableRowColumnData(1, 1, "v1").then((cellData) => {
expect(cellData).to.eq(data.japanese_name);
});
table.ReadTableRowColumnData(1, 2, "v1").then((cellData) => {
expect(cellData).to.eq(data.currencies);
});
table.ReadTableRowColumnData(1, 3, "v1").then((cellData) => {
expect(cellData).to.eq(data.specialChars);
});
table.ReadTableRowColumnData(1, 5, "v1").then((cellData) => {
expect(cellData).to.eq(data.manufacturer);
});
//Validating loaded JSON form
agHelper.GetElement(locators._spanButton("Update")).then((selector) => {
cy.wrap(selector)
.invoke("attr", "class")
.then((classes) => {
expect(classes).not.contain("bp3-disabled");
});
});
dataSources.AssertJSONFormHeader(0, 13, "Id", "0");
deployMode.NavigateBacktoEditor();
table.WaitUntilTableLoad();
});
after("Delete spreadsheet and app", function () {
// Delete spreadsheet and app
gsheetHelper.DeleteSpreadsheetQuery(dataSourceName, spreadSheetName);
cy.get("@postExecute").then((interception: any) => {
expect(interception.response.body.data.body.message).to.deep.equal(
"Deleted spreadsheet successfully!",
);
});
homePage.NavigateToHome();
homePage.DeleteApplication(appName);
});
});