From 80e36eb06a6fa0f5d02163660aaa524fb45bc852 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Tue, 4 Apr 2023 17:01:12 +0200
Subject: [PATCH] test(e2e): parallel structures: check submergence error

refs #614
---
 e2e/calculator.po.ts                          | 11 +++++
 e2e/parallel-structures.e2e-spec.ts           | 47 ++++++++++++++++++-
 .../session-erreur-ennoiement-614.json        |  1 +
 3 files changed, 57 insertions(+), 2 deletions(-)
 create mode 100644 e2e/session/session-erreur-ennoiement-614.json

diff --git a/e2e/calculator.po.ts b/e2e/calculator.po.ts
index e73d117a9..97d0ac1f2 100644
--- a/e2e/calculator.po.ts
+++ b/e2e/calculator.po.ts
@@ -324,6 +324,17 @@ export class CalculatorPage {
         return await element.all(by.css("log-entry")).count();
     }
 
+    /**
+     * return true if the nth log entry is an error
+     */
+    async nthLogEntryIsError(n: number) {
+        const errs = element.all(by.css("log-entry"));
+        const e = errs.get(n);
+        const icon = e.element(by.css("div mat-icon"));
+        const style = await icon.getAttribute("style");
+        return style.indexOf("color: red;") !== -1;
+    }
+
     async clickSaveCalcButton() {
         await scrollPageToTop();
         return await element(by.css("#save-calc")).click();
diff --git a/e2e/parallel-structures.e2e-spec.ts b/e2e/parallel-structures.e2e-spec.ts
index 0653fbe85..16e859cb6 100644
--- a/e2e/parallel-structures.e2e-spec.ts
+++ b/e2e/parallel-structures.e2e-spec.ts
@@ -3,18 +3,25 @@ import { Navbar } from "./navbar.po";
 import { browser } from "protractor";
 import { CalculatorPage } from "./calculator.po";
 import { PreferencesPage } from "./preferences.po";
+import { AppPage } from "./app.po";
+import { loadSession } from "./util.po";
+import { SideNav } from "./sidenav.po";
 
-describe("Check calculated parameter remains the same when copying a structure", () => {
+describe("Parallel structures - ", () => {
+    let startPage: AppPage;
     let listPage: ListPage;
     let navBar: Navbar;
     let calcPage: CalculatorPage;
     let prefPage: PreferencesPage;
+    let sideNav: SideNav;
 
     beforeAll(() => {
+        startPage = new AppPage();
         listPage = new ListPage();
         navBar = new Navbar();
         calcPage = new CalculatorPage();
         prefPage = new PreferencesPage();
+        sideNav = new SideNav();
     });
 
     beforeEach(async () => {
@@ -24,7 +31,7 @@ describe("Check calculated parameter remains the same when copying a structure",
         await browser.sleep(200);
     });
 
-    it("", async () => {
+    it("check calculated parameter remains the same when copying a structure", async () => {
         // open "fish ladder: cross walls" calculator
         await navBar.clickNewCalculatorButton();
         await listPage.clickMenuEntryForCalcType(10);
@@ -52,4 +59,40 @@ describe("Check calculated parameter remains the same when copying a structure",
         const L2 = calcPage.getInputById("1_L");
         expect(await calcPage.inputIsInFixedMode(L2)).toBe(true);
     });
+
+    it("check submergence error", async () => {
+        debugger
+        await startPage.navigateTo();
+
+        await loadSession(navBar, sideNav, "./session/session-erreur-ennoiement-614.json");
+        await browser.sleep(1000);
+
+        // first calculator
+
+        await navBar.clickCalculatorTab(0);
+        await browser.sleep(200);
+
+        // run calculation
+        await calcPage.getCalculateButton().click();
+        await browser.sleep(500);
+
+        // check error message in log
+        expect(await calcPage.nbLogEntries()).toBe(1);
+
+        expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+
+        // second calculator
+
+        await navBar.clickCalculatorTab(1);
+        await browser.sleep(200);
+
+        // run calculation
+        await calcPage.getCalculateButton().click();
+        await browser.sleep(500);
+
+        // check error message in log
+        expect(await calcPage.nbLogEntries()).toBe(1);
+
+        expect(await calcPage.nthLogEntryIsError(0)).toBe(true);
+    });
 });
diff --git a/e2e/session/session-erreur-ennoiement-614.json b/e2e/session/session-erreur-ennoiement-614.json
new file mode 100644
index 000000000..a82d54105
--- /dev/null
+++ b/e2e/session/session-erreur-ennoiement-614.json
@@ -0,0 +1 @@
+{"header":{"source":"jalhyd","format_version":"1.3","created":"2023-04-03T12:18:32.015Z"},"settings":{"precision":1e-7,"maxIterations":100,"displayPrecision":3},"documentation":"","session":[{"uid":"cTl6aT","props":{"calcType":"Cloisons","nullparams":false},"meta":{"title":"Cloisons"},"children":[{"uid":"NWllMn","props":{"calcType":"Structure","loiDebit":"WeirSubmergedLarinier","structureType":"SeuilRectangulaire","nullparams":false},"children":[],"parameters":[{"symbol":"h1","mode":"SINGLE","value":1},{"symbol":"L","mode":"SINGLE","value":0.2},{"symbol":"CdWSL","mode":"SINGLE","value":0.75}]}],"parameters":[{"symbol":"Q","mode":"CALCUL"},{"symbol":"Z1","mode":"SINGLE","value":102},{"symbol":"LB","mode":"SINGLE","value":10},{"symbol":"BB","mode":"SINGLE","value":1},{"symbol":"PB","mode":"SINGLE","value":1},{"symbol":"DH","mode":"SINGLE","value":0.6}]},{"uid":"bW4wZz","props":{"calcType":"ParallelStructure","nullparams":false},"meta":{"title":"Ouvrages"},"children":[{"uid":"anFpeG","props":{"calcType":"Structure","loiDebit":"WeirSubmerged","structureType":"SeuilRectangulaire","nullparams":false},"children":[],"parameters":[{"symbol":"ZDV","mode":"SINGLE","value":100},{"symbol":"L","mode":"SINGLE","value":2},{"symbol":"CdWS","mode":"SINGLE","value":0.9}]}],"parameters":[{"symbol":"Q","mode":"SINGLE","value":14.647},{"symbol":"Z1","mode":"CALCUL","value":103},{"symbol":"Z2","mode":"SINGLE","value":101.5}]}]}
\ No newline at end of file
-- 
GitLab