You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by hn...@apache.org on 2021/06/23 07:32:39 UTC

[myfaces-tobago] branch master updated: fix: jasmine tests

This is an automated email from the ASF dual-hosted git repository.

hnoeth pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git


The following commit(s) were added to refs/heads/master by this push:
     new 097e1bb  fix: jasmine tests
097e1bb is described below

commit 097e1bb7807319212f5ff5d5bd8bf69ff3953501
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Tue Jun 22 12:14:36 2021 +0200

    fix: jasmine tests
---
 .../080-sheet/70-tree/Sheet_Tree.test.js           | 14 ++---
 .../06-validation/00/Content_Validation.test.js    |  5 +-
 .../30-concept/06-validation/01/JSR_303.test.js    | 69 +++++++++++++---------
 .../30-concept/30-behavior/Behavior.test.js        | 69 +++++++++++-----------
 .../content/30-concept/30-behavior/Behavior.xhtml  | 18 +++---
 5 files changed, 92 insertions(+), 83 deletions(-)

diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/Sheet_Tree.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/Sheet_Tree.test.js
index c8b3d20..1b96266 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/Sheet_Tree.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/Sheet_Tree.test.js
@@ -25,6 +25,7 @@ it("Collapse tree", function (done) {
   let row0periodFn = querySelectorFn("#page\\:mainForm\\:sheet\\:0\\:periodOut");
   let row0discovererFn = querySelectorFn("#page\\:mainForm\\:sheet\\:0\\:discovererOut");
   let row0yearFn = querySelectorFn("#page\\:mainForm\\:sheet\\:0\\:yearOut");
+  let row1 = querySelectorFn("#page\\:mainForm\\:sheet\\:\\:data_div tr[row-index='1']");
   let row1nameFn = querySelectorFn("#page\\:mainForm\\:sheet\\:1\\:nameOut");
   let row1centralBodyFn = querySelectorFn("#page\\:mainForm\\:sheet\\:1\\:centralBodyOut");
   let row1distanceFn = querySelectorFn("#page\\:mainForm\\:sheet\\:1\\:distanceOut");
@@ -46,18 +47,15 @@ it("Collapse tree", function (done) {
   test.do(() => expect(row1periodFn().textContent).toBe("87.97"));
   test.do(() => expect(row1discovererFn().textContent).toBe("-"));
   test.do(() => expect(row1yearFn().textContent).toBe(""));
-  let sheetRow = row1yearFn().parentElement.parentElement;
-  test.do(() => expect(sheetRow.classList.contains("tobago-sheet-row")).toBe(true));
-  test.do(() => expect(getComputedStyle(sheetRow).display).not.toBe("none"));
-  test.event("click", rootTreeButtonFn, () => row0nameFn() && row0nameFn().textContent === "Sun");
-  test.do(() => expect(row0nameFn().textContent).toBe("Sun"));
+  test.do(() => expect(row1().classList.contains("d-none")).toBeFalse());
+  test.do(() => expect(getComputedStyle(row1()).display).not.toBe("none"));
+  test.event("click", rootTreeButtonFn, () => row1() && row1().classList.contains("d-none"));
+  test.do(() => expect(row1().classList.contains("d-none")).toBeTrue());
+  test.do(() => expect(getComputedStyle(row1()).display).toBe("none"));
   test.do(() => expect(row0centralBodyFn().textContent).toBe("-"));
   test.do(() => expect(row0distanceFn().textContent).toBe("0"));
   test.do(() => expect(row0periodFn().textContent).toBe("0.0"));
   test.do(() => expect(row0discovererFn().textContent).toBe("-"));
   test.do(() => expect(row0yearFn().textContent).toBe(""));
-  sheetRow = row1yearFn().parentElement.parentElement;
-  test.do(() => expect(sheetRow.classList.contains("tobago-sheet-row")).toBe(true));
-  test.do(() => expect(getComputedStyle(sheetRow).display).toBe("none"));
   test.start();
 });
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/00/Content_Validation.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/00/Content_Validation.test.js
index 86c87e9..4bff59a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/00/Content_Validation.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/00/Content_Validation.test.js
@@ -22,7 +22,6 @@ it("Required: Submit without content.", function (done) {
   let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
   let textareaFn = querySelectorFn("#page\\:mainForm\\:required\\:textarea\\:\\:field");
   let submitFn = querySelectorFn("#page\\:mainForm\\:required\\:submit_r");
-  let textareaValue = textareaFn().value;
 
   let test = new JasmineTestTool(done);
   test.setup(() => messagesFn() && messagesFn().length === 0,
@@ -31,7 +30,7 @@ it("Required: Submit without content.", function (done) {
   test.do(() => textareaFn().value = "");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 1);
   test.do(() => expect(messagesFn().length).toBe(1));
-  test.do(() => expect(textareaFn().value).toBe(textareaValue));
+  test.do(() => expect(textareaFn().value).toBe(""));
   test.start();
 });
 
@@ -74,7 +73,7 @@ it("Validate Length: Submit two character.", function (done) {
 
   let test = new JasmineTestTool(done);
   test.setup(() => messagesFn() && messagesFn().length === 1,
-      () => inFn().value = "",
+      () => inFn().value = "x",
       "click", submitFn);
   test.do(() => inFn().value = "ab");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 0);
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/01/JSR_303.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/01/JSR_303.test.js
index 6053795..661641f 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/01/JSR_303.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/01/JSR_303.test.js
@@ -15,45 +15,50 @@
  * limitations under the License.
  */
 
-import {querySelectorAllFn, querySelectorFn} from "/script/tobago-test.js";
+import {elementByIdFn, querySelectorAllFn} from "/script/tobago-test.js";
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("must be fixed first", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("must be fixed first"));
-  test.start();
-});
+it("Required: Submit without content.", function (done) {
+  const messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
+  const inFn = elementByIdFn("page:mainForm:required:in1::field");
+  const submitFn = elementByIdFn("page:mainForm:required:submit1");
 
-/*it("Required: Submit without content.", function (done) {
-  let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
-  let inFn = querySelectorFn("#page\\:mainForm\\:required\\:in1\\:\\:field");
-  let submitFn = querySelectorFn("#page\\:mainForm\\:required\\:submit1");
-
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => messagesFn() && messagesFn().length === 0,
+      () => inFn().value = "Alice",
+      "click", submitFn);
   test.do(() => inFn().value = "");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 1);
   test.do(() => expect(messagesFn().length).toBe(1));
+  test.do(() => expect(inFn().value).toBe(""));
   test.start();
 });
 
 it("Required: Submit with content.", function (done) {
-  let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
-  let inFn = querySelectorFn("#page\\:mainForm\\:required\\:in1\\:\\:field");
-  let submitFn = querySelectorFn("#page\\:mainForm\\:required\\:submit1");
+  const messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
+  const inFn = elementByIdFn("page:mainForm:required:in1::field");
+  const submitFn = elementByIdFn("page:mainForm:required:submit1");
 
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => messagesFn() && messagesFn().length === 1,
+      () => inFn().value = "",
+      "click", submitFn);
   test.do(() => inFn().value = "some content");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 0);
   test.do(() => expect(messagesFn().length).toBe(0));
+  test.do(() => expect(inFn().value).toBe("some content"));
   test.start();
 });
 
 it("Length: Submit single character.", function (done) {
-  let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
-  let inFn = querySelectorFn("#page\\:mainForm\\:length\\:in2\\:\\:field");
-  let submitFn = querySelectorFn("#page\\:mainForm\\:length\\:submit2");
+  const messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
+  const inFn = elementByIdFn("page:mainForm:length:in2::field");
+  const submitFn = elementByIdFn("page:mainForm:length:submit2");
 
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => messagesFn() && messagesFn().length === 0,
+      () => inFn().value = "Bob",
+      "click", submitFn);
   test.do(() => inFn().value = "a");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 1);
   test.do(() => expect(messagesFn().length).toBe(1));
@@ -61,11 +66,14 @@ it("Length: Submit single character.", function (done) {
 });
 
 it("Length: Submit three characters.", function (done) {
-  let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
-  let inFn = querySelectorFn("#page\\:mainForm\\:length\\:in2\\:\\:field");
-  let submitFn = querySelectorFn("#page\\:mainForm\\:length\\:submit2");
+  const messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
+  const inFn = elementByIdFn("page:mainForm:length:in2::field");
+  const submitFn = elementByIdFn("page:mainForm:length:submit2");
 
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => messagesFn() && messagesFn().length === 1,
+      () => inFn().value = "provoke exception",
+      "click", submitFn);
   test.do(() => inFn().value = "abc");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 0);
   test.do(() => expect(messagesFn().length).toBe(0));
@@ -73,13 +81,16 @@ it("Length: Submit three characters.", function (done) {
 });
 
 it("Length: Submit five characters.", function (done) {
-  let messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
-  let inFn = querySelectorFn("#page\\:mainForm\\:length\\:in2\\:\\:field");
-  let submitFn = querySelectorFn("#page\\:mainForm\\:length\\:submit2");
+  const messagesFn = querySelectorAllFn("#page\\:messages.tobago-messages div");
+  const inFn = elementByIdFn("page:mainForm:length:in2::field");
+  const submitFn = elementByIdFn("page:mainForm:length:submit2");
 
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => messagesFn() && messagesFn().length === 0,
+      () => inFn().value = "Dave",
+      "click", submitFn);
   test.do(() => inFn().value = "abcde");
   test.event("click", submitFn, () => messagesFn() && messagesFn().length === 1);
   test.do(() => expect(messagesFn().length).toBe(1));
   test.start();
-});*/
+});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.test.js
index 5c7083a..c9e8572 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.test.js
@@ -15,60 +15,61 @@
  * limitations under the License.
  */
 
+import {elementByIdFn, querySelectorFn} from "/script/tobago-test.js";
 import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
 
-it("must be fixed first", function (done) {
-  let test = new JasmineTestTool(done);
-  test.do(() => fail("must be fixed first"));
-  test.start();
-});
+it("Ajax Input", function (done) {
+  const ajaxInputFn = elementByIdFn("page:mainForm:inputAjax::field");
+  const ajaxOutputFn = querySelectorFn("#page\\:mainForm\\:outputAjax .form-control-plaintext");
 
-/*it("Ajax Input", function (done) {
-  let ajaxInputFn = querySelectorFn("#page\\:mainForm\\:j_id_2g\\:\\:field");
-  let ajaxOutputFn = querySelectorFn("#page\\:mainForm\\:outAjax .form-control-plaintext");
-
-  let test = new JasmineTestTool(done);
+  const test = new JasmineTestTool(done);
+  test.setup(() => ajaxOutputFn().textContent !== "Alice",
+      () => ajaxInputFn().value = "Bob",
+      "change", ajaxInputFn);
   test.do(() => ajaxInputFn().value = "Alice");
   test.event("change", ajaxInputFn, () => ajaxOutputFn() && ajaxOutputFn().textContent === "Alice");
-  test.do(() => expect(ajaxOutputFn().textContent).toBe(ajaxInputFn().value));
+  test.do(() => expect(ajaxOutputFn().textContent).toBe("Alice"));
   test.start();
 });
 
 it("Event Input", function (done) {
-  let eventInputFn = querySelectorFn("#page\\:mainForm\\:j_id_2k\\:\\:field");
-  let eventOutputFn = querySelectorFn("#page\\:mainForm\\:j_id_2m .form-control-plaintext");
+  const eventInputFn = elementByIdFn("page:mainForm:inputEvent::field");
+  const eventOutputFn = querySelectorFn("#page\\:mainForm\\:outputEvent .form-control-plaintext");
 
   let test = new JasmineTestTool(done);
-  test.do(() => eventInputFn().value = "Alice");
-  test.event("change", eventInputFn, () => eventOutputFn() && eventOutputFn().textContent === "Alice");
-  test.do(() => expect(eventOutputFn().textContent).toBe(eventInputFn().value));
+  test.setup(() => eventOutputFn().textContent !== "Charlie",
+      () => eventInputFn().value = "Dave",
+      "change", eventInputFn);
+  test.do(() => eventInputFn().value = "Charlie");
+  test.event("change", eventInputFn, () => eventOutputFn() && eventOutputFn().textContent === "Charlie");
+  test.do(() => expect(eventOutputFn().textContent).toBe("Charlie"));
   test.start();
 });
 
 it("change the event name", function (done) {
-  let ajaxFn = querySelectorFn("#page\\:mainForm\\:j_id_2p");
-  let eventFn = querySelectorFn("#page\\:mainForm\\:j_id_2q");
-  let outCounterFn = querySelectorFn("#page\\:mainForm\\:outCounter .form-control-plaintext");
-  let counter = Number(outCounterFn().textContent);
+  const dblButtonAjaxFn = elementByIdFn("page:mainForm:dblButtonAjax");
+  const dblButtonEventFn = elementByIdFn("page:mainForm:dblButtonEvent");
+  const dblCounterFn = querySelectorFn("#page\\:mainForm\\:dblCounter .form-control-plaintext");
+  let counter = Number(dblCounterFn().textContent);
 
   let test = new JasmineTestTool(done);
-  test.event("dblclick", ajaxFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 1);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 1));
-  test.event("dblclick", eventFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 2);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 2));
-  test.event("click", ajaxFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 2);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 2));
-  test.event("dblclick", eventFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 3);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 3));
-  test.event("click", eventFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 3);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 3));
-  test.event("dblclick", ajaxFn, () => outCounterFn() && Number(outCounterFn().textContent) === counter + 4);
-  test.do(() => expect(Number(outCounterFn().textContent)).toBe(counter + 4));
+  test.event("dblclick", dblButtonAjaxFn,
+      () => dblCounterFn() && Number(dblCounterFn().textContent) === counter + 1);
+  test.do(() => expect(Number(dblCounterFn().textContent)).toBe(counter + 1));
+  test.event("dblclick", dblButtonEventFn,
+      () => dblCounterFn() && Number(dblCounterFn().textContent) === counter + 2);
+  test.do(() => expect(Number(dblCounterFn().textContent)).toBe(counter + 2));
+  test.event("dblclick", dblButtonEventFn,
+      () => dblCounterFn() && Number(dblCounterFn().textContent) === counter + 3);
+  test.do(() => expect(Number(dblCounterFn().textContent)).toBe(counter + 3));
+  test.event("dblclick", dblButtonAjaxFn,
+      () => dblCounterFn() && Number(dblCounterFn().textContent) === counter + 4);
+  test.do(() => expect(Number(dblCounterFn().textContent)).toBe(counter + 4));
   test.start();
 });
 
 it("f:ajax and tc:event", function (done) {
-  let submitFn = querySelectorFn("#page\\:mainForm\\:btnAjaxEvent");
+  let submitFn = elementByIdFn("page:mainForm:btnAjaxEvent");
   let outFn = querySelectorFn("#page\\:mainForm\\:out .form-control-plaintext");
 
   let test = new JasmineTestTool(done);
@@ -79,4 +80,4 @@ it("f:ajax and tc:event", function (done) {
   test.event("click", submitFn, () => outFn() && outFn().textContent === "Ajax");
   test.do(() => expect(outFn().textContent).toBe("Ajax"));
   test.start();
-});*/
+});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.xhtml
index 350e2d7..6aee197 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/30-behavior/Behavior.xhtml
@@ -41,10 +41,10 @@
       <demo-highlight language="markup">&lt;tc:in label="Ajax Input" value="\#{behaviorController.ajax}">
   &lt;f:ajax render="outAjax"/>
 &lt;/tc:in></demo-highlight>
-      <tc:in label="Ajax Input" value="#{behaviorController.ajax}">
-        <f:ajax render="outAjax"/>
+      <tc:in id="inputAjax" label="Ajax Input" value="#{behaviorController.ajax}">
+        <f:ajax render="outputAjax"/>
       </tc:in>
-      <tc:out id="outAjax" label="Ajax Output" value="#{behaviorController.ajax}"/>
+      <tc:out id="outputAjax" label="Ajax Output" value="#{behaviorController.ajax}"/>
     </tc:section>
 
     <tc:section label="tc:event">
@@ -52,10 +52,10 @@
   &lt;tc:event/>
 &lt;/tc:in></demo-highlight>
 
-      <tc:in label="Event Input" value="#{behaviorController.event}">
+      <tc:in id="inputEvent" label="Event Input" value="#{behaviorController.event}">
         <tc:event/>
       </tc:in>
-      <tc:out label="Event Output" value="#{behaviorController.event}"/>
+      <tc:out id="outputEvent" label="Event Output" value="#{behaviorController.event}"/>
     </tc:section>
   </tc:section>
 
@@ -69,13 +69,13 @@
 &lt;tc:button label="Event Double Click">
   &lt;tc:event event="dblclick" actionListener="..."/>
 &lt;/tc:button></demo-highlight>
-    <tc:button label="Ajax Double Click">
-      <f:ajax event="dblclick" render="outCounter" listener="#{behaviorController.countUp}"/>
+    <tc:button id="dblButtonAjax" label="Ajax Double Click">
+      <f:ajax event="dblclick" render="dblCounter" listener="#{behaviorController.countUp}"/>
     </tc:button>
-    <tc:button label="Event Double Click">
+    <tc:button id="dblButtonEvent" label="Event Double Click">
       <tc:event event="dblclick" actionListener="#{behaviorController.countUp}"/>
     </tc:button>
-    <tc:out id="outCounter" label="Counter" value="#{behaviorController.counter}"/>
+    <tc:out id="dblCounter" label="Counter" value="#{behaviorController.counter}"/>
   </tc:section>
 
   <tc:section label="Advanced">