From bee53867838e7046cbd152267df1359f564e5de7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peter=20Babi=C4=8D?= Date: Wed, 13 Jan 2021 13:22:14 +0100 Subject: [PATCH] implement completed levels saving --- cypress/integration/spec.js | 67 ++++++++++++++++++++++++++----------- src/App.svelte | 18 ++++++++-- src/Triangle.svelte | 6 ++++ src/store.js | 10 ++++++ 4 files changed, 79 insertions(+), 22 deletions(-) create mode 100644 src/store.js diff --git a/cypress/integration/spec.js b/cypress/integration/spec.js index 250c419..bea1284 100644 --- a/cypress/integration/spec.js +++ b/cypress/integration/spec.js @@ -1,37 +1,52 @@ /// describe("game should", () => { - it("do undo and restart level 1", () => { + it("work as expected", () => { + cy.clearLocalStorage("completedLevels") cy.visit("/") - cy.get(".level").contains("0").click() - cy.get(".level").first().should("be.visible").click() + cy.log("TEST multiple dest positions") + cy.get(".level").contains("1").as("level1").click() + cy.get("[data-cy=victory]").as("victory").should("not.be.visible") cy.get(".div0.hole").should("be.visible") cy.get(".div2.pole").should("be.visible") cy.get(".div5.pole").should("be.visible").click() cy.get(".div5.pick").should("be.visible") + cy.get(".div3.dest").should("be.visible") cy.get(".div0.dest").should("be.visible").click() + + cy.log("TEST jump over") cy.get(".div2.hole").should("be.visible") cy.get(".div5.hole").should("be.visible") cy.get(".div0.pole").should("be.visible").click() cy.get(".div1.pole").should("be.visible") cy.get(".div3.dest").should("be.visible").click() + + cy.log("TEST undo") cy.get(".div3.pole").should("be.visible") - cy.get(".div0.hole").should("be.visible") cy.get(".div1.hole").should("be.visible") + cy.get(".div0.hole").should("be.visible") cy.get(".undo").click() - cy.get(".div3.pole").should("be.visible") + cy.get(".div3.hole").should("be.visible") cy.get(".div1.pole").should("be.visible") - cy.get(".div0.hole").should("be.visible") - cy.get(".restart").click() + cy.get(".div0.pole").should("be.visible") + + cy.log("TEST level 1 victory") + cy.get(".div0.pole").should("be.visible").click() + cy.get(".div3.dest").should("be.visible").click() + cy.get(".div4.pole").should("be.visible") + cy.get(".div3.pole").should("be.visible").click() + cy.get(".div5.dest").should("be.visible").click() + cy.get(".div4.hole").should("be.visible") + cy.get("@victory").should("be.visible") + + cy.log("TEST level 1 restart") + cy.get(".restart").as("restart").click() cy.get(".div2.pole").should("be.visible") - }) - it("lose level 7", () => { - cy.visit("/") - cy.get(".level").contains("7").click() + cy.log("TEST level picker") + cy.get(".level").contains("7").as("level7").click() cy.get("[data-cy=gameover]").as("gameover").should("not.be.visible") - cy.get(".div3.pole").click() cy.get(".div0.dest").click() cy.get(".div5.pole").click() @@ -40,24 +55,23 @@ describe("game should", () => { cy.get(".div4.dest").click() cy.get(".div11.pole").click() cy.get(".div13.dest").click() + + cy.log("TEST multiple destinations present") cy.get(".div14.pole").click() cy.get(".div5.dest").should("be.visible") cy.get(".div12.dest").click() + + cy.log("TEST gameover") cy.get(".div6.pole").click() cy.get(".div1.dest").click() cy.get(".div0.pole").click() cy.get(".div3.dest").click() cy.get(".div2.pole").click() cy.get(".div7.dest").click() - cy.get("@gameover").should("be.be.visible") - }) - - it("win level 7", () => { - cy.visit("/") - cy.get("[data-cy=victory]").as("victory").should("not.be.visible") - cy.get(".level").contains("10").click() + cy.log("TEST level 10 victory") + cy.get(".level").contains("10").as("level10").click() cy.get(".div11.pole").click() cy.get(".div4.dest").click() cy.get(".div9.pole").click() @@ -84,7 +98,20 @@ describe("game should", () => { cy.get(".div11.dest").click() cy.get(".div10.pole").click() cy.get(".div12.dest").click() - cy.get("@victory").should("be.visible") + + cy.log("TEST localStorage completedLevels") + cy.get("@level1").should("have.class", "completed") + cy.get("@level7").should("not.have.class", "completed") + cy.get("@level10").should("have.class", "completed") + cy.visit("/") + cy.get("@level1").should("have.class", "completed") + cy.get("@level7").should("not.have.class", "completed") + cy.get("@level10").should("have.class", "completed") + cy.get("@restart") + .click() + .should(() => + expect(localStorage.getItem("completedLevels")).to.eq("[0,9]") + ) }) }) diff --git a/src/App.svelte b/src/App.svelte index 482ef4f..7d4d68d 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -1,6 +1,7 @@