aboutsummaryrefslogtreecommitdiffstats
path: root/testbench-api
diff options
context:
space:
mode:
authorTeemu Suo-Anttila <tsuoanttila@users.noreply.github.com>2017-08-02 09:12:21 +0300
committerHenri Sara <henri.sara@gmail.com>2017-08-02 09:12:21 +0300
commitf12a23c9c6bb176dd0550f07d6ddeb1e91c84bfc (patch)
tree70f177f117b87bcb20d6eb1f3fa46ba45251a976 /testbench-api
parent61c3a725bad98b731a8eb6a3186bb66398630022 (diff)
downloadvaadin-framework-f12a23c9c6bb176dd0550f07d6ddeb1e91c84bfc.tar.gz
vaadin-framework-f12a23c9c6bb176dd0550f07d6ddeb1e91c84bfc.zip
Fix RadioButtonGroup selection updates to client (#9749)
This patch provides a simple fix for the majority of issues. There are still issues that should be fixes by refactoring parts of the logic in AbstractSingleSelect. This patch does not unify the handling of empty values in the TestBench elements of various AbstractSingleSelects. Fixes #9494
Diffstat (limited to 'testbench-api')
-rw-r--r--testbench-api/src/main/java/com/vaadin/testbench/elements/AbstractSingleSelectElement.java47
-rw-r--r--testbench-api/src/main/java/com/vaadin/testbench/elements/ComboBoxElement.java4
-rw-r--r--testbench-api/src/main/java/com/vaadin/testbench/elements/NativeSelectElement.java11
-rw-r--r--testbench-api/src/main/java/com/vaadin/testbench/elements/RadioButtonGroupElement.java2
4 files changed, 58 insertions, 6 deletions
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/AbstractSingleSelectElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/AbstractSingleSelectElement.java
new file mode 100644
index 0000000000..c66e736a1d
--- /dev/null
+++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/AbstractSingleSelectElement.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2016 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.testbench.elements;
+
+import com.vaadin.testbench.elementsbase.ServerClass;
+
+/**
+ * A common base element class for all single select components.
+ *
+ * @since 8.1.1
+ */
+@ServerClass("com.vaadin.ui.AbstractSingleSelect")
+public abstract class AbstractSingleSelectElement
+ extends AbstractSelectElement {
+
+ /**
+ * Selects the first option in this single select component that matches the
+ * given text.
+ *
+ * @param text
+ * the text to select by
+ */
+ public abstract void selectByText(String text);
+
+ /**
+ * Return value of this single select component.
+ * <p>
+ * <strong>Note:</strong> If there is no value selected the behavior of
+ * subclasses varies. Pay attention on the actual implementation.
+ *
+ * @return the value
+ */
+ public abstract String getValue();
+}
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/ComboBoxElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/ComboBoxElement.java
index 11b823e656..2eaef4f015 100644
--- a/testbench-api/src/main/java/com/vaadin/testbench/elements/ComboBoxElement.java
+++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/ComboBoxElement.java
@@ -28,7 +28,7 @@ import com.vaadin.testbench.TestBenchElement;
import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.ComboBox")
-public class ComboBoxElement extends AbstractSelectElement {
+public class ComboBoxElement extends AbstractSingleSelectElement {
private static org.openqa.selenium.By bySuggestionPopup = By
.vaadin("#popup");
@@ -199,7 +199,7 @@ public class ComboBoxElement extends AbstractSelectElement {
}
/**
- * Return value of the combo box element
+ * Return value of the combo box element.
*
* @return value of the combo box element
*/
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/NativeSelectElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/NativeSelectElement.java
index d932af1966..f6b0426c3e 100644
--- a/testbench-api/src/main/java/com/vaadin/testbench/elements/NativeSelectElement.java
+++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/NativeSelectElement.java
@@ -17,6 +17,7 @@ package com.vaadin.testbench.elements;
import java.util.List;
+import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.Select;
@@ -25,7 +26,7 @@ import com.vaadin.testbench.TestBenchElement;
import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.NativeSelect")
-public class NativeSelectElement extends AbstractSelectElement {
+public class NativeSelectElement extends AbstractSingleSelectElement {
private Select select;
private WebElement selectElement;
@@ -70,9 +71,13 @@ public class NativeSelectElement extends AbstractSelectElement {
/**
* Return value of the selected item in the native select element.
*
- * @return value of the selected item in the native select element
+ * @return value of the selected item
+ *
+ * @throws NoSuchElementException
+ * if no value is selected
*/
- public String getValue() {
+
+ public String getValue() throws NoSuchElementException {
return select.getFirstSelectedOption().getText();
}
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/RadioButtonGroupElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/RadioButtonGroupElement.java
index 4feeaae6ff..4cff189ea7 100644
--- a/testbench-api/src/main/java/com/vaadin/testbench/elements/RadioButtonGroupElement.java
+++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/RadioButtonGroupElement.java
@@ -25,7 +25,7 @@ import com.vaadin.testbench.TestBenchElement;
import com.vaadin.testbench.elementsbase.ServerClass;
@ServerClass("com.vaadin.ui.RadioButtonGroup")
-public class RadioButtonGroupElement extends AbstractSelectElement {
+public class RadioButtonGroupElement extends AbstractSingleSelectElement {
private static org.openqa.selenium.By bySelectOption = By
.className("v-select-option");