PromucFlow_constructor/app/client/cypress/support/Pages/DataSources.ts

166 lines
6.3 KiB
TypeScript

import datasourceFormData from "../../fixtures/datasources.json";
import { ObjectsRegistry } from "../Objects/Registry";
export class DataSources {
private agHelper = ObjectsRegistry.AggregateHelper;
private locator = ObjectsRegistry.CommonLocators;
private ee = ObjectsRegistry.EntityExplorer;
private _dsCreateNewTab = "[data-cy=t--tab-CREATE_NEW]";
private _addNewDataSource = ".datasources .t--entity-add-btn";
private _createNewPlgin = (pluginName: string) =>
".t--plugin-name:contains('" + pluginName + "')";
private _host = "input[name='datasourceConfiguration.endpoints[0].host']";
private _port = "input[name='datasourceConfiguration.endpoints[0].port']";
private _databaseName =
"input[name='datasourceConfiguration.authentication.databaseName']";
private _username =
"input[name='datasourceConfiguration.authentication.username']";
private _sectionAuthentication = "[data-cy=section-Authentication]";
private _password =
"input[name = 'datasourceConfiguration.authentication.password']";
private _testDs = ".t--test-datasource";
private _saveDs = ".t--save-datasource";
private _datasourceCard = ".t--datasource";
_templateMenu = ".t--template-menu";
private _createQuery = ".t--create-query";
private _importSuccessModal = ".t--import-app-success-modal";
private _importSuccessModalClose = ".t--import-success-modal-got-it";
_visibleTextSpan = (spanText: string) =>
"//span[contains(text(),'" + spanText + "')]";
_dropdownTitle = (ddTitle: string) =>
"//p[contains(text(),'" +
ddTitle +
"')]/parent::label/following-sibling::div/div/div";
_reconnectModal = "div.reconnect-datasource-modal";
_activeDSListReconnectModal = (dbName: string) =>
"//div[contains(@class, 't--ds-list')]//span[text()='" + dbName + "']";
_runQueryBtn = ".t--run-query";
_newDatabases = "#new-datasources";
_selectDatasourceDropdown = "[data-cy=t--datasource-dropdown]";
_datasourceDropdownOption = "[data-cy=t--datasource-dropdown-option]";
_selectTableDropdown = "[data-cy=t--table-dropdown]";
_tableDropdownOption = ".bp3-popover-content .t--dropdown-option";
_generatePageBtn = "[data-cy=t--generate-page-form-submit]";
public CreatePlugIn(pluginName: string) {
cy.get(this._createNewPlgin(pluginName)).trigger("click");
}
public NavigateToDSCreateNew() {
cy.get(this._addNewDataSource)
.last()
.scrollIntoView()
.should("be.visible")
.click({ force: true });
// cy.get(this._dsCreateNewTab)
// .should("be.visible")
// .click({ force: true });
cy.get(this._newDatabases).should("be.visible");
}
public FillPostgresDSForm(shouldAddTrailingSpaces = false) {
const hostAddress = shouldAddTrailingSpaces
? datasourceFormData["postgres-host"] + " "
: datasourceFormData["postgres-host"];
const databaseName = shouldAddTrailingSpaces
? datasourceFormData["postgres-databaseName"] + " "
: datasourceFormData["postgres-databaseName"];
cy.get(this._host).type(hostAddress);
cy.get(this._port).type(datasourceFormData["postgres-port"].toString());
cy.get(this._databaseName)
.clear()
.type(databaseName);
cy.get(this._sectionAuthentication).click();
cy.get(this._username).type(datasourceFormData["postgres-username"]);
cy.get(this._password).type(datasourceFormData["postgres-password"]);
}
public FillMongoDSForm(shouldAddTrailingSpaces = false) {
const hostAddress = shouldAddTrailingSpaces
? datasourceFormData["mongo-host"] + " "
: datasourceFormData["mongo-host"];
cy.get(this._host).type(hostAddress);
cy.get(this._port).type(datasourceFormData["mongo-port"].toString());
cy.get(this._sectionAuthentication).click();
cy.get(this._databaseName)
.clear()
.type(datasourceFormData["mongo-databaseName"]);
}
public TestSaveDatasource(expectedRes = true) {
this.TestDatasource(expectedRes);
this.SaveDatasource();
}
public TestDatasource(expectedRes = true) {
cy.get(this._testDs).click();
this.agHelper.ValidateNetworkDataSuccess("@testDatasource", expectedRes);
}
public SaveDatasource() {
cy.get(this._saveDs).click();
this.agHelper.ValidateNetworkStatus("@saveDatasource", 200);
// cy.wait("@saveDatasource")
// .then((xhr) => {
// cy.log(JSON.stringify(xhr.response!.body));
// }).should("have.nested.property", "response.body.responseMeta.status", 200);
}
public NavigateToActiveDSQueryPane(datasourceName: string) {
this.NavigateToDSCreateNew();
this.agHelper.GetNClick(this.locator._activeTab);
cy.get(this._datasourceCard)
.contains(datasourceName)
.scrollIntoView()
.should("be.visible")
.closest(this._datasourceCard)
.within(() => {
cy.get(this._createQuery).click({ force: true });
});
this.agHelper.Sleep(2000); //for the CreateQuery page to load
}
public NavigateToActiveDSviaEntityExplorer(datasourceName: string) {
this.ee.SelectEntityByName(datasourceName, "DATASOURCES");
cy.get(this._createQuery).click({ force: true });
}
public ValidateNSelectDropdown(
ddTitle: string,
currentValue = "",
newValue = "",
) {
let toChange = false;
if (currentValue)
cy.xpath(this._visibleTextSpan(currentValue))
.scrollIntoView()
.should("be.visible", currentValue + " dropdown value not present");
if (newValue) toChange = true;
if (toChange) {
cy.xpath(this._dropdownTitle(ddTitle)).click(); //to expand the dropdown
cy.xpath(this._visibleTextSpan(newValue))
.last()
.click({ force: true }); //to select the new value
}
}
public ReconnectDataSourcePostgres(dbName: string) {
this.agHelper.AssertElementPresence(this._reconnectModal);
cy.xpath(this._activeDSListReconnectModal("PostgreSQL")).should(
"be.visible",
);
cy.xpath(this._activeDSListReconnectModal(dbName)).should("be.visible"); //.click()
this.ValidateNSelectDropdown("Connection Mode", "", "Read / Write");
this.FillPostgresDSForm();
cy.get(this._saveDs).click();
cy.get(this._importSuccessModal).should("be.visible");
cy.get(this._importSuccessModalClose).click({ force: true });
}
RunQuery() {
cy.get(this._runQueryBtn).click({ force: true });
this.agHelper.ValidateNetworkExecutionSuccess("@postExecute");
}
}