airboardgame/cypress/integration/studio.spec.js
Jeremie Pardou-Piquemal 388437ce7e Fix tests
2021-08-29 14:27:18 +02:00

210 lines
5.2 KiB
JavaScript

describe("Studio", () => {
beforeEach(() => {
cy.viewport(1000, 600);
cy.intercept(
{
method: "GET",
url: "/airboardgame/auth/check",
},
// eslint-disable-next-line quotes
'{"message":"success"}'
);
cy.intercept(
{
method: "GET",
url: "/airboardgame/store/game*",
},
// eslint-disable-next-line quotes
"[]"
);
cy.visit("/", {
onBeforeLoad: (win) => {
win.localStorage.setItem("isAuthenticated", "true");
},
});
cy.contains("Studio").click();
});
it("Can see add game button", () => {
cy.contains("Add a game");
});
it("Can access new game creation", () => {
cy.get("[title^='Add a game']").click();
cy.get(".board-pane").should(
"have.css",
"transform",
"matrix(0.24, 0, 0, 0.24, 260, 60)"
);
});
it("Can create empty game", () => {
cy.get("[title^='Add a game']").click();
cy.get(".board-pane").should(
"have.css",
"transform",
"matrix(0.24, 0, 0, 0.24, 260, 60)"
);
// save
cy.intercept(
{
method: "POST",
url: "/airboardgame/store/game/*",
},
// eslint-disable-next-line quotes
(req) => {
expect(req.body.items.length).to.equal(0);
req.reply(req.body);
}
);
cy.get("[title^='Save']").click();
cy.get("button").contains("Save").click();
});
it("Can create basic game", () => {
cy.get("[title^='Add a game']").click();
cy.get(".board-pane").should(
"have.css",
"transform",
"matrix(0.24, 0, 0, 0.24, 260, 60)"
);
// Add an item
cy.get("[title^='Add an item']").click({ force: true });
cy.contains("Rectangle").parent().parent().click();
cy.get(".side-panel.open [alt^='Close']").click();
// save
cy.intercept(
{
method: "POST",
url: "/airboardgame/store/game/*",
},
// eslint-disable-next-line quotes
(req) => {
expect(req.body.items.length).to.equal(1);
expect(req.body.items[0].type).to.equal("rect");
req.reply(req.body);
}
);
cy.get("[title^='Save']").click();
cy.get("button").contains("Save").click();
});
it("Can edit game properties", () => {
cy.get("[title^='Add a game']").click({ force: true });
cy.get(".board-pane").should(
"have.css",
"transform",
"matrix(0.24, 0, 0, 0.24, 260, 60)"
);
// Edit title
cy.get("[title^='Configuration']").click({ force: true });
cy.get('input[name="defaultName"]').clear().type("ChangeGameName");
cy.get(".side-panel.open [alt^='Close']").click();
cy.contains("ChangeGameName");
cy.intercept(
{
method: "POST",
url: "/airboardgame/store/game/*",
},
// eslint-disable-next-line quotes
(req) => {
expect(req.body.board.defaultName).to.equal("ChangeGameName");
req.reply(req.body);
}
);
cy.get("[title^='Save']").click();
cy.get("button").contains("Save").click();
});
describe("Item edition", () => {
beforeEach(() => {
cy.get("[title^='Add a game']").click({ force: true });
cy.get(".board-pane").should(
"have.css",
"transform",
"matrix(0.24, 0, 0, 0.24, 260, 60)"
);
// Add an item
cy.get("[title^='Add an item']").click({ force: true });
cy.contains("Rectangle").parent().parent().click();
cy.get(".side-panel.open [alt^='Close']").click();
});
it("Can update item properties", () => {
cy.get(".item").click({ force: true });
cy.get("button img[alt^='Edit']").click({ force: true });
cy.get('input[name="width"]').clear().type("100");
cy.get('input[name="height"]').clear().type("75");
cy.get('input[name="text"]').clear().type("myCube");
cy.get(".item")
.children()
.first()
.should((elt) => {
const { clientWidth, clientHeight } = elt[0];
expect(clientWidth).to.equal(100);
expect(clientHeight).to.equal(75);
});
cy.get(".item").contains("myCube");
});
it("Can lock an item", () => {
cy.get(".item").click({ force: true });
cy.get("button img[alt^='Edit']").click({ force: true });
cy.get('input[name="locked"]').click();
cy.get(".item").should("have.class", "locked");
cy.contains("New").click();
cy.get(".item").click({ force: true });
cy.get(".item").should("not.have.class", "selected");
cy.get(".item").dblclick({ force: true });
cy.contains("Hint");
cy.wait(1000);
// long press to unlock
cy.get(".item").trigger("pointerdown", { force: true });
cy.wait(1100);
cy.get(".item").trigger("pointerup", { force: true });
cy.get(".item").should("have.class", "selected");
});
it("Can change item layer", () => {
cy.get(".item").click({ force: true });
cy.get("button img[alt^='Edit']").click({ force: true });
cy.get(".item").parent().should("have.css", "z-index", "140");
cy.get(".slider-layer .rc-slider-mark-text").contains("-1").click();
cy.get(".item").parent().should("have.css", "z-index", "130");
});
});
});
/* TODO
- rotation
- layer
- actions
- Items
*/