fix: jasmine tests
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/30-selectOneRadio/Radio.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/30-selectOneRadio/Radio.test.js
index a16f422..aaa1a91 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/30-selectOneRadio/Radio.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/030-select/30-selectOneRadio/Radio.test.js
@@ -22,7 +22,7 @@
let number1Fn = querySelectorAllFn("#page\\:mainForm\\:selectNum1 input");
let number2Fn = querySelectorAllFn("#page\\:mainForm\\:selectNum2 input");
let submitAddFn = querySelectorFn("#page\\:mainForm\\:submitAdd");
- let outputFn = querySelectorFn("#page\\:mainForm\\:resultOutput span");
+ let outputFn = querySelectorFn("#page\\:mainForm\\:resultOutput tobago-out");
const test = new JasmineTestTool(done);
test.do(() => number1Fn().item(0).checked = false);
@@ -40,7 +40,7 @@
let number1Fn = querySelectorAllFn("#page\\:mainForm\\:selectNum1 input");
let number2Fn = querySelectorAllFn("#page\\:mainForm\\:selectNum2 input");
let submitSubFn = querySelectorFn("#page\\:mainForm\\:submitSub");
- let outputFn = querySelectorFn("#page\\:mainForm\\:resultOutput span");
+ let outputFn = querySelectorFn("#page\\:mainForm\\:resultOutput tobago-out");
const test = new JasmineTestTool(done);
test.do(() => number1Fn().item(0).checked = false);
@@ -57,7 +57,7 @@
const earthFn = elementByIdFn("page:mainForm:selectPlanet::0");
const marsFn = elementByIdFn("page:mainForm:selectPlanet::1");
const jupiterFn = elementByIdFn("page:mainForm:selectPlanet::2");
- const moonsFn = querySelectorAllFn("#page\\:mainForm\\:moonradio .custom-control-label");
+ const moonsFn = querySelectorAllFn("#page\\:mainForm\\:moonradio .form-check-label");
const test = new JasmineTestTool(done);
test.do(() => earthFn().checked = false);
@@ -73,7 +73,7 @@
const earthFn = elementByIdFn("page:mainForm:selectPlanet::0");
const marsFn = elementByIdFn("page:mainForm:selectPlanet::1");
const jupiterFn = elementByIdFn("page:mainForm:selectPlanet::2");
- const moonsFn = querySelectorAllFn("#page\\:mainForm\\:moonradio .custom-control-label");
+ const moonsFn = querySelectorAllFn("#page\\:mainForm\\:moonradio .form-check-label");
const test = new JasmineTestTool(done);
test.do(() => earthFn().checked = false);
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/Sheet_Sorting.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/Sheet_Sorting.test.js
index 7afdb69..921b36a 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/Sheet_Sorting.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/Sheet_Sorting.test.js
@@ -28,7 +28,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Earth",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Earth",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -69,7 +69,7 @@
() => colPeriodFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colPeriodFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Rosalind",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Rosalind",
() => {
leftPagingFn().value = "29";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -110,7 +110,7 @@
() => colYearFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colYearFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Amalthea",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Amalthea",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -119,17 +119,17 @@
test.do(() => expect(colYearFn().classList.contains("tobago-sheet-header-markup-ascending")).toBe(true));
test.do(() => expect(colYearFn().classList.contains("tobago-sheet-header-markup-descending")).not.toBe(true));
test.event("click", colYearFn,
- () => rowsFn() && rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent === "1999");
- test.do(() => expect(rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent).toBe("1999"));
- test.do(() => expect(rowsFn()[1].querySelectorAll(".tobago-out")[2].textContent).toBe("1999"));
- test.do(() => expect(rowsFn()[2].querySelectorAll(".tobago-out")[2].textContent).toBe("1997"));
- test.do(() => expect(rowsFn()[3].querySelectorAll(".tobago-out")[2].textContent).toBe("1997"));
+ () => rowsFn() && rowsFn()[0].querySelectorAll("tobago-out")[2].textContent === "1999");
+ test.do(() => expect(rowsFn()[0].querySelectorAll("tobago-out")[2].textContent).toBe("1999"));
+ test.do(() => expect(rowsFn()[1].querySelectorAll("tobago-out")[2].textContent).toBe("1999"));
+ test.do(() => expect(rowsFn()[2].querySelectorAll("tobago-out")[2].textContent).toBe("1997"));
+ test.do(() => expect(rowsFn()[3].querySelectorAll("tobago-out")[2].textContent).toBe("1997"));
test.event("click", colYearFn,
- () => rowsFn() && rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent === "1892");
- test.do(() => expect(rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent).toBe("1892"));
- test.do(() => expect(rowsFn()[1].querySelectorAll(".tobago-out")[2].textContent).toBe("1898"));
- test.do(() => expect(rowsFn()[2].querySelectorAll(".tobago-out")[2].textContent).toBe("1904"));
- test.do(() => expect(rowsFn()[3].querySelectorAll(".tobago-out")[2].textContent).toBe("1905"));
+ () => rowsFn() && rowsFn()[0].querySelectorAll("tobago-out")[2].textContent === "1892");
+ test.do(() => expect(rowsFn()[0].querySelectorAll("tobago-out")[2].textContent).toBe("1892"));
+ test.do(() => expect(rowsFn()[1].querySelectorAll("tobago-out")[2].textContent).toBe("1898"));
+ test.do(() => expect(rowsFn()[2].querySelectorAll("tobago-out")[2].textContent).toBe("1904"));
+ test.do(() => expect(rowsFn()[3].querySelectorAll("tobago-out")[2].textContent).toBe("1905"));
test.start();
});
@@ -147,7 +147,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "1986U10",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "1986U10",
() => {
leftPagingFn().value = "1";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -198,7 +198,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "1986U10",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "1986U10",
() => {
leftPagingFn().value = "1";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -261,7 +261,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Earth",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Earth",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -333,7 +333,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Earth",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Earth",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -374,7 +374,7 @@
() => colPeriodFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colPeriodFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Mimas",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Mimas",
() => {
leftPagingFn().value = "29";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -415,7 +415,7 @@
() => colYearFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colYearFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent === "1789",
+ () => rowsFn()[0].querySelectorAll("tobago-out")[2].textContent === "1789",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -424,17 +424,17 @@
test.do(() => expect(colYearFn().classList.contains("tobago-sheet-header-markup-ascending")).toBe(true));
test.do(() => expect(colYearFn().classList.contains("tobago-sheet-header-markup-descending")).not.toBe(true));
test.event("click", colYearFn,
- () => rowsFn() && rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent === "1989");
- test.do(() => expect(rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent).toBe("1989"));
- test.do(() => expect(rowsFn()[1].querySelectorAll(".tobago-out")[2].textContent).toBe("1989"));
- test.do(() => expect(rowsFn()[2].querySelectorAll(".tobago-out")[2].textContent).toBe("1989"));
- test.do(() => expect(rowsFn()[3].querySelectorAll(".tobago-out")[2].textContent).toBe("1986"));
+ () => rowsFn() && rowsFn()[0].querySelectorAll("tobago-out")[2].textContent === "1989");
+ test.do(() => expect(rowsFn()[0].querySelectorAll("tobago-out")[2].textContent).toBe("1989"));
+ test.do(() => expect(rowsFn()[1].querySelectorAll("tobago-out")[2].textContent).toBe("1989"));
+ test.do(() => expect(rowsFn()[2].querySelectorAll("tobago-out")[2].textContent).toBe("1989"));
+ test.do(() => expect(rowsFn()[3].querySelectorAll("tobago-out")[2].textContent).toBe("1986"));
test.event("click", colYearFn,
- () => rowsFn() && rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent === "1789");
- test.do(() => expect(rowsFn()[0].querySelectorAll(".tobago-out")[2].textContent).toBe("1789"));
- test.do(() => expect(rowsFn()[1].querySelectorAll(".tobago-out")[2].textContent).toBe("1846"));
- test.do(() => expect(rowsFn()[2].querySelectorAll(".tobago-out")[2].textContent).toBe("1846"));
- test.do(() => expect(rowsFn()[3].querySelectorAll(".tobago-out")[2].textContent).toBe("1848"));
+ () => rowsFn() && rowsFn()[0].querySelectorAll("tobago-out")[2].textContent === "1789");
+ test.do(() => expect(rowsFn()[0].querySelectorAll("tobago-out")[2].textContent).toBe("1789"));
+ test.do(() => expect(rowsFn()[1].querySelectorAll("tobago-out")[2].textContent).toBe("1846"));
+ test.do(() => expect(rowsFn()[2].querySelectorAll("tobago-out")[2].textContent).toBe("1846"));
+ test.do(() => expect(rowsFn()[3].querySelectorAll("tobago-out")[2].textContent).toBe("1848"));
test.start();
});
@@ -452,7 +452,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "1986U10",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "1986U10",
() => {
leftPagingFn().value = "1";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -503,7 +503,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "1986U10",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "1986U10",
() => {
leftPagingFn().value = "1";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
@@ -566,7 +566,7 @@
() => colNameFn().classList.contains("tobago-sheet-header-markup-ascending"),
() => colNameFn().dispatchEvent(new Event("click", {bubbles: true})));
test.setup(
- () => rowsFn()[0].querySelector(".tobago-out").textContent === "Earth",
+ () => rowsFn()[0].querySelector("tobago-out").textContent === "Earth",
() => {
leftPagingFn().value = "22";
leftPagingFn().dispatchEvent(new Event("blur", {bubbles: true}));
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/04-listbox/Tree_Listbox.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/04-listbox/Tree_Listbox.test.js
index e507905..f318fbd 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/04-listbox/Tree_Listbox.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/090-tree/04-listbox/Tree_Listbox.test.js
@@ -21,7 +21,7 @@
it("Select 2,2,0 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
- const output = querySelectorFn("#page\\:mainForm\\:output span");
+ const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node3 = elementByIdFn("page:mainForm:listbox:3:node"); // 2
const node6 = elementByIdFn("page:mainForm:listbox:6:node"); // 2,2
@@ -90,7 +90,7 @@
it("Select 3 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
- const output = querySelectorFn("#page\\:mainForm\\:output span");
+ const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node9 = elementByIdFn("page:mainForm:listbox:9:node"); // 3
@@ -127,7 +127,7 @@
it("Select 4,2,1,1 and submit", function (done) {
const hiddenInput = elementByIdFn("page:mainForm:listbox::selected");
const submit = elementByIdFn("page:mainForm:submit");
- const output = querySelectorFn("#page\\:mainForm\\:output span");
+ const output = querySelectorFn("#page\\:mainForm\\:output tobago-out");
const node1 = elementByIdFn("page:mainForm:listbox:1:node");
const node10 = elementByIdFn("page:mainForm:listbox:10:node"); // 4
const node15 = elementByIdFn("page:mainForm:listbox:15:node"); // 4,2
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/30-messages/Messages.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/30-messages/Messages.test.js
index 613453d..603e24d 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/30-messages/Messages.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/06-validation/30-messages/Messages.test.js
@@ -21,7 +21,7 @@
it("Press '7 Messages' Button and close the first, the last and the fourth", function (done) {
const tab = querySelectorFn("#page\\:mainForm\\:woAttr > .nav-link");
const alerts = querySelectorAllFn("#page\\:mainForm\\:woAttr\\:woAttrMessage .alert");
- const closeButtons = querySelectorAllFn("#page\\:mainForm\\:woAttr\\:woAttrMessage .alert .close");
+ const closeButtons = querySelectorAllFn("#page\\:mainForm\\:woAttr\\:woAttrMessage .alert .btn-close");
const alertLabels = querySelectorAllFn("#page\\:mainForm\\:woAttr\\:woAttrMessage .alert label");
const messagesButton = elementByIdFn("page:mainForm:add7messages");
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/10-required/Required.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/10-required/Required.test.js
index 6f80716..8843562 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/10-required/Required.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/10-required/Required.test.js
@@ -19,150 +19,210 @@
import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
it("submit inner form 1 without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:in1\\:\\:field");
- let form1SubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:submit1");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:out1 span");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:out1 tobago-out");
+ let form1SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:submit1");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Alice");
- test.do(() => form1SubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Alice");
- test.do(() => expect(form1InputFieldFn().value).toBe("Alice"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe("Alice"));
+ test.setup(() => form1OutputFn().textContent !== "Alice",
+ () => {
+ form1InputFn().value = "Bob";
+ form1SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ });
+ test.do(() => form1InputFn().value = "Alice");
+ test.event("click", form1SubmitFn, () => form1OutputFn().textContent === "Alice")
+ test.do(() => expect(form1InputFn().value).toBe("Alice"));
+ test.do(() => expect(form1OutputFn().textContent).toBe("Alice"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit inner form 2, violate required field", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let form2SubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:submit2");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let form2SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:submit2");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
+ let form2OutputValue = form2OutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => form2SubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "");
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
+ test.setup(() => form2AlertFn() === null,
+ () => {
+ form2InputFn().value = "Bob";
+ form2SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form2OutputValue = "Bob";
+ });
+ test.do(() => form2InputFn().value = "");
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.event("click", form2SubmitFn, () => form2AlertFn() !== null)
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit inner form 2 without violations", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let form2SubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:submit2");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let form2SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:submit2");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "Bob");
- test.do(() => expect(form2InputFieldFn().value).toBe("Bob"));
- test.do(() => form2SubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "Bob");
- test.do(() => expect(form2InputFieldFn().value).toBe("Bob"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe("Bob"));
+ test.setup(() => form2OutputFn().textContent !== "Bob",
+ () => {
+ form2InputFn().value = "Charlie";
+ form2SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ });
+ test.do(() => form2InputFn().value = "Bob");
+ test.event("click", form2SubmitFn, () => form2OutputFn().textContent === "Bob");
+ test.do(() => expect(form2InputFn().value).toBe("Bob"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe("Bob"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit outer form, violate both required fields", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormSubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => outerFormSubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "");
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form2AlertFn() === null && outerFormAlertFn() === null,
+ () => {
+ form2InputFn().value = "Charlie";
+ outerFormInputFn().value = "Dave";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form2OutputValue = "Charlie";
+ outerFormOutputValue = "Dave"
+ });
+ test.do(() => form2InputFn().value = "");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", outerFormSubmitFn, () => form2AlertFn() !== null && outerFormAlertFn() !== null);
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).not.toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(2));
test.start();
});
it("submit outer form, violate required field in form 2", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormSubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let form2SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:submit2");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => outerFormInputFieldFn().value = "Charlie");
- test.do(() => outerFormSubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "");
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("Charlie"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form2AlertFn() === null,
+ () => {
+ form2InputFn().value = "Dave";
+ form2SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form2OutputValue = "Dave";
+ });
+ test.do(() => form2InputFn().value = "");
+ test.do(() => outerFormInputFn().value = "Eve");
+ test.event("click", outerFormSubmitFn, () => form2AlertFn() !== null && outerFormAlertFn() === null);
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe("Eve"));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit outer form, violate required field in outer form", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormSubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "Dave");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => outerFormSubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "Dave");
- test.do(() => expect(form2InputFieldFn().value).toBe("Dave"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => outerFormAlertFn() === null,
+ () => {
+ form2InputFn().value = "Frank"
+ outerFormInputFn().value = "Eve";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}))
+ form2OutputValue = "Frank"
+ outerFormOutputValue = "Eve";
+ });
+ test.do(() => form2InputFn().value = "Frank");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", outerFormSubmitFn, () => outerFormAlertFn() !== null);
+ test.do(() => expect(form2InputFn().value).toBe("Frank"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).not.toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit outer form without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:in1\\:\\:field");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormSubmitButtonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:out1 span");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 span");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:innerForm2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Eve");
- test.do(() => form2InputFieldFn().value = "Frank");
- test.do(() => outerFormInputFieldFn().value = "Grace");
- test.do(() => outerFormSubmitButtonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Eve");
- test.do(() => expect(form1InputFieldFn().value).toBe("Eve"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe("Eve"));
- test.do(() => expect(form2InputFieldFn().value).toBe("Frank"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe("Frank"));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("Grace"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe("Grace"));
+ test.setup(() => form1OutputFn().textContent !== "Frank"
+ && form2OutputFn().textContent !== "Eve"
+ && outerFormOutputFn().textContent !== "Grace",
+ () => {
+ form1InputFn().value = "Alice";
+ form2InputFn().value = "Bob";
+ outerFormInputFn().value = "Charlie";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}))
+ });
+ test.do(() => form1InputFn().value = "Frank");
+ test.do(() => form2InputFn().value = "Eve");
+ test.do(() => outerFormInputFn().value = "Grace");
+ test.event("click", outerFormSubmitFn,
+ () => form1OutputFn().textContent === "Frank"
+ && form2OutputFn().textContent === "Eve"
+ && outerFormOutputFn().textContent === "Grace")
+ test.do(() => expect(form1InputFn().value).toBe("Frank"));
+ test.do(() => expect(form1OutputFn().textContent).toBe("Frank"));
+ test.do(() => expect(form2InputFn().value).toBe("Eve"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe("Eve"));
+ test.do(() => expect(outerFormInputFn().value).toBe("Grace"));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe("Grace"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.test.js
index 2f619b9..6851ce1 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.test.js
@@ -19,284 +19,402 @@
import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
it("submit inner form 1 without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:submit1");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form1SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:submit1");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Alice");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Alice");
- test.do(() => expect(form1InputFieldFn().value).toBe("Alice"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe("Alice"));
+ test.setup(() => form1OutputFn().textContent !== "Alice",
+ () => {
+ form1InputFn().value = "Bob";
+ form1SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ });
+ test.do(() => form1InputFn().value = "Alice");
+ test.event("click", form1SubmitFn, () => form1OutputFn().textContent === "Alice");
+ test.do(() => expect(form1InputFn().value).toBe("Alice"));
+ test.do(() => expect(form1OutputFn().textContent).toBe("Alice"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit inner form 2, violate required field", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:submit2");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let form2SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:submit2");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "");
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
+ test.setup(() => form2AlertFn() === null,
+ () => {
+ form2InputFn().value = "Bob";
+ form2SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form2OutputValue = "Bob";
+ });
+ test.do(() => form2InputFn().value = "");
+ test.event("click", form2SubmitFn, () => form2AlertFn() !== null);
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit inner form 2 without violations", function (done) {
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:submit2");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let form2SubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:submit2");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form2InputFieldFn().value = "Bob");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form2InputFieldFn() && form2InputFieldFn().value === "Bob");
- test.do(() => expect(form2InputFieldFn().value).toBe("Bob"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe("Bob"));
+ test.setup(() => form2OutputFn().textContent !== "Bob",
+ () => {
+ form2InputFn().value = "Alice";
+ form2SubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ });
+ test.do(() => form2InputFn().value = "Bob");
+ test.event("click", form2SubmitFn, () => form2OutputFn().textContent === "Bob");
+ test.do(() => expect(form2InputFn().value).toBe("Bob"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe("Bob"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit outer form, violate both required fields", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Charlie");
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Charlie");
- test.do(() => expect(form1InputFieldFn().value).toBe("Charlie"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form1OutputFn().textContent !== "Dave"
+ && form2AlertFn() === null && outerFormAlertFn() === null,
+ () => {
+ form1InputFn().value = "Alice";
+ form2InputFn().value = "Bob";
+ outerFormInputFn().value = "Charlie";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form1OutputValue = "Alice"
+ form2OutputValue = "Bob";
+ outerFormOutputValue = "Charlie"
+ });
+ test.do(() => form1InputFn().value = "Dave");
+ test.do(() => form2InputFn().value = "");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", outerFormSubmitFn, () => form2AlertFn() !== null && outerFormAlertFn() !== null);
+ test.do(() => expect(form1InputFn().value).toBe("Dave"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).not.toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(2));
test.start();
});
it("submit outer form, violate required field in form 2", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Dave");
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => outerFormInputFieldFn().value = "Eve");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Dave");
- test.do(() => expect(form1InputFieldFn().value).toBe("Dave"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("Eve"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form1OutputFn().textContent !== "Charlie" && form2AlertFn() === null,
+ () => {
+ form1InputFn().value = "Alice";
+ form2InputFn().value = "Bob";
+ outerFormInputFn().value = "Charlie";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form1OutputValue = "Alice"
+ form2OutputValue = "Bob";
+ outerFormOutputValue = "Charlie"
+ });
+ test.do(() => form1InputFn().value = "Charlie");
+ test.do(() => form2InputFn().value = "");
+ test.do(() => outerFormInputFn().value = "Dave");
+ test.event("click", outerFormSubmitFn, () => form2AlertFn() !== null);
+ test.do(() => expect(form1InputFn().value).toBe("Charlie"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe("Dave"));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit outer form, violate required field in outer form", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Frank");
- test.do(() => form2InputFieldFn().value = "Grace");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Frank");
- test.do(() => expect(form1InputFieldFn().value).toBe("Frank"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe("Grace"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => outerFormAlertFn() === null,
+ () => {
+ form1InputFn().value = "Dave"
+ form2InputFn().value = "Eve"
+ outerFormInputFn().value = "Frank";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}))
+ form1OutputValue = "Dave"
+ form2OutputValue = "Eve"
+ outerFormOutputValue = "Frank";
+ });
+ test.do(() => form1InputFn().value = "Eve");
+ test.do(() => form2InputFn().value = "Frank");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", outerFormSubmitFn, () => outerFormAlertFn() !== null);
+ test.do(() => expect(form1InputFn().value).toBe("Eve"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe("Frank"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).not.toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit outer form without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Hank");
- test.do(() => form2InputFieldFn().value = "Irene");
- test.do(() => outerFormInputFieldFn().value = "John");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Hank");
- test.do(() => expect(form1InputFieldFn().value).toBe("Hank"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe("Hank"));
- test.do(() => expect(form2InputFieldFn().value).toBe("Irene"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe("Irene"));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("John"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe("John"));
+ test.setup(() => form1OutputFn().textContent !== "Hank"
+ && form2OutputFn().textContent !== "Irene"
+ && outerFormOutputFn().textContent !== "John",
+ () => {
+ form1InputFn().value = "Eve";
+ form2InputFn().value = "Frank";
+ outerFormInputFn().value = "Grace";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}))
+ });
+ test.do(() => form1InputFn().value = "Hank");
+ test.do(() => form2InputFn().value = "Irene");
+ test.do(() => outerFormInputFn().value = "John");
+ test.event("click", outerFormSubmitFn, () => form1OutputFn().textContent === "Hank"
+ && form2OutputFn().textContent === "Irene" && outerFormOutputFn().textContent === "John");
+ test.do(() => expect(form1InputFn().value).toBe("Hank"));
+ test.do(() => expect(form1OutputFn().textContent).toBe("Hank"));
+ test.do(() => expect(form2InputFn().value).toBe("Irene"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe("Irene"));
+ test.do(() => expect(outerFormInputFn().value).toBe("John"));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe("John"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit inner forms, violate required field in form 2", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitInnerForms");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let submitInnerForms = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitInnerForms");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Kate");
- test.do(() => form2InputFieldFn().value = "");
- test.do(() => outerFormInputFieldFn().value = "Leonard");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Kate");
- test.do(() => expect(form1InputFieldFn().value).toBe("Kate"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe(""));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("Leonard"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form1OutputFn().textContent !== "Kate" && form2AlertFn() === null,
+ () => {
+ form1InputFn().value = "Alice";
+ form2InputFn().value = "Bob";
+ outerFormInputFn().value = "Charlie"
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form1OutputValue = "Alice"
+ form2OutputValue = "Bob";
+ outerFormOutputValue = "Charlie";
+ });
+ test.do(() => form1InputFn().value = "Kate");
+ test.do(() => form2InputFn().value = "");
+ test.do(() => outerFormInputFn().value = "Leonard");
+ test.event("click", submitInnerForms, () => form2AlertFn() !== null);
+ test.do(() => expect(form1InputFn().value).toBe("Kate"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe(""));
+ test.do(() => expect(form2AlertFn()).not.toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe("Leonard"));
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit inner forms without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitInnerForms");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let submitInnerForms = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitInnerForms");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Mike");
- test.do(() => form2InputFieldFn().value = "Neil");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Mike");
- test.do(() => expect(form1InputFieldFn().value).toBe("Mike"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe("Mike"));
- test.do(() => expect(form2InputFieldFn().value).toBe("Neil"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe("Neil"));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form1OutputFn().textContent !== "Mike"
+ && form2OutputFn().textContent !== "Neil"
+ && outerFormAlertFn() === null,
+ () => {
+ form1InputFn().value = "Kate";
+ form2InputFn().value = "Mike";
+ outerFormInputFn().value = "Leonard";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ outerFormOutputValue = "Leonard";
+ });
+ test.do(() => form1InputFn().value = "Mike");
+ test.do(() => form2InputFn().value = "Neil");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", submitInnerForms,
+ () => form1OutputFn().textContent === "Mike" && form2OutputFn().textContent === "Neil");
+ test.do(() => expect(form1InputFn().value).toBe("Mike"));
+ test.do(() => expect(form1OutputFn().textContent).toBe("Mike"));
+ test.do(() => expect(form2InputFn().value).toBe("Neil"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe("Neil"));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
it("submit outer value, violate required field", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitOuterValue");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let submitOuterValue = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitOuterValue");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
- let outerFormOutputFieldValue = outerFormOutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
+ let outerFormOutputValue = outerFormOutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Oscar");
- test.do(() => form2InputFieldFn().value = "Penny");
- test.do(() => outerFormInputFieldFn().value = "");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Oscar");
- test.do(() => expect(form1InputFieldFn().value).toBe("Oscar"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe("Penny"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe(""));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe(outerFormOutputFieldValue));
+ test.setup(() => form2AlertFn() === null && outerFormAlertFn() === null,
+ () => {
+ form1InputFn().value = "Leonard";
+ form2InputFn().value = "Mike";
+ outerFormInputFn().value = "Neil";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form1OutputValue = "Leonard";
+ form2OutputValue = "Mike";
+ outerFormOutputValue = "Neil";
+ });
+ test.do(() => form1InputFn().value = "Oscar");
+ test.do(() => form2InputFn().value = "Penny");
+ test.do(() => outerFormInputFn().value = "");
+ test.event("click", submitOuterValue, () => outerFormAlertFn() !== null);
+ test.do(() => expect(form1InputFn().value).toBe("Oscar"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe("Penny"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe(""));
+ test.do(() => expect(outerFormAlertFn()).not.toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe(outerFormOutputValue));
test.do(() => expect(alertFn().length).toBe(1));
test.start();
});
it("submit outer value without violations", function (done) {
- let form1InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
- let form1OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 span");
- let form2InputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
- let form2OutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 span");
- let outerFormInputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
- let outerFormOutputFieldFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out span");
- let buttonFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitOuterValue");
+ let form1InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:in1\\:\\:field");
+ let form1OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form1\\:out1 tobago-out");
+ let form2InputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2\\:\\:field");
+ let form2AlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:in2 .tobago-messages-container");
+ let form2OutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:form2\\:out2 tobago-out");
+ let outerFormInputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in\\:\\:field");
+ let outerFormAlertFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:in .tobago-messages-container");
+ let outerFormOutputFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:out tobago-out");
+ let outerFormSubmitFn = querySelectorFn("#page\\:mainForm\\:outerForm\\:submit");
+ let submitOuterValue = querySelectorFn("#page\\:mainForm\\:outerForm\\:submitOuterValue");
let alertFn = querySelectorAllFn("#page\\:messages .alert-danger label");
-
- let form1OutputFieldValue = form1OutputFieldFn().textContent;
- let form2OutputFieldValue = form2OutputFieldFn().textContent;
+ let form1OutputValue = form1OutputFn().textContent;
+ let form2OutputValue = form2OutputFn().textContent;
let test = new JasmineTestTool(done);
- test.do(() => form1InputFieldFn().value = "Quin");
- test.do(() => form2InputFieldFn().value = "Sue");
- test.do(() => outerFormInputFieldFn().value = "Ted");
- test.do(() => buttonFn().dispatchEvent(new Event("click", {bubbles: true})));
- test.wait(() => form1InputFieldFn() && form1InputFieldFn().value === "Quin");
- test.do(() => expect(form1InputFieldFn().value).toBe("Quin"));
- test.do(() => expect(form1OutputFieldFn().textContent).toBe(form1OutputFieldValue));
- test.do(() => expect(form2InputFieldFn().value).toBe("Sue"));
- test.do(() => expect(form2OutputFieldFn().textContent).toBe(form2OutputFieldValue));
- test.do(() => expect(outerFormInputFieldFn().value).toBe("Ted"));
- test.do(() => expect(outerFormOutputFieldFn().textContent).toBe("Ted"));
+ test.setup(() => form2AlertFn() === null && form1OutputFn().textContent !== "Quin"
+ && form2OutputFn().textContent !== "Sue" && outerFormOutputFn().textContent !== "Ted",
+ () => {
+ form1InputFn().value = "Neil";
+ form2InputFn().value = "Oscar";
+ outerFormInputFn().value = "Penny";
+ outerFormSubmitFn().dispatchEvent(new Event("click", {bubbles: true}));
+ form1OutputValue = "Neil";
+ form2OutputValue = "Oscar";
+ });
+ test.do(() => form1InputFn().value = "Quin");
+ test.do(() => form2InputFn().value = "Sue");
+ test.do(() => outerFormInputFn().value = "Ted");
+ test.event("click", submitOuterValue, () => outerFormOutputFn().textContent === "Ted")
+ test.do(() => expect(form1InputFn().value).toBe("Quin"));
+ test.do(() => expect(form1OutputFn().textContent).toBe(form1OutputValue));
+ test.do(() => expect(form2InputFn().value).toBe("Sue"));
+ test.do(() => expect(form2AlertFn()).toBeNull());
+ test.do(() => expect(form2OutputFn().textContent).toBe(form2OutputValue));
+ test.do(() => expect(outerFormInputFn().value).toBe("Ted"));
+ test.do(() => expect(outerFormAlertFn()).toBeNull());
+ test.do(() => expect(outerFormOutputFn().textContent).toBe("Ted"));
test.do(() => expect(alertFn().length).toBe(0));
test.start();
});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.xhtml
index fd475fa..29f0034 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/08-form/20-ajax/Ajax.xhtml
@@ -53,7 +53,7 @@
<tc:in label="Inner Value 1"/>
<tc:out label="Inner Value 1 in Model"/>
<tc:button label="Submit">
- <f:ajax execute="in" render="out :page:messages"/>
+ <f:ajax execute="in" render="in out :page:messages"/>
</tc:button>
</tc:form>
</tc:box>
@@ -65,7 +65,7 @@
<tc:out label="Outer Value in Model"/>
<tc:button label="Submit">
<f:ajax execute="::form1:in ::form2:in in"
- render="::form1:out ::form2:out out :page:messages"/>
+ render="::form1:in ::form2:in in ::form1:out ::form2:out out :page:messages"/>
</tc:button>
...
</tc:form>
@@ -78,7 +78,7 @@
<tc:in id="in1" label="Inner Value 1" value="#{formAjaxController.innerValue1}"/>
<tc:out id="out1" label="Inner Value 1 in Model" value="#{formAjaxController.innerValue1}"/>
<tc:button id="submit1" label="Submit">
- <f:ajax execute="in1" render="out1 :page:messages"/>
+ <f:ajax execute="in1" render="in1 out1 :page:messages"/>
</tc:button>
</tc:form>
</tc:box>
@@ -88,7 +88,7 @@
value="#{formAjaxController.innerValue2}"/>
<tc:out id="out2" label="Inner Value 2 in Model" value="#{formAjaxController.innerValue2}"/>
<tc:button id="submit2" label="Submit">
- <f:ajax execute="in2" render="out2 :page:messages"/>
+ <f:ajax execute="in2" render="in2 out2 :page:messages"/>
</tc:button>
</tc:form>
</tc:box>
@@ -97,7 +97,7 @@
<tc:out id="out" label="Outer Value in Model" value="#{formAjaxController.outerValue}"/>
<tc:button id="submit" label="Submit">
<f:ajax execute="::form1:in1 ::form2:in2 in"
- render="::form1:out1 ::form2:out2 out :page:messages"/>
+ render="::form1:in1 ::form2:in2 in ::form1:out1 ::form2:out2 out :page:messages"/>
</tc:button>
<tc:separator/>
@@ -105,10 +105,10 @@
<tc:buttons>
<tc:button id="submitInnerForms" label="Inner Forms">
<f:ajax execute="::form1:in1 ::form2:in2"
- render="::form1:out1 ::form2:out2 :page:messages"/>
+ render="::form1:in1 ::form2:in2 ::form1:out1 ::form2:out2 :page:messages"/>
</tc:button>
<tc:button id="submitOuterValue" label="Outer Value">
- <f:ajax execute="in" render="out :page:messages"/>
+ <f:ajax execute="in" render="in out :page:messages"/>
</tc:button>
</tc:buttons>
</tc:form>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/error/error.test.js b/tobago-example/tobago-example-demo/src/main/webapp/error/error.test.js
index 772fe1d..9e4fea7 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/error/error.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/error/error.test.js
@@ -19,17 +19,19 @@
import {JasmineTestTool} from "/tobago/test/tobago-test-tool.js";
it("has no exception", function (done) {
- const error = querySelectorFn("#page\\:mainForm\\:errorSection .tobago-section-header span");
+ let errorFn = querySelectorFn("#page\\:mainForm\\:errorSection .tobago-header span");
const test = new JasmineTestTool(done);
- test.do(() => expect(error.textContent).not.toEqual("An error has occurred!"));
+ test.do(() => expect(errorFn() === null
+ || errorFn().textContent).not.toEqual("An error has occurred!"));
test.start();
});
it("has no 404", function (done) {
- const error404 = querySelectorFn("#page\\:mainForm\\:pageNotFoundMessage span");
+ let error404Fn = querySelectorFn("#page\\:mainForm\\:pageNotFoundMessage tobago-out");
const test = new JasmineTestTool(done);
- test.do(() => expect(error404.textContent).not.toEqual("The page was not found!"));
+ test.do(() => expect(error404Fn() === null
+ || error404Fn().textContent.indexOf("The page was not found!") === -1).toBeTrue());
test.start();
});