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 2023/06/01 15:13:23 UTC
[myfaces-tobago] branch main updated: test: event
This is an automated email from the ASF dual-hosted git repository.
hnoeth pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces-tobago.git
The following commit(s) were added to refs/heads/main by this push:
new 16b7ed49d0 test: event
16b7ed49d0 is described below
commit 16b7ed49d02af34059bfc2ca4f42153e13da61ce
Author: Henning Noeth <hn...@apache.org>
AuthorDate: Wed May 24 09:20:59 2023 +0200
test: event
* increase jasmine DEFAULT_TIMEOUT_INTERVAL to 5 minutes to fix event.test.js on jetty
* add a column for input event
* add selectOneList and selectManyList to list
* add a test for textarea input event
* add test for selectOneListbox
---
.../tobago/example/demo/EventController.java | 9 ++++++
.../content/900-test/6000-event/Event.test.js | 27 +++++++++++++----
.../webapp/content/900-test/6000-event/Event.xhtml | 8 +++++
.../6000-event/x-event-selectOneListbox.xhtml | 34 +++++++++++++++++++++-
.../900-test/6000-event/x-event-textarea.xhtml | 4 +++
.../src/main/webapp/script/tobago-test.js | 1 +
6 files changed, 77 insertions(+), 6 deletions(-)
diff --git a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java
index 88727bb74c..686e651042 100644
--- a/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java
+++ b/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/EventController.java
@@ -54,9 +54,11 @@ import org.apache.myfaces.tobago.component.UISection;
import org.apache.myfaces.tobago.component.UISegmentLayout;
import org.apache.myfaces.tobago.component.UISelectBooleanCheckbox;
import org.apache.myfaces.tobago.component.UISelectManyCheckbox;
+import org.apache.myfaces.tobago.component.UISelectManyList;
import org.apache.myfaces.tobago.component.UISelectManyListbox;
import org.apache.myfaces.tobago.component.UISelectManyShuttle;
import org.apache.myfaces.tobago.component.UISelectOneChoice;
+import org.apache.myfaces.tobago.component.UISelectOneList;
import org.apache.myfaces.tobago.component.UISelectOneListbox;
import org.apache.myfaces.tobago.component.UISelectOneRadio;
import org.apache.myfaces.tobago.component.UISeparator;
@@ -139,9 +141,11 @@ public class EventController implements Serializable {
eventsOnComponents.add(new EventsOnComponent(new UISelectBooleanCheckbox()));
eventsOnComponents.add(new EventsOnComponent(new UISelectManyCheckbox()));
eventsOnComponents.add(new EventsOnComponent(new UISelectManyListbox()));
+ eventsOnComponents.add(new EventsOnComponent(new UISelectManyList()));
eventsOnComponents.add(new EventsOnComponent(new UISelectManyShuttle()));
eventsOnComponents.add(new EventsOnComponent(new UISelectOneChoice()));
eventsOnComponents.add(new EventsOnComponent(new UISelectOneListbox()));
+ eventsOnComponents.add(new EventsOnComponent(new UISelectOneList()));
eventsOnComponents.add(new EventsOnComponent(new UISelectOneRadio()));
eventsOnComponents.add(new EventsOnComponent(new UISeparator()));
eventsOnComponents.add(new EventsOnComponent(new UISheet()));
@@ -267,6 +271,10 @@ public class EventController implements Serializable {
return eventNames.contains(CommonEvent.focus.name());
}
+ public boolean hasInputEvent() {
+ return eventNames.contains(CommonEvent.input.name());
+ }
+
public boolean hasKeydownEvent() {
return eventNames.contains(CommonEvent.keydown.name());
}
@@ -342,6 +350,7 @@ public class EventController implements Serializable {
change,
click, dblclick,
focus, blur,
+ input,
keydown, keypress, keyup,
mousedown, mousemove, mouseout, mouseover, mouseup,
select
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.test.js b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.test.js
index 73468c8b2b..8bd1a4ecc3 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.test.js
@@ -71,8 +71,26 @@ it("tc:selectBooleanCheckbox", function (done) {
test.start();
});
-it("tc:textarea", function (done) {
+it("tc:selectOneListbox", function (done) {
const eventNames = ["change", "click", "dblclick", "focus", "blur"];
+ const eventComponentFn = elementByIdFn("page:mainForm:selectOneListboxevent::field");
+ const ajaxComponentFn = elementByIdFn("page:mainForm:selectOneListboxajax::field");
+
+ const changeValueFn = function (componentFn) {
+ if (componentFn().querySelectorAll("option")[0].selected) {
+ componentFn().querySelectorAll("option")[1].selected = true;
+ } else {
+ componentFn().querySelectorAll("option")[0].selected = true;
+ }
+ };
+
+ const test = new JasmineTestTool(done);
+ createSteps(test, "selectOneListbox", eventNames, eventComponentFn, ajaxComponentFn, changeValueFn);
+ test.start();
+});
+
+it("tc:textarea", function (done) {
+ const eventNames = ["change", "click", "dblclick", "focus", "blur", "input"];
const eventComponentFn = elementByIdFn("page:mainForm:textareaevent::field");
const ajaxComponentFn = elementByIdFn("page:mainForm:textareaajax::field");
@@ -108,10 +126,9 @@ function createSteps(test, componentName, eventNames, eventComponentFn, ajaxComp
const eventName = eventNames[i];
let rowIdPrefix;
- const tobagoSheetRow = rows();
- Array.prototype.forEach.call(tobagoSheetRow, (element, i) => {
- const tobagoOut = element.querySelector("tobago-out");
- if (tobagoOut.querySelector(".form-control-plaintext").textContent === componentName) {
+ rows().forEach((row) => {
+ const tobagoOut = row.querySelector("tobago-out");
+ if (row.querySelector("tobago-out .form-control-plaintext").textContent === componentName) {
rowIdPrefix = tobagoOut.id.slice(0, tobagoOut.id.lastIndexOf(":"));
}
});
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.xhtml
index 5a18758237..396f0139d9 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/Event.xhtml
@@ -103,6 +103,14 @@
<tc:out value="-" labelLayout="skip" rendered="#{!comp.hasBlurEvent()}"/>
<tc:style customClass="#{comp.hasBlurEvent() ? 'demo-lightgreen' : 'demo-lightred'}"/>
</tc:column>
+ <tc:column label="input" align="center">
+ <tc:button id="inputBehavior" label="X"
+ actionListener="#{eventController.selectComponent}" rendered="#{comp.hasInputEvent()}">
+ <f:attribute name="eventName" value="input"/>
+ </tc:button>
+ <tc:out value="-" labelLayout="skip" rendered="#{!comp.hasInputEvent()}"/>
+ <tc:style customClass="#{comp.hasInputEvent() ? 'demo-lightgreen' : 'demo-lightred'}"/>
+ </tc:column>
<tc:column label="key down" align="center">
<tc:button id="keydownBehavior" label="X"
actionListener="#{eventController.selectComponent}" rendered="#{comp.hasKeydownEvent()}">
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-selectOneListbox.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-selectOneListbox.xhtml
index 63526e227d..7e99e9827b 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-selectOneListbox.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-selectOneListbox.xhtml
@@ -18,6 +18,38 @@
-->
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:c="http://xmlns.jcp.org/jsp/jstl/core"
+ xmlns:f="http://xmlns.jcp.org/jsf/core"
+ xmlns:tc="http://myfaces.apache.org/tobago/component"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
- <p>Not implemented yet!</p>
+ <tc:selectOneListbox id="selectOneListbox#{eventType}" valueChangeListener="#{eventController.valueChangeListener}">
+ <tc:selectItem itemValue="alpha" itemLabel="Alpha"/>
+ <tc:selectItem itemValue="beta" itemLabel="Beta"/>
+ <tc:selectItem itemValue="gamma" itemLabel="Gamma"/>
+ <tc:selectItem itemValue="delta" itemLabel="Delta"/>
+ <c:if test="#{eventType == 'ajax'}">
+ <f:ajax event="change" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'change'}"/>
+ <f:ajax event="click" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'click'}"/>
+ <f:ajax event="dblclick" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'dblclick'}"/>
+ <f:ajax event="focus" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'focus'}"/>
+ <f:ajax event="blur" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'blur'}"/>
+ </c:if>
+ <c:if test="#{eventType == 'event'}">
+ <tc:event event="change" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'change'}"/>
+ <tc:event event="click" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'click'}"/>
+ <tc:event event="dblclick" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'dblclick'}"/>
+ <tc:event event="focus" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'focus'}"/>
+ <tc:event event="blur" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'blur'}"/>
+ </c:if>
+ </tc:selectOneListbox>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-textarea.xhtml b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-textarea.xhtml
index 4153863bdd..8531f4f0f1 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-textarea.xhtml
+++ b/tobago-example/tobago-example-demo/src/main/webapp/content/900-test/6000-event/x-event-textarea.xhtml
@@ -34,6 +34,8 @@
disabled="#{eventName != 'focus'}"/>
<f:ajax event="blur" render="metrics" listener="#{eventController.ajaxListener}"
disabled="#{eventName != 'blur'}"/>
+ <f:ajax event="input" render="metrics" listener="#{eventController.ajaxListener}"
+ disabled="#{eventName != 'input'}"/>
</c:if>
<c:if test="#{eventType == 'event'}">
<tc:event event="change" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
@@ -46,6 +48,8 @@
rendered="#{eventName == 'focus'}"/>
<tc:event event="blur" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
rendered="#{eventName == 'blur'}"/>
+ <tc:event event="input" action="#{eventController.action}" actionListener="#{eventController.actionListener}"
+ rendered="#{eventName == 'input'}"/>
</c:if>
</tc:textarea>
</ui:composition>
diff --git a/tobago-example/tobago-example-demo/src/main/webapp/script/tobago-test.js b/tobago-example/tobago-example-demo/src/main/webapp/script/tobago-test.js
index 761cda8aac..e4a70b6237 100644
--- a/tobago-example/tobago-example-demo/src/main/webapp/script/tobago-test.js
+++ b/tobago-example/tobago-example-demo/src/main/webapp/script/tobago-test.js
@@ -59,6 +59,7 @@ function activeElementFn() {
export {elementByIdFn, querySelectorFn, querySelectorAllFn, activeElementFn};
beforeEach(function (done) {
+ jasmine.DEFAULT_TIMEOUT_INTERVAL = 5 * 60 * 1000; //5 minutes
const test = new JasmineTestTool(done);
test.wait(() => document.getElementById("page:testframe").contentWindow.document.readyState === "complete");
test.do(() => expect("waiting for testframe is done").toBe("waiting for testframe is done"));