diff options
author | Artur Signell <artur@vaadin.com> | 2015-02-18 14:42:20 +0200 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2015-05-11 12:05:18 +0300 |
commit | cb9a01738a179a58d4d72bbffbc837f1445e3802 (patch) | |
tree | 0cfe901dcc1bfe786a68e659afd1882a8d54aec5 | |
parent | f3aa03f54824682816295b6c0aa29862a4469a3d (diff) | |
download | vaadin-framework-cb9a01738a179a58d4d72bbffbc837f1445e3802.tar.gz vaadin-framework-cb9a01738a179a58d4d72bbffbc837f1445e3802.zip |
Converted javascript tests to TB4 and added date tests (#16797, #16786)
Change-Id: I0ac58945d70676135d982f5b829b065b96b1ffa4
9 files changed, 173 insertions, 75 deletions
diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java index bd7522aab7..1e193fc3b4 100644 --- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java +++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.java @@ -36,7 +36,10 @@ import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.HasComponents; import com.vaadin.ui.JavaScriptFunction; + import elemental.json.JsonArray; +import elemental.json.JsonObject; +import elemental.json.JsonValue; public class BasicJavaScriptComponent extends AbstractTestUI { @@ -103,6 +106,31 @@ public class BasicJavaScriptComponent extends AbstractTestUI { } }); + addFunction("sendDifferentTypeOfData", new JavaScriptFunction() { + @Override + public void call(JsonArray arguments) { + for (int i = 0; i < arguments.length(); i++) { + JsonValue arg = arguments.get(i); + if (arg instanceof JsonObject) { + JsonObject o = (JsonObject) arg; + log.log("Argument[" + i + "] type: " + + arg.getClass().getName()); + for (String key : o.keys()) { + JsonValue v = o.get(key); + log.log("Argument[" + i + "][" + key + + "] type: " + v.getClass().getName() + + ", value: " + v.asString()); + + } + } else { + log.log("Argument[" + i + "] type: " + + arg.getClass().getName() + ", value: " + + arg.asString()); + } + } + } + }); + getRpcProxy(TestRpc.class).sendRpc("RPC message"); callFunction("messageToClient", "Callback message"); @@ -136,7 +164,7 @@ public class BasicJavaScriptComponent extends AbstractTestUI { } } - private final Log log = new Log(5); + private final Log log = new Log(15); @Override protected void setup(VaadinRequest request) { diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js index 004d34040e..183bf6af9c 100644 --- a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js +++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentConnector.js @@ -6,8 +6,8 @@ window.com_vaadin_tests_components_javascriptcomponent_BasicJavaScriptComponent_ parentIds.push(connectorId); connectorId = this.getParentId(connectorId); } + this.sendDifferentTypeOfData(new Date(123), "a string", 556, true ,{"aString": "value1","anInt":556,"aBoolean":false,"aDate":new Date(111)}); this.reportParentIds(parentIds); - this.onStateChange = function() { var e = this.getElement(); diff --git a/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java new file mode 100644 index 0000000000..ea610dccda --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponentTest.java @@ -0,0 +1,97 @@ +package com.vaadin.tests.components.javascriptcomponent; + +import org.junit.Assert; +import org.junit.Test; +import org.openqa.selenium.By; + +import com.vaadin.testbench.elements.AbstractComponentElement; +import com.vaadin.testbench.elements.AbstractJavaScriptComponentElement; +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.parallel.BrowserUtil; +import com.vaadin.tests.tb3.MultiBrowserTest; + +public class BasicJavaScriptComponentTest extends MultiBrowserTest { + @Test + public void javascriptCommunication() throws Exception { + openTestURL(); + int idx = 0; + Assert.assertEquals( + "12. Got callback message: Callback message processed", + getLogRow(idx++)); + Assert.assertEquals("11. Got RPC message: RPC message processed", + getLogRow(idx++)); + Assert.assertEquals("10. Parent ids checked", getLogRow(idx++)); + + // Data types in JS functions + String expected = "1970-01-01T00:00:00.111Z"; + if (BrowserUtil.isIE8(getDesiredCapabilities())) { + expected = "1970-01-01T00:00:00Z"; + } + Assert.assertEquals( + "9. Argument[4][aDate] type: elemental.json.impl.JreJsonString, value: " + + expected, getLogRow(idx++)); + Assert.assertEquals( + "8. Argument[4][aBoolean] type: elemental.json.impl.JreJsonBoolean, value: false", + getLogRow(idx++)); + Assert.assertEquals( + "7. Argument[4][anInt] type: elemental.json.impl.JreJsonNumber, value: 556", + getLogRow(idx++)); + Assert.assertEquals( + "6. Argument[4][aString] type: elemental.json.impl.JreJsonString, value: value1", + getLogRow(idx++)); + Assert.assertEquals( + "5. Argument[4] type: elemental.json.impl.JreJsonObject", + getLogRow(idx++)); + Assert.assertEquals( + "4. Argument[3] type: elemental.json.impl.JreJsonBoolean, value: true", + getLogRow(idx++)); + Assert.assertEquals( + "3. Argument[2] type: elemental.json.impl.JreJsonNumber, value: 556", + getLogRow(idx++)); + Assert.assertEquals( + "2. Argument[1] type: elemental.json.impl.JreJsonString, value: a string", + getLogRow(idx++)); + + expected = "1970-01-01T00:00:00.123Z"; + if (BrowserUtil.isIE8(getDesiredCapabilities())) { + expected = "1970-01-01T00:00:00Z"; + } + + Assert.assertEquals( + "1. Argument[0] type: elemental.json.impl.JreJsonString, value: " + + expected, getLogRow(idx++)); + + // Component attributes + AbstractJavaScriptComponentElement jsComponent = $( + AbstractJavaScriptComponentElement.class).first(); + Assert.assertEquals("Component caption", getCaption(jsComponent)); + + // app://APP/connector/[uiid]/[cid]/[key]/[filename] + Assert.assertTrue(getChildText(jsComponent, 0).matches( + "4. Url: .*/run/APP/connector/0/\\d+/test")); + Assert.assertEquals("3. State message: Second state message", + getChildText(jsComponent, 1)); + Assert.assertEquals("2. State message: First state message", + getChildText(jsComponent, 2)); + + // Can't/shouldn't check parent class name as we used to because it + // relies on parent state change events being fired before child state + // change events and this is not guaranteed + + // Modifications + ButtonElement button = $(ButtonElement.class).first(); + button.click(); + Assert.assertEquals("Remove component\nDon't mess with me", + button.getText()); + } + + private String getCaption(AbstractComponentElement c) { + return c.findElement(By.xpath("../div[@class='v-caption']")).getText(); + } + + private String getChildText(AbstractComponentElement e, int index) { + return e.findElement(By.xpath("(./div)[" + (index + 1) + "]")) + .getText(); + } + +} diff --git a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java index f8a2dcaf76..d1af180d4e 100644 --- a/uitest/src/com/vaadin/tests/serialization/SerializerTest.java +++ b/uitest/src/com/vaadin/tests/serialization/SerializerTest.java @@ -51,7 +51,7 @@ import elemental.json.JsonValue; @Widgetset("com.vaadin.tests.widgetset.TestingWidgetSet") public class SerializerTest extends AbstractTestUI { - private Log log = new Log(50); + private Log log = new Log(80); @Override protected void setup(VaadinRequest request) { @@ -63,7 +63,7 @@ public class SerializerTest extends AbstractTestUI { log.setNumberLogRows(false); addComponent(log); - SerializerTestRpc rpc = testExtension + final SerializerTestRpc rpc = testExtension .getRpcProxy(SerializerTestRpc.class); SerializerTestState state = testExtension.getState(); @@ -263,12 +263,15 @@ public class SerializerTest extends AbstractTestUI { rpc.sendDate(new Date(1)); rpc.sendDate(new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13)); + rpc.sendDateArray(new Date[] { new Date(2013 - 1900, 1, 1), + new Date(2012 - 1900, 1, 1) }); state.jsonNull = Json.createNull(); state.jsonString = Json.create("a string"); state.jsonBoolean = Json.create(false); rpc.sendJson(Json.create(true), Json.createNull(), Json.create("JSON")); + state.dateArray = new Date[] { new Date(1), new Date(2) }; state.date1 = new Date(1); state.date2 = new Date(2013 - 1900, 5 - 1, 31, 11, 12, 13); @@ -469,6 +472,20 @@ public class SerializerTest extends AbstractTestUI { } @Override + public void sendDateArray(Date[] dateArray) { + DateFormat format = DateFormat.getDateTimeInstance( + DateFormat.LONG, DateFormat.FULL, + new Locale("en", "fi")); + format.setTimeZone(TimeZone.getTimeZone("UTC")); + String dates = ""; + + for (Date date : dateArray) { + dates += " " + format.format(date); + } + log.log("sendDateArray: " + dates); + } + + @Override public void sendJson(JsonValue value1, JsonValue value2, JsonString string) { log.log("sendJson: " + value1.toJson() + ", " + value2.toJson() diff --git a/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java b/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java index 8f1bcb6266..b2eb0e6b01 100644 --- a/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java +++ b/uitest/src/com/vaadin/tests/serialization/SerializerTestTest.java @@ -30,6 +30,9 @@ public class SerializerTestTest extends MultiBrowserTest { Assert.assertEquals( "sendJson: {\"b\":false,\"s\":\"JSON\"}, null, \"value\"", getLogRow(logRow++)); + Assert.assertEquals( + "sendDateArray: January 31, 2013 10:00:00 PM UTC January 31, 2012 10:00:00 PM UTC", + getLogRow(logRow++)); Assert.assertEquals("sendDate: May 31, 2013 8:12:13 AM UTC", getLogRow(logRow++)); Assert.assertEquals("sendDate: January 1, 1970 12:00:00 AM UTC", @@ -80,6 +83,13 @@ public class SerializerTestTest extends MultiBrowserTest { "sendBoolean: false, false, [false, false, true, false, true, true]", getLogRow(logRow++)); Assert.assertEquals("sendBeanSubclass: 43", getLogRow(logRow++)); + Assert.assertEquals( + "state.dateArray: Thu Jan 01 02:00:00 GMT+200 1970 Thu Jan 01 02:00:00 GMT+200 1970", + getLogRow(logRow++)); + Assert.assertEquals("state.date2: Fri May 31 11:12:13 GMT+300 2013", + getLogRow(logRow++)); + Assert.assertEquals("state.date1: Thu Jan 01 02:00:00 GMT+200 1970", + getLogRow(logRow++)); Assert.assertEquals("state.jsonBoolean: false", getLogRow(logRow++)); Assert.assertEquals("state.jsonString: a string", getLogRow(logRow++)); Assert.assertEquals("state.jsonNull: NULL", getLogRow(logRow++)); diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java index d055bf05e3..124b1b5600 100644 --- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java +++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestConnector.java @@ -267,6 +267,11 @@ public class SerializerTestConnector extends AbstractExtensionConnector { } @Override + public void sendDateArray(Date[] date) { + rpc.sendDateArray(date); + } + + @Override public void sendJson(JsonValue value1, JsonValue value2, JsonString string) { if (value1.getType() != JsonType.BOOLEAN) { @@ -348,6 +353,14 @@ public class SerializerTestConnector extends AbstractExtensionConnector { + ((JsonString) getState().jsonString).getString()); rpc.log("state.jsonBoolean: " + getState().jsonBoolean.getBoolean()); + rpc.log("state.date1: " + getState().date1); + rpc.log("state.date2: " + getState().date2); + String arrStr = ""; + for (Date d : getState().dateArray) { + arrStr += d + " "; + } + rpc.log("state.dateArray: " + arrStr); + /* * TODO public double doubleValue; public Double DoubleValue; public * double[] doubleArray; ; diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java index 758a778564..95c04ebcfe 100644 --- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java +++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestRpc.java @@ -85,7 +85,10 @@ public interface SerializerTestRpc extends ServerRpc, ClientRpc { public void sendDate(Date date); + public void sendDateArray(Date[] dates); + public void sendJson(JsonValue value1, JsonValue value2, JsonString string); public void log(String string); + } diff --git a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java index 982e567c20..5610ad7bfb 100644 --- a/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java +++ b/uitest/src/com/vaadin/tests/widgetset/client/SerializerTestState.java @@ -100,6 +100,7 @@ public class SerializerTestState extends AbstractComponentState { public Date date1; public Date date2; + public Date[] dateArray; public BeanWithAbstractSuperclass beanWithAbstractSuperclass; diff --git a/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html b/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html deleted file mode 100644 index d7024b2972..0000000000 --- a/uitest/tb2/com/vaadin/tests/components/javascriptcomponent/BasicJavaScriptComponent.html +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head profile="http://selenium-ide.openqa.org/profiles/test-case"> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<link rel="selenium.base" href="" /> -<title>New Test</title> -</head> -<body> -<table cellpadding="1" cellspacing="1" border="1"> -<thead> -<tr><td rowspan="1" colspan="3">New Test</td></tr> -</thead><tbody> -<tr> - <td>open</td> - <td>/run/com.vaadin.tests.components.javascriptcomponent.BasicJavaScriptComponent?restartApplication</td> - <td></td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[0]</td> - <td>3. Got callback message: Callback message processed</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[1]</td> - <td>2. Got RPC message: RPC message processed</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/VVerticalLayout[0]/VLabel[2]</td> - <td>1. Parent ids checked</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/domChild[1]/domChild[0]/domChild[0]</td> - <td>Component caption</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[0]</td> - <td>4. Url: */run/APP/connector/0/10/test</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[1]</td> - <td>3. State message: Second state message</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[2]</td> - <td>2. State message: First state message</td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::/VVerticalLayout[0]/VVerticalLayout[0]/JavaScriptWidget[0]/domChild[3]</td> - <td>1. Parent element className: v-verticallayout v-layout v-vertical v-widget v-has-width</td> -</tr> -<tr> - <td>click</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton/domChild[0]/domChild[0]</td> - <td></td> -</tr> -<tr> - <td>assertText</td> - <td>vaadin=runcomvaadintestscomponentsjavascriptcomponentBasicJavaScriptComponent::PID_SRemoveButton</td> - <td>Remove componentDon't mess with me</td> -</tr> -</tbody></table> -</body> -</html> |