import datasourceFormData from "../../fixtures/datasources.json"; import { ObjectsRegistry } from "../Objects/Registry" export class DataSources { private agHelper = ObjectsRegistry.AggregateHelper private locator = ObjectsRegistry.CommonLocators; 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" _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 + "']" public NavigateToDSAdd() { cy.get(this._addNewDataSource).last().scrollIntoView() .should("be.visible") .click({ force: true }); } public CreatePlugIn(pluginName: string) { cy.get(this._createNewPlgin(pluginName)).click(); } public NavigateToDSCreateNew() { this.NavigateToDSAdd() cy.get(this._dsCreateNewTab) .should("be.visible") .click({ force: true }); cy.get(this.locator._loading).should("not.exist"); } 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 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.NavigateToDSAdd() this.agHelper.GetNClick(this.locator._activeTab) cy.get(this._datasourceCard) .contains(datasourceName) .scrollIntoView() .should("be.visible") .closest(this._datasourceCard) .within(() => { cy.get(this.locator._createQuery).click({ force: true }); }) this.agHelper.Sleep(2000); //for the CreateQuery page to load } 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) { cy.get(this._reconnectModal).should('exist') 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(); } }