From 3aeed5d767a8cc18c93afc3b84d153f74e374f37 Mon Sep 17 00:00:00 2001 From: Bauke Scholtz Date: Sun, 3 Mar 2024 13:47:08 -0400 Subject: [PATCH 1/2] add a couple of new tests for Faces 4.1 --- tck/faces41/facesMessage/pom.xml | 36 +++++ .../faces41/facesMessage/Deployments.java | 38 +++++ .../faces41/facesMessage/Spec1823IT.java | 109 ++++++++++++++ tck/faces41/headAndBodyRenderer/pom.xml | 36 +++++ .../src/main/webapp/WEB-INF/beans.xml | 24 ++++ .../src/main/webapp/WEB-INF/faces-config.xml | 34 +++++ .../src/main/webapp/WEB-INF/web.xml | 49 +++++++ .../main/webapp/spec1760withIDdefault.xhtml | 26 ++++ .../webapp/spec1760withIDxhtml.xhtmlAsXhtml | 26 ++++ .../main/webapp/spec1760withIDxml.xhtmlAsXml | 26 ++++ .../webapp/spec1760withoutIDdefault.xhtml | 26 ++++ .../spec1760withoutIDxhtml.xhtmlAsXhtml | 26 ++++ .../webapp/spec1760withoutIDxml.xhtmlAsXml | 26 ++++ .../headAndBodyRenderer/Deployments.java | 38 +++++ .../headAndBodyRenderer/Spec1760IT.java | 114 +++++++++++++++ tck/faces41/pom.xml | 48 +++++++ tck/faces41/uiRepeat/pom.xml | 36 +++++ .../tck/faces/faces41/uiRepeat/Spec1263.java | 74 ++++++++++ .../src/main/webapp/WEB-INF/beans.xml | 24 ++++ .../src/main/webapp/WEB-INF/faces-config.xml | 24 ++++ .../uiRepeat/src/main/webapp/WEB-INF/web.xml | 46 ++++++ .../uiRepeat/src/main/webapp/spec1263.xhtml | 34 +++++ .../faces/faces41/uiRepeat/Deployments.java | 38 +++++ .../faces/faces41/uiRepeat/Spec1263IT.java | 51 +++++++ tck/faces41/uuidConverter/pom.xml | 36 +++++ .../faces/faces41/uuidConverter/Spec1819.java | 36 +++++ .../src/main/webapp/WEB-INF/beans.xml | 24 ++++ .../src/main/webapp/WEB-INF/faces-config.xml | 24 ++++ .../src/main/webapp/WEB-INF/web.xml | 46 ++++++ .../webapp/spec1819explicitConversion.xhtml | 31 ++++ .../webapp/spec1819implicitConversion.xhtml | 31 ++++ .../faces41/uuidConverter/Deployments.java | 38 +++++ .../faces41/uuidConverter/Spec1819IT.java | 134 ++++++++++++++++++ tck/pom.xml | 1 + 34 files changed, 1410 insertions(+) create mode 100644 tck/faces41/facesMessage/pom.xml create mode 100644 tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Deployments.java create mode 100644 tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Spec1823IT.java create mode 100644 tck/faces41/headAndBodyRenderer/pom.xml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/beans.xml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDdefault.xhtml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxhtml.xhtmlAsXhtml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxml.xhtmlAsXml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDdefault.xhtml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxhtml.xhtmlAsXhtml create mode 100644 tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxml.xhtmlAsXml create mode 100644 tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Deployments.java create mode 100644 tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java create mode 100755 tck/faces41/pom.xml create mode 100644 tck/faces41/uiRepeat/pom.xml create mode 100644 tck/faces41/uiRepeat/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263.java create mode 100644 tck/faces41/uiRepeat/src/main/webapp/WEB-INF/beans.xml create mode 100644 tck/faces41/uiRepeat/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 tck/faces41/uiRepeat/src/main/webapp/WEB-INF/web.xml create mode 100644 tck/faces41/uiRepeat/src/main/webapp/spec1263.xhtml create mode 100644 tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Deployments.java create mode 100644 tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263IT.java create mode 100644 tck/faces41/uuidConverter/pom.xml create mode 100644 tck/faces41/uuidConverter/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819.java create mode 100644 tck/faces41/uuidConverter/src/main/webapp/WEB-INF/beans.xml create mode 100644 tck/faces41/uuidConverter/src/main/webapp/WEB-INF/faces-config.xml create mode 100644 tck/faces41/uuidConverter/src/main/webapp/WEB-INF/web.xml create mode 100644 tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml create mode 100644 tck/faces41/uuidConverter/src/main/webapp/spec1819implicitConversion.xhtml create mode 100644 tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Deployments.java create mode 100644 tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java diff --git a/tck/faces41/facesMessage/pom.xml b/tck/faces41/facesMessage/pom.xml new file mode 100644 index 0000000000..7aa95149bd --- /dev/null +++ b/tck/faces41/facesMessage/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + org.eclipse.ee4j.tck.faces.faces41 + pom + 4.1.0-SNAPSHOT + + + facesMessage + war + + Jakarta Faces TCK ${project.version} - Test - Faces 4.1 - facesMessage + + + test-faces41-facesMessage + + diff --git a/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Deployments.java b/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Deployments.java new file mode 100644 index 0000000000..ab7aaffa9e --- /dev/null +++ b/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Deployments.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.facesMessage; + +import org.eu.ingwar.tools.arquillian.extension.suite.annotations.ArquillianSuiteDeployment; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.shrinkwrap.api.spec.WebArchive; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; + +/** + * Given Arquilian has no single deployment testsuite + * mechanism we have to rely on a third party library. + * This improves the performance in a major area, namely + * we are only deploying once and then run all tests + * on the same deployment (cuts down by 95% the test time) + */ +@ArquillianSuiteDeployment +public class Deployments { + @Deployment(testable = false) + public static WebArchive createDeployment() { + return BaseITNG.createDeployment(); + } +} + diff --git a/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Spec1823IT.java b/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Spec1823IT.java new file mode 100644 index 0000000000..e3607dca95 --- /dev/null +++ b/tck/faces41/facesMessage/src/test/java/org/eclipse/ee4j/tck/faces/faces41/facesMessage/Spec1823IT.java @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.facesMessage; + +import static jakarta.faces.application.FacesMessage.SEVERITY_INFO; +import static jakarta.faces.application.FacesMessage.SEVERITY_WARN; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import jakarta.faces.application.FacesMessage; + +import org.junit.Test; + +public class Spec1823IT { + + private static final FacesMessage MESSAGE1A = new FacesMessage(SEVERITY_INFO, "summary1", "detail1"); + private static final FacesMessage MESSAGE1B = new FacesMessage(SEVERITY_INFO, "summary1", "detail1"); + private static final FacesMessage MESSAGE2A = new FacesMessage(SEVERITY_INFO, "summary1", "detail2"); + private static final FacesMessage MESSAGE2B = new FacesMessage(SEVERITY_INFO, "summary1", "detail2"); + private static final FacesMessage MESSAGE3A = new FacesMessage(SEVERITY_INFO, "summary2", "detail1"); + private static final FacesMessage MESSAGE3B = new FacesMessage(SEVERITY_INFO, "summary2", "detail1"); + private static final FacesMessage MESSAGE4A = new FacesMessage(SEVERITY_INFO, "summary2", "detail2"); + private static final FacesMessage MESSAGE4B = new FacesMessage(SEVERITY_INFO, "summary2", "detail2"); + private static final FacesMessage MESSAGE5A = new FacesMessage(SEVERITY_WARN, "summary1", "detail1"); + private static final FacesMessage MESSAGE5B = new FacesMessage(SEVERITY_WARN, "summary1", "detail1"); + private static final FacesMessage MESSAGE6A = new FacesMessage(SEVERITY_WARN, "summary1", "detail2"); + private static final FacesMessage MESSAGE6B = new FacesMessage(SEVERITY_WARN, "summary1", "detail2"); + private static final FacesMessage MESSAGE7A = new FacesMessage(SEVERITY_WARN, "summary2", "detail1"); + private static final FacesMessage MESSAGE7B = new FacesMessage(SEVERITY_WARN, "summary2", "detail1"); + private static final FacesMessage MESSAGE8A = new FacesMessage(SEVERITY_WARN, "summary2", "detail2"); + private static final FacesMessage MESSAGE8B = new FacesMessage(SEVERITY_WARN, "summary2", "detail2"); + + public static class CustomFacesMessage extends FacesMessage { + private static final long serialVersionUID = 1L; + + public CustomFacesMessage(Severity severity, String summary, String detail) { + super(severity, summary, detail); + } + } + + /** + * @see FacesMessage + * @see https://github.com/jakartaee/faces/issues/1823 + */ + @Test + public void testEquals() { + assertEquals(MESSAGE1A, MESSAGE1A); + assertEquals(MESSAGE1A, MESSAGE1B); + assertNotEquals(MESSAGE1A, MESSAGE2A); + assertNotEquals(MESSAGE1A, MESSAGE2B); + assertNotEquals(MESSAGE1A, MESSAGE3A); + assertNotEquals(MESSAGE1A, MESSAGE3B); + assertNotEquals(MESSAGE1A, MESSAGE4A); + assertNotEquals(MESSAGE1A, MESSAGE4B); + assertNotEquals(MESSAGE1A, MESSAGE5A); + assertNotEquals(MESSAGE1A, MESSAGE5B); + assertNotEquals(MESSAGE1A, MESSAGE6A); + assertNotEquals(MESSAGE1A, MESSAGE6B); + assertNotEquals(MESSAGE1A, MESSAGE7A); + assertNotEquals(MESSAGE1A, MESSAGE7B); + assertNotEquals(MESSAGE1A, MESSAGE8A); + assertNotEquals(MESSAGE1A, MESSAGE8B); + assertEquals(MESSAGE1A, new FacesMessage(SEVERITY_INFO, "summary1", "detail1")); + assertNotEquals(MESSAGE1A, new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1")); + assertEquals(new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1"), new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1")); + assertNotEquals(new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1"), new CustomFacesMessage(SEVERITY_WARN, "summary1", "detail1")); + } + + /** + * @see FacesMessage + * @see https://github.com/jakartaee/faces/issues/1823 + */ + @Test + public void testHashCode() { + assertEquals(MESSAGE1A.hashCode(), MESSAGE1A.hashCode()); + assertEquals(MESSAGE1A.hashCode(), MESSAGE1B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE2A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE2B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE3A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE3B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE4A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE4B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE5A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE5B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE6A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE6B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE7A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE7B.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE8A.hashCode()); + assertNotEquals(MESSAGE1A.hashCode(), MESSAGE8B.hashCode()); + assertEquals(MESSAGE1A.hashCode(), new FacesMessage(SEVERITY_INFO, "summary1", "detail1").hashCode()); + assertNotEquals(MESSAGE1A, new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1").hashCode()); + assertEquals(new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1").hashCode(), new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1").hashCode()); + assertNotEquals(new CustomFacesMessage(SEVERITY_INFO, "summary1", "detail1").hashCode(), new CustomFacesMessage(SEVERITY_WARN, "summary1", "detail1").hashCode()); + } +} diff --git a/tck/faces41/headAndBodyRenderer/pom.xml b/tck/faces41/headAndBodyRenderer/pom.xml new file mode 100644 index 0000000000..3141e4b88b --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + org.eclipse.ee4j.tck.faces.faces41 + pom + 4.1.0-SNAPSHOT + + + headAndBodyRenderer + war + + Jakarta Faces TCK ${project.version} - Test - Faces 4.1 - headAndBodyRenderer + + + test-faces41-headAndBodyRenderer + + diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/beans.xml b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000000..68d62ccb17 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,24 @@ + + + + diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/faces-config.xml b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..8a510fba96 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,34 @@ + + + + + + .xhtmlAsXml + xml + + + .xhtmlAsXhtml + xhtml + + + diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..830eb81511 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,49 @@ + + + + + jakarta.faces.PROJECT_STAGE + ${webapp.projectStage} + + + jakarta.faces.STATE_SAVING_METHOD + ${webapp.stateSavingMethod} + + + jakarta.faces.SERIALIZE_SERVER_STATE + ${webapp.serializeServerState} + + + + facesServlet + jakarta.faces.webapp.FacesServlet + + + facesServlet + *.xhtml + *.xhtmlAsHtml5 + *.xhtmlAsXhtml + *.xhtmlAsXml + + diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDdefault.xhtml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDdefault.xhtml new file mode 100644 index 0000000000..6f13f53d1d --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDdefault.xhtml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body with ID while using default HTML5 output processing + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxhtml.xhtmlAsXhtml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxhtml.xhtmlAsXhtml new file mode 100644 index 0000000000..d42e92a2af --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxhtml.xhtmlAsXhtml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body with ID while explicitly output as XHTML + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxml.xhtmlAsXml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxml.xhtmlAsXml new file mode 100644 index 0000000000..f975964774 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withIDxml.xhtmlAsXml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body with ID while explicitly output as XML + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDdefault.xhtml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDdefault.xhtml new file mode 100644 index 0000000000..1370ffab75 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDdefault.xhtml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body without ID while using default HTML5 output processing + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxhtml.xhtmlAsXhtml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxhtml.xhtmlAsXhtml new file mode 100644 index 0000000000..5212f12523 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxhtml.xhtmlAsXhtml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body without ID while explicitly output as XHTML + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxml.xhtmlAsXml b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxml.xhtmlAsXml new file mode 100644 index 0000000000..03ca4a82be --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/spec1760withoutIDxml.xhtmlAsXml @@ -0,0 +1,26 @@ + + + + + Spec1760: h:head and h:body without ID while explicitly output as XML + + +

TEST

+
+ diff --git a/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Deployments.java b/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Deployments.java new file mode 100644 index 0000000000..6313178b0b --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Deployments.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.headAndBodyRenderer; + +import org.eu.ingwar.tools.arquillian.extension.suite.annotations.ArquillianSuiteDeployment; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.shrinkwrap.api.spec.WebArchive; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; + +/** + * Given Arquilian has no single deployment testsuite + * mechanism we have to rely on a third party library. + * This improves the performance in a major area, namely + * we are only deploying once and then run all tests + * on the same deployment (cuts down by 95% the test time) + */ +@ArquillianSuiteDeployment +public class Deployments { + @Deployment(testable = false) + public static WebArchive createDeployment() { + return BaseITNG.createDeployment(); + } +} + diff --git a/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java b/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java new file mode 100644 index 0000000000..4e847593f9 --- /dev/null +++ b/tck/faces41/headAndBodyRenderer/src/test/java/org/eclipse/ee4j/tck/faces/faces41/headAndBodyRenderer/Spec1760IT.java @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.headAndBodyRenderer; + +import static org.junit.Assert.assertEquals; + +import jakarta.faces.render.RenderKit; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; +import ee.jakarta.tck.faces.test.util.selenium.WebPage; + +public class Spec1760IT extends BaseITNG { + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testDefaultOutputWithID() { + WebPage page = getPage("spec1760withIDdefault.xhtml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("headId", head.getAttribute("id")); + assertEquals("bodyId", body.getAttribute("id")); + } + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testDefaultOutputWithoutID() { + WebPage page = getPage("spec1760withoutIDdefault.xhtml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("", head.getAttribute("id")); + assertEquals("", body.getAttribute("id")); + } + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testXhtmlOutputWithID() { + WebPage page = getPage("spec1760withIDxhtml.xhtmlAsXhtml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("", head.getAttribute("id")); + assertEquals("", body.getAttribute("id")); + } + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testXhtmlOutputWithoutID() { + WebPage page = getPage("spec1760withoutIDxhtml.xhtmlAsXhtml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("", head.getAttribute("id")); + assertEquals("", body.getAttribute("id")); + } + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testXmlOutputWithID() { + WebPage page = getPage("spec1760withIDxml.xhtmlAsXml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("", head.getAttribute("id")); + assertEquals("", body.getAttribute("id")); + } + + /** + * @see RenderKit + * @see https://github.com/jakartaee/faces/issues/1760 + * @see https://github.com/jakartaee/faces/issues/1100 + */ + @Test + public void testXmlOutputWithoutID() { + WebPage page = getPage("spec1760withoutIDxml.xhtmlAsXml"); + WebElement head = page.findElement(By.tagName("head")); + WebElement body = page.findElement(By.tagName("body")); + assertEquals("", head.getAttribute("id")); + assertEquals("", body.getAttribute("id")); + } +} diff --git a/tck/faces41/pom.xml b/tck/faces41/pom.xml new file mode 100755 index 0000000000..06269966d1 --- /dev/null +++ b/tck/faces41/pom.xml @@ -0,0 +1,48 @@ + + + + 4.0.0 + + + org.eclipse.ee4j.faces.tck + jakarta-faces-tck + 4.1.0-SNAPSHOT + + + org.eclipse.ee4j.tck.faces.faces41 + pom + pom + + Jakarta Faces TCK ${project.version} - Test - Faces 4.1 + + + facesMessage + headAndBodyRenderer + uiRepeat + uuidConverter + + + + + org.eclipse.ee4j.tck.faces.test + util + ${project.version} + + + diff --git a/tck/faces41/uiRepeat/pom.xml b/tck/faces41/uiRepeat/pom.xml new file mode 100644 index 0000000000..f350cdf399 --- /dev/null +++ b/tck/faces41/uiRepeat/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + org.eclipse.ee4j.tck.faces.faces41 + pom + 4.1.0-SNAPSHOT + + + uiRepeat + war + + Jakarta Faces TCK ${project.version} - Test - Faces 4.1 - uiRepeat + + + test-faces41-uiRepeat + + diff --git a/tck/faces41/uiRepeat/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263.java b/tck/faces41/uiRepeat/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263.java new file mode 100644 index 0000000000..237470dab4 --- /dev/null +++ b/tck/faces41/uiRepeat/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uiRepeat; + +import java.io.Serializable; +import java.util.Arrays; + +import jakarta.annotation.PostConstruct; +import jakarta.faces.view.ViewScoped; +import jakarta.inject.Named; + +@Named +@ViewScoped +public class Spec1263 implements Serializable { + + private static final long serialVersionUID = 1L; + + private Cell[][] matrix = new Cell[2][2]; + private String output; + + @PostConstruct + public void init() { + for (int x = 0; x < matrix.length; x++) { + for (int y = 0; y < matrix[x].length; y++) { + matrix[x][y] = new Cell(); + } + } + } + + public void submit() { + output = Arrays.deepToString(matrix); + } + + public Cell[][] getMatrix() { + return matrix; + } + + public String getOutput() { + return output; + } + + public static class Cell implements Serializable { + + private static final long serialVersionUID = 1L; + + private String value; + + public String getValue() { + return this.value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return value; + } + } +} diff --git a/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/beans.xml b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000000..68d62ccb17 --- /dev/null +++ b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,24 @@ + + + + diff --git a/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/faces-config.xml b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..0b08b962ad --- /dev/null +++ b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,24 @@ + + + + diff --git a/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/web.xml b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..dc208d8a1a --- /dev/null +++ b/tck/faces41/uiRepeat/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,46 @@ + + + + + jakarta.faces.PROJECT_STAGE + ${webapp.projectStage} + + + jakarta.faces.STATE_SAVING_METHOD + ${webapp.stateSavingMethod} + + + jakarta.faces.SERIALIZE_SERVER_STATE + ${webapp.serializeServerState} + + + + facesServlet + jakarta.faces.webapp.FacesServlet + + + facesServlet + *.xhtml + + diff --git a/tck/faces41/uiRepeat/src/main/webapp/spec1263.xhtml b/tck/faces41/uiRepeat/src/main/webapp/spec1263.xhtml new file mode 100644 index 0000000000..7fa78bcc23 --- /dev/null +++ b/tck/faces41/uiRepeat/src/main/webapp/spec1263.xhtml @@ -0,0 +1,34 @@ + + + + + Spec1263: ui:repeat row state preserving + + + + + + + + + + + + + diff --git a/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Deployments.java b/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Deployments.java new file mode 100644 index 0000000000..9ca0888820 --- /dev/null +++ b/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Deployments.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uiRepeat; + +import org.eu.ingwar.tools.arquillian.extension.suite.annotations.ArquillianSuiteDeployment; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.shrinkwrap.api.spec.WebArchive; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; + +/** + * Given Arquilian has no single deployment testsuite + * mechanism we have to rely on a third party library. + * This improves the performance in a major area, namely + * we are only deploying once and then run all tests + * on the same deployment (cuts down by 95% the test time) + */ +@ArquillianSuiteDeployment +public class Deployments { + @Deployment(testable = false) + public static WebArchive createDeployment() { + return BaseITNG.createDeployment(); + } +} + diff --git a/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263IT.java b/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263IT.java new file mode 100644 index 0000000000..60448b482d --- /dev/null +++ b/tck/faces41/uiRepeat/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uiRepeat/Spec1263IT.java @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uiRepeat; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.openqa.selenium.By; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; +import ee.jakarta.tck.faces.test.util.selenium.WebPage; + +public class Spec1263IT extends BaseITNG { + + /** + * @see UIRepeat + * @see https://github.com/jakartaee/faces/issues/1263 + */ + @Test + public void testUiRepeatRowStatePreserved() { + WebPage page = getPage("spec1263.xhtml"); + page.findElement(By.id("row:0:cell:0:form:input")).sendKeys("00"); + page.findElement(By.id("row:0:cell:0:form:submit")).click(); + assertEquals("[[00, null], [null, null]]", page.findElement(By.id("output")).getText()); + + page.findElement(By.id("row:0:cell:1:form:input")).sendKeys("01"); + page.findElement(By.id("row:0:cell:1:form:submit")).click(); + assertEquals("[[00, 01], [null, null]]", page.findElement(By.id("output")).getText()); + + page.findElement(By.id("row:1:cell:0:form:input")).sendKeys("10"); + page.findElement(By.id("row:1:cell:0:form:submit")).click(); + assertEquals("[[00, 01], [10, null]]", page.findElement(By.id("output")).getText()); + + page.findElement(By.id("row:1:cell:1:form:input")).sendKeys("11"); + page.findElement(By.id("row:1:cell:1:form:submit")).click(); + assertEquals("[[00, 01], [10, 11]]", page.findElement(By.id("output")).getText()); + } +} diff --git a/tck/faces41/uuidConverter/pom.xml b/tck/faces41/uuidConverter/pom.xml new file mode 100644 index 0000000000..faf14a0f03 --- /dev/null +++ b/tck/faces41/uuidConverter/pom.xml @@ -0,0 +1,36 @@ + + + + 4.0.0 + + + org.eclipse.ee4j.tck.faces.faces41 + pom + 4.1.0-SNAPSHOT + + + uuidConverter + war + + Jakarta Faces TCK ${project.version} - Test - Faces 4.1 - uuidConverter + + + test-faces41-uuidConverter + + diff --git a/tck/faces41/uuidConverter/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819.java b/tck/faces41/uuidConverter/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819.java new file mode 100644 index 0000000000..246cca21fa --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uuidConverter; + +import java.util.UUID; + +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Named; + +@Named +@RequestScoped +public class Spec1819 { + + private UUID uuid; + + public UUID getUuid() { + return uuid; + } + + public void setUuid(UUID uuid) { + this.uuid = uuid; + } +} diff --git a/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/beans.xml b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/beans.xml new file mode 100644 index 0000000000..68d62ccb17 --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/beans.xml @@ -0,0 +1,24 @@ + + + + diff --git a/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/faces-config.xml b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/faces-config.xml new file mode 100644 index 0000000000..0b08b962ad --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/faces-config.xml @@ -0,0 +1,24 @@ + + + + diff --git a/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/web.xml b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..dc208d8a1a --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,46 @@ + + + + + jakarta.faces.PROJECT_STAGE + ${webapp.projectStage} + + + jakarta.faces.STATE_SAVING_METHOD + ${webapp.stateSavingMethod} + + + jakarta.faces.SERIALIZE_SERVER_STATE + ${webapp.serializeServerState} + + + + facesServlet + jakarta.faces.webapp.FacesServlet + + + facesServlet + *.xhtml + + diff --git a/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml new file mode 100644 index 0000000000..e447ad3ddf --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml @@ -0,0 +1,31 @@ + + + + + Spec1819: explicit conversion + + + + + + + + + + diff --git a/tck/faces41/uuidConverter/src/main/webapp/spec1819implicitConversion.xhtml b/tck/faces41/uuidConverter/src/main/webapp/spec1819implicitConversion.xhtml new file mode 100644 index 0000000000..2e449ec2bc --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/spec1819implicitConversion.xhtml @@ -0,0 +1,31 @@ + + + + + Spec1819: implicit conversion + + + + + + + + + + diff --git a/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Deployments.java b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Deployments.java new file mode 100644 index 0000000000..bc248e8a3c --- /dev/null +++ b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Deployments.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uuidConverter; + +import org.eu.ingwar.tools.arquillian.extension.suite.annotations.ArquillianSuiteDeployment; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.shrinkwrap.api.spec.WebArchive; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; + +/** + * Given Arquilian has no single deployment testsuite + * mechanism we have to rely on a third party library. + * This improves the performance in a major area, namely + * we are only deploying once and then run all tests + * on the same deployment (cuts down by 95% the test time) + */ +@ArquillianSuiteDeployment +public class Deployments { + @Deployment(testable = false) + public static WebArchive createDeployment() { + return BaseITNG.createDeployment(); + } +} + diff --git a/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java new file mode 100644 index 0000000000..7006360f38 --- /dev/null +++ b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2024 Contributors to Eclipse Foundation. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ +package org.eclipse.ee4j.tck.faces.faces41.uuidConverter; + +import static org.junit.Assert.assertEquals; + +import jakarta.faces.convert.UUIDConverter; + +import org.junit.Test; +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import ee.jakarta.tck.faces.test.util.selenium.BaseITNG; +import ee.jakarta.tck.faces.test.util.selenium.WebPage; + +public class Spec1819IT extends BaseITNG { + + private static final String TEST_UUID = "cafebabe-0420-0069-dead-123456789012"; + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testValidImplicitUUID() { + WebPage page = getPage("spec1819implicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(TEST_UUID); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals(TEST_UUID, output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testInvalidImplicitUUID() { + WebPage page = getPage("spec1819implicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys("fubar"); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("form:input: 'fubar' must be a UUID.", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testEmptyImplicitUUID() { + WebPage page = getPage("spec1819implicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(""); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testValidExplicitUUID() { + WebPage page = getPage("spec1819explicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(TEST_UUID); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals(TEST_UUID, output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testInvalidExplicitUUID() { + WebPage page = getPage("spec1819explicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys("fubar"); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("form:input: 'fubar' must be a UUID.", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testEmptyExplicitUUID() { + WebPage page = getPage("spec1819explicitConversion.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(""); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } +} diff --git a/tck/pom.xml b/tck/pom.xml index ce4dabf4db..68ac0905d9 100755 --- a/tck/pom.xml +++ b/tck/pom.xml @@ -85,6 +85,7 @@ mvn clean install -pl :old-tck-run -Dglassfish.suspend faces22 faces23 faces40 + faces41 old-tck-selenium old-tck faces-signaturetest From fd82528f109733073e0594b01c530e0a95a1c1cf Mon Sep 17 00:00:00 2001 From: Bauke Scholtz Date: Sun, 3 Mar 2024 13:59:17 -0400 Subject: [PATCH 2/2] improvements after self-review --- .../src/main/webapp/WEB-INF/web.xml | 1 - ...c1819explicitConversionViaAttribute.xhtml} | 6 +- .../spec1819explicitConversionViaTag.xhtml | 35 +++++++++++ .../faces41/uuidConverter/Spec1819IT.java | 63 +++++++++++++++++-- 4 files changed, 95 insertions(+), 10 deletions(-) rename tck/faces41/uuidConverter/src/main/webapp/{spec1819explicitConversion.xhtml => spec1819explicitConversionViaAttribute.xhtml} (89%) create mode 100644 tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaTag.xhtml diff --git a/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml index 830eb81511..2c68bce4ec 100644 --- a/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml +++ b/tck/faces41/headAndBodyRenderer/src/main/webapp/WEB-INF/web.xml @@ -42,7 +42,6 @@ facesServlet *.xhtml - *.xhtmlAsHtml5 *.xhtmlAsXhtml *.xhtmlAsXml diff --git a/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaAttribute.xhtml similarity index 89% rename from tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml rename to tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaAttribute.xhtml index e447ad3ddf..45c6b54960 100644 --- a/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversion.xhtml +++ b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaAttribute.xhtml @@ -18,14 +18,14 @@ --> - Spec1819: explicit conversion + Spec1819: explicit conversion via attribute - + - + diff --git a/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaTag.xhtml b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaTag.xhtml new file mode 100644 index 0000000000..0d4135893a --- /dev/null +++ b/tck/faces41/uuidConverter/src/main/webapp/spec1819explicitConversionViaTag.xhtml @@ -0,0 +1,35 @@ + + + + + Spec1819: explicit conversion via tag + + + + + + + + + + + + + + diff --git a/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java index 7006360f38..2b5b33f9e4 100644 --- a/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java +++ b/tck/faces41/uuidConverter/src/test/java/org/eclipse/ee4j/tck/faces/faces41/uuidConverter/Spec1819IT.java @@ -86,8 +86,8 @@ public void testEmptyImplicitUUID() { * @see https://github.com/jakartaee/faces/issues/1819 */ @Test - public void testValidExplicitUUID() { - WebPage page = getPage("spec1819explicitConversion.xhtml"); + public void testValidExplicitUUIDviaAttribute() { + WebPage page = getPage("spec1819explicitConversionViaAttribute.xhtml"); WebElement input = page.findElement(By.id("form:input")); input.sendKeys(TEST_UUID); WebElement submit = page.findElement(By.id("form:submit")); @@ -103,8 +103,8 @@ public void testValidExplicitUUID() { * @see https://github.com/jakartaee/faces/issues/1819 */ @Test - public void testInvalidExplicitUUID() { - WebPage page = getPage("spec1819explicitConversion.xhtml"); + public void testInvalidExplicitUUIDviaAttribute() { + WebPage page = getPage("spec1819explicitConversionViaAttribute.xhtml"); WebElement input = page.findElement(By.id("form:input")); input.sendKeys("fubar"); WebElement submit = page.findElement(By.id("form:submit")); @@ -120,8 +120,59 @@ public void testInvalidExplicitUUID() { * @see https://github.com/jakartaee/faces/issues/1819 */ @Test - public void testEmptyExplicitUUID() { - WebPage page = getPage("spec1819explicitConversion.xhtml"); + public void testEmptyExplicitUUIDviaAttribute() { + WebPage page = getPage("spec1819explicitConversionViaAttribute.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(""); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testValidExplicitUUIDviaTag() { + WebPage page = getPage("spec1819explicitConversionViaTag.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys(TEST_UUID); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals(TEST_UUID, output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testInvalidExplicitUUIDviaTag() { + WebPage page = getPage("spec1819explicitConversionViaTag.xhtml"); + WebElement input = page.findElement(By.id("form:input")); + input.sendKeys("fubar"); + WebElement submit = page.findElement(By.id("form:submit")); + submit.click(); + WebElement messages = page.findElement(By.id("form:messages")); + assertEquals("form:input: 'fubar' must be a UUID.", messages.getText()); + WebElement output = page.findElement(By.id("form:output")); + assertEquals("", output.getText()); + } + + /** + * @see UUIDConverter + * @see https://github.com/jakartaee/faces/issues/1819 + */ + @Test + public void testEmptyExplicitUUIDviaTag() { + WebPage page = getPage("spec1819explicitConversionViaTag.xhtml"); WebElement input = page.findElement(By.id("form:input")); input.sendKeys(""); WebElement submit = page.findElement(By.id("form:submit"));