diff options
author | Zhe Sun <31067185+ZheSun88@users.noreply.github.com> | 2019-06-14 15:31:44 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-14 15:31:44 +0300 |
commit | 7bda912a77f6295ac339a3035b0de8d7ed45cfa3 (patch) | |
tree | d49208274e8441ceedac8fa9ef292b3f065c846e /uitest | |
parent | d18f8ddbaab2d192dacf7d7485d87b51fe1e7cb9 (diff) | |
download | vaadin-framework-7bda912a77f6295ac339a3035b0de8d7ed45cfa3.tar.gz vaadin-framework-7bda912a77f6295ac339a3035b0de8d7ed45cfa3.zip |
Separates a rpc for handling the client event order in DateTimeField (#11574)
* Using @Delayed annotation for DateField Rpc
* Separate a rpc for handling the time change in DateTimeField
* Add test case for wrong event order
Diffstat (limited to 'uitest')
2 files changed, 93 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrder.java b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrder.java new file mode 100644 index 0000000000..420c83cca7 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrder.java @@ -0,0 +1,54 @@ +package com.vaadin.tests.components.datefield; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.VaadinRequest; +import com.vaadin.shared.ui.ValueChangeMode; +import com.vaadin.shared.ui.datefield.DateTimeResolution; +import com.vaadin.tests.components.AbstractTestUIWithLog; +import com.vaadin.tests.widgetset.TestingWidgetSet; +import com.vaadin.ui.Button; +import com.vaadin.ui.DateTimeField; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.TextField; +import com.vaadin.v7.shared.ui.datefield.Resolution; +import com.vaadin.v7.ui.DateField; + +@Widgetset(TestingWidgetSet.NAME) +public class DateTimeFieldEventOrder extends AbstractTestUIWithLog { + + @Override + protected void setup(VaadinRequest request) { + + HorizontalLayout horizontalLayout = new HorizontalLayout(); + + DateTimeField dateField = new DateTimeField(); + dateField.setResolution(DateTimeResolution.SECOND); + dateField.setId("test-field"); + dateField.addValueChangeListener( + event -> log("DateTimeField value change event")); + + Button button = new Button("test"); + button.setId("test-button"); + button.addClickListener(ev -> { + log("Button Click Event"); + }); + + TextField tf = new TextField("test"); + tf.setValueChangeMode(ValueChangeMode.BLUR); + tf.addValueChangeListener(event -> log("TextField value change event")); + + DateField df = new DateField(); + df.setResolution(Resolution.SECOND); + df.addValueChangeListener(event -> { + log("DateTimeField V7 value change event"); + }); + + horizontalLayout.addComponents(dateField, button, tf, df); + addComponent(horizontalLayout); + } + + @Override + protected Integer getTicketNumber() { + return 11316; + } +} diff --git a/uitest/src/test/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrderTest.java b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrderTest.java new file mode 100644 index 0000000000..cead7d6f2b --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/components/datefield/DateTimeFieldEventOrderTest.java @@ -0,0 +1,39 @@ +package com.vaadin.tests.components.datefield; + +import java.util.List; + +import org.junit.Test; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.ui.Select; + +import com.vaadin.testbench.By; +import com.vaadin.testbench.elements.DateTimeFieldElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +import static org.junit.Assert.assertEquals; + +public class DateTimeFieldEventOrderTest extends SingleBrowserTest { + + @Test + public void testEventOrderIsCorrect() { + openTestURL(); + + DateTimeFieldElement field = $(DateTimeFieldElement.class).first(); + + field.openPopup(); + + List<WebElement> timeSelects = findElement( + By.className("v-datefield-calendarpanel-time")) + .findElements(By.tagName("select")); + + new Select(timeSelects.get(0)).selectByValue("09"); + + findElement(By.id("test-button")).click(); + + assertEquals("The button click event should come second.", + "2. Button Click Event", getLogRow(0)); + assertEquals("The value change event of DTF should come firstly.", + "1. DateTimeField value change event", getLogRow(1)); + + } +} |