From e2035d4f079a42a7e858c73e576cd1070e462d10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Thu, 12 May 2022 15:18:33 +0200
Subject: [PATCH 1/2] test(e2e): check that parameter mode is restored on
 'variable mode' dialog cancel

refs #542
---
 e2e/reset-param-mode.e2e-spec.ts | 45 +++++++++++++++++++++++++++++---
 1 file changed, 41 insertions(+), 4 deletions(-)

diff --git a/e2e/reset-param-mode.e2e-spec.ts b/e2e/reset-param-mode.e2e-spec.ts
index c4b754839..b6a294b72 100644
--- a/e2e/reset-param-mode.e2e-spec.ts
+++ b/e2e/reset-param-mode.e2e-spec.ts
@@ -13,12 +13,12 @@ describe("ngHyd - check parameter mode is set to its previous value - ", () => {
         listPage = new ListPage();
     });
 
-    it("when min/max/list values dialog is cancelled", async () => {
+    it("when min/max/list values dialog is cancelled on 'fish ladder: fall' calculator", async () => {
         // start page
         await listPage.navigateTo();
         await browser.sleep(500);
 
-        // open PAB chute
+        // open 'PAB fall' calculator
         await listPage.clickMenuEntryForCalcType(12);
         await browser.sleep(500);
 
@@ -37,10 +37,47 @@ describe("ngHyd - check parameter mode is set to its previous value - ", () => {
         await cancelbtn.click();
         await browser.sleep(200);
 
-        // check Z1 var toggle is disabled
+        // check Z1 var toggle is not checked
         expect(await z1varbtn.getAttribute("ng-reflect-checked")).toBe("false");
 
-        // check Z1 calc toggle is enabled
+        // check Z1 calc toggle is checked
+        expect(await z1calcbtn.getAttribute("ng-reflect-checked")).toBe("true");
+    });
+
+    it("when min/max/list values dialog is cancelled on 'fish ladder' calculator", async () => {
+        // start page
+        await listPage.navigateTo();
+        await browser.sleep(500);
+
+        // open PAB calculator
+        await listPage.clickMenuEntryForCalcType(15);
+        await browser.sleep(500);
+
+        // "fixed" radio on Q parameter
+        const qfixbtn = element(by.id("mat-button-toggle-1"));
+        await browser.sleep(50);
+
+        // "var" radio on Z1 parameter
+        const z1varbtn = element(by.id("mat-button-toggle-6"));
+        await browser.sleep(50);
+
+        // "calc" radio on Z1 parameter
+        const z1calcbtn = element(by.id("mat-button-toggle-7"));
+        await browser.sleep(50);
+
+        // click "var" radio on Z1 parameter
+        await z1varbtn.click();
+        await browser.sleep(200);
+
+        // click cancel button
+        const cancelbtn = element(by.id("btn-cancel"));
+        await cancelbtn.click();
+        await browser.sleep(200);
+
+        // check Q fix toggle is checked
+        expect(await qfixbtn.getAttribute("ng-reflect-checked")).toBe("true");
+
+        // check Z1 calc toggle is checked
         expect(await z1calcbtn.getAttribute("ng-reflect-checked")).toBe("true");
     });
 });
-- 
GitLab


From e50c86007be5f345e9f624be17017419cf8bf651 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fran=C3=A7ois=20Grand?= <francois.grand@inrae.fr>
Date: Thu, 12 May 2022 15:19:49 +0200
Subject: [PATCH 2/2] fix: crash when variable mode dialog is canceled in fish
 ladder calculator

refs #542
---
 .../param-field-line/param-field-line.component.ts       | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/app/components/param-field-line/param-field-line.component.ts b/src/app/components/param-field-line/param-field-line.component.ts
index 1cb5750c7..fa34f53ae 100644
--- a/src/app/components/param-field-line/param-field-line.component.ts
+++ b/src/app/components/param-field-line/param-field-line.component.ts
@@ -211,8 +211,13 @@ export class ParamFieldLineComponent implements OnChanges {
         let ret = true;
         if (this.param.paramDefinition.isCalculated) {
             const nub = this.param.paramDefinition.parentNub;
-            const p = nub.findFirstCalculableParameter(this.param.paramDefinition);
-            ret = (p !== undefined);
+            try {
+                const p = nub.findFirstCalculableParameter(this.param.paramDefinition);
+                ret = (p !== undefined);
+            }
+            catch (e) {
+                ret = true;
+            }
         }
         return ret;
     }
-- 
GitLab