Add tests for git discard changes (#13866)

This commit is contained in:
Parthvi12 2022-05-18 10:15:32 +05:30 committed by GitHub
parent 11ee278740
commit 32bcd94e54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 273 additions and 1 deletions

View File

@ -0,0 +1,228 @@
const datasource = require("../../../../locators/DatasourcesEditor.json");
const queryLocators = require("../../../../locators/QueryEditor.json");
const dynamicInputLocators = require("../../../../locators/DynamicInput.json");
const explorer = require("../../../../locators/explorerlocators.json");
describe("Git discard changes:", function() {
let datasourceName;
let repoName;
const query1 = "get_users";
const query2 = "get_allusers";
const jsObject = "JSObject1";
const page2 = "Page_2";
const page3 = "Page_3";
it("1. Create an app with Query1 and JSObject1, connect it to git", () => {
// Create new postgres datasource
cy.NavigateToDatasourceEditor();
cy.get(datasource.PostgreSQL).click();
cy.getPluginFormsAndCreateDatasource();
cy.fillPostgresDatasourceForm();
cy.testSaveDatasource();
cy.get("@createDatasource").then((httpResponse) => {
datasourceName = httpResponse.response.body.data.name;
cy.get(datasource.datasourceCard)
.contains(datasourceName)
.scrollIntoView()
.should("be.visible")
.closest(datasource.datasourceCard)
.within(() => {
cy.get(datasource.createQuerty).click();
});
});
// Create new postgres query
cy.get(queryLocators.queryNameField).type(`${query1}`);
cy.get(queryLocators.switch)
.last()
.click({ force: true });
cy.get(queryLocators.templateMenu).click();
cy.get(queryLocators.query).click({ force: true });
cy.get(".CodeMirror textarea")
.first()
.focus()
.type("SELECT * FROM users ORDER BY id LIMIT 10;", {
force: true,
parseSpecialCharSequences: false,
});
cy.WaitAutoSave();
cy.runQuery();
cy.CheckAndUnfoldEntityItem("PAGES");
cy.wait(1000);
cy.get(".t--entity-item:contains(Page1)")
.first()
.click();
cy.wait("@getPage");
// bind input widget to postgres query on page1
cy.get(explorer.addWidget).click();
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 300 });
cy.get(".t--widget-inputwidgetv2").should("exist");
cy.get(dynamicInputLocators.input)
.eq(1)
.click({ force: true })
.type(`{{${query1}.data[0].name}}`, {
parseSpecialCharSequences: false,
});
cy.wait(2000);
cy.CheckAndUnfoldEntityItem("PAGES");
cy.Createpage(page2);
cy.wait(1000);
cy.get(`.t--entity-item:contains(${page2})`)
.first()
.click();
cy.wait("@getPage");
cy.createJSObject('return "Success";');
cy.get(explorer.addWidget).click();
// bind input widget to JSObject response on page2
cy.dragAndDropToCanvas("inputwidgetv2", { x: 300, y: 300 });
cy.get(".t--widget-inputwidgetv2").should("exist");
cy.get(dynamicInputLocators.input)
.eq(1)
.click({ force: true })
.type("{{JSObject1.myFun1()}}", { parseSpecialCharSequences: false });
cy.get("#switcher--explorer").click({ force: true });
// connect app to git
cy.generateUUID().then((uid) => {
repoName = uid;
cy.createTestGithubRepo(repoName);
cy.connectToGitRepo(repoName);
});
});
it("2. Add new datasource query, discard changes, verify query is deleted", () => {
cy.get(`.t--entity-item:contains("Page1")`)
.first()
.click();
cy.wait("@getPage");
// create new postgres query
cy.NavigateToQueryEditor();
cy.NavigateToActiveTab();
cy.get(datasource.datasourceCard)
.contains(datasourceName)
.scrollIntoView()
.should("be.visible")
.closest(datasource.datasourceCard)
.within(() => {
cy.get(datasource.createQuerty).click();
});
cy.get(queryLocators.queryNameField).type(`${query2}`);
cy.get(queryLocators.switch)
.last()
.click({ force: true });
cy.get(queryLocators.templateMenu).click();
cy.get(queryLocators.query).click({ force: true });
cy.get(".CodeMirror textarea")
.first()
.focus()
.type("SELECT * FROM users;", {
force: true,
parseSpecialCharSequences: false,
});
cy.WaitAutoSave();
cy.runQuery();
// navoigate to Page1
cy.get(`.t--entity-item:contains(Page1)`)
.first()
.click();
cy.wait("@getPage");
// discard changes
cy.gitDiscardChanges();
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify query2 is not present
cy.get(`.t--entity-name:contains(${query2})`).should("not.exist");
});
it("3. Add new JSObject , discard changes verify JSObject is deleted", () => {
cy.createJSObject('return "Success";');
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject is not duplicated
cy.get(`.t--entity-name:contains(${jsObject})`).should("have.length", 1);
cy.gitDiscardChanges();
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
// verify jsObject2 is deleted after discarding changes
cy.get(`.t--entity-name:contains(${jsObject})`).should("not.exist");
});
it("4. Delete page2 and trigger discard flow, page2 should be available again", () => {
cy.Deletepage(page2);
// verify page is deleted
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(`.t--entity-name:contains(${page2})`).should("not.exist");
cy.gitDiscardChanges();
// verify page2 is recovered back
cy.get(`.t--entity-name:contains(${page2})`).should("be.visible");
cy.get(`.t--entity-item:contains(${page2})`)
.first()
.click();
cy.wait("@getPage");
// verify data binding on page2
cy.get(".bp3-input").should("have.value", "Success");
});
it("5. Delete Query1 and trigger discard flow, Query1 will be recovered", () => {
// navigate to Page1
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(`.t--entity-item:contains("Page1")`)
.first()
.click();
cy.wait("@getPage");
// delete query1
cy.deleteQueryOrJS(query1);
// verify Query1 is deleted
cy.get(`.t--entity-name:contains(${query1})`).should("not.exist");
// discard changes
cy.gitDiscardChanges();
//verify query1 is recovered
cy.get(`.t--entity-name:contains(${query1})`).should("be.visible");
cy.get(".bp3-input").should("have.value", "Test user 7");
});
it("6. Delete JSObject1 and trigger discard flow, JSObject1 should be active again", () => {
// navigate to page2
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(`.t--entity-item:contains(${page2})`)
.first()
.click();
cy.wait("@getPage");
// delete jsObject1
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
cy.get(`.t--entity-item:contains(${jsObject})`).within(() => {
cy.get(".t--context-menu").click({ force: true });
});
cy.selectAction("Delete");
cy.selectAction("Are you sure?");
cy.get(`.t--entity-name:contains(${jsObject})`).should("not.exist");
// discard changes
cy.gitDiscardChanges();
//verify JSObject is recovered
cy.get(`.t--entity-name:contains(${jsObject})`).should("be.visible");
cy.get(".bp3-input").should("have.value", "Success");
});
it("7. Add new page i.e page3, go to page2 & discard changes, verify page3 is removed", () => {
// create new page page3 and move to page1
cy.Createpage(page3);
cy.get(`.t--entity-item:contains(${page2})`)
.first()
.click();
// discard changes
cy.gitDiscardChanges();
// verify page3 is removed
cy.CheckAndUnfoldEntityItem("PAGES");
cy.get(`.t--entity-name:contains("${page3}")`).should("not.exist");
});
it("8. Add new page i.e page3, discard changes should give error resource not found", () => {
cy.Createpage(page3);
cy.gitDiscardChanges(false);
cy.go("back");
cy.reload();
});
});

View File

@ -51,4 +51,5 @@ export default {
gitPullCount: ".t--bottom-bar-pull .count",
gitConnectionContainer: "[data-test=t--git-connection-container]",
gitRemoteURLContainer: "[data-test=t--remote-url-container]",
discardChanges: ".t--discard-button",
};

View File

@ -363,3 +363,37 @@ Cypress.Commands.add(
});
},
);
Cypress.Commands.add("gitDiscardChanges", (assertResourceFound = true) => {
cy.get(gitSyncLocators.bottomBarCommitButton).click();
//cy.intercept("GET", "/api/v1/git/status/*").as("gitStatus");
// cy.wait("@gitStatus").should(
// "have.nested.property",
// "response.body.responseMeta.status",
// 200,
// );
cy.get(gitSyncLocators.discardChanges)
.children()
.should("have.text", "Discard changes");
cy.get(gitSyncLocators.discardChanges).click();
cy.contains(Cypress.env("MESSAGES").DISCARD_CHANGES_WARNING());
cy.get(gitSyncLocators.discardChanges)
.children()
.should("have.text", "Are you sure?");
cy.get(gitSyncLocators.discardChanges).click();
cy.contains(Cypress.env("MESSAGES").DISCARDING_AND_PULLING_CHANGES());
if (assertResourceFound) {
cy.wait("@applications").should(
"have.nested.property",
"response.body.responseMeta.status",
200,
);
cy.validateToastMessage("Discarded changes successfully.");
} else {
cy.get(".bold-text").should(($x) => {
expect($x).contain("Page not found");
});
}
});

View File

@ -1109,7 +1109,16 @@ Cypress.Commands.add("clearPropertyValue", (value) => {
// eslint-disable-next-line cypress/no-unnecessary-waiting
cy.wait(1000);
});
Cypress.Commands.add("deleteQueryOrJS", (Action) => {
cy.CheckAndUnfoldEntityItem("QUERIES/JS");
cy.get(`.t--entity-item:contains(${Action})`).within(() => {
cy.get(".t--context-menu").click({ force: true });
});
cy.selectAction("Delete");
cy.selectAction("Are you sure?");
cy.wait("@deleteAction");
cy.get("@deleteAction").should("have.property", "status", 200);
});
Cypress.Commands.add(
"validateNSelectDropdown",
(ddTitle, currentValue, newValue) => {