]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fix invalid user visible value in ComboBox (#8115)
authorMatti Tahvonen <matti@vaadin.com>
Wed, 6 Sep 2017 09:25:09 +0000 (12:25 +0300)
committerHenri Sara <henri.sara@gmail.com>
Wed, 6 Sep 2017 09:25:09 +0000 (12:25 +0300)
Closes #7902

client/src/main/java/com/vaadin/client/ui/VFilterSelect.java
uitest/src/main/java/com/vaadin/tests/components/combobox/ComboBoxScrollingToPageDisabled.java
uitest/src/test/java/com/vaadin/tests/components/combobox/ComboBoxScrollingToPageDisabledTest.java

index e407aaafe45d0b6383ebfb9fa206de5fa589c9eb..af58756af07b55f9b0d2b4bef2d070cd836f1eee 100644 (file)
@@ -1872,7 +1872,6 @@ public class VFilterSelect extends Composite
             client.updateVariable(paintableId, "selected",
                     new String[] { selectedOptionKey }, immediate);
             afterUpdateClientVariables();
-
             // currentPage = -1; // forget the page
         }
 
@@ -2644,6 +2643,7 @@ public class VFilterSelect extends Composite
     public void setSelectedCaption(String selectedCaption) {
         explicitSelectedCaption = selectedCaption;
         if (selectedCaption != null) {
+            selectedOptionKey = null;
             setPromptingOff(selectedCaption);
         }
     }
index 1b0675c914b2eccd84a8c05472571b96386cce17..8899fa2b695fd23e1f2f20e1adca8d117a81a1aa 100644 (file)
@@ -5,8 +5,11 @@ import java.util.ArrayList;
 import com.vaadin.data.Property.ValueChangeEvent;
 import com.vaadin.data.Property.ValueChangeListener;
 import com.vaadin.tests.components.ComponentTestCase;
+import com.vaadin.ui.Button;
 import com.vaadin.ui.ComboBox;
 import com.vaadin.ui.Notification;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.Button.ClickListener;
 
 public class ComboBoxScrollingToPageDisabled
         extends ComponentTestCase<ComboBox> {
@@ -20,12 +23,30 @@ public class ComboBoxScrollingToPageDisabled
 
     @Override
     protected void initializeComponents() {
-        ComboBox s = createSelect(null);
+        final ComboBox s = createSelect(null);
         s.setScrollToSelectedItem(false);
         populate(s, 100);
-        Object selection = new ArrayList<Object>(s.getItemIds()).get(50);
+        final Object selection = new ArrayList<Object>(s.getItemIds()).get(50);
         s.setValue(selection);
         addTestComponent(s);
+
+        Button button = new Button("Select first");
+        button.addClickListener(new ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                s.setValue(s.getItemIds().iterator().next());
+            }
+        });
+        addComponent(button);
+
+        Button button2 = new Button("Select index 50");
+        button2.addClickListener(new ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                s.setValue(selection);
+            }
+        });
+        addComponent(button2);
     }
 
     private void populate(ComboBox s, int nr) {
index 698a5fb49f5df1bba8867919c0f3057285133f67..8d188659440784f0a7edf793e99021e69b5af5fb 100644 (file)
@@ -17,6 +17,7 @@ package com.vaadin.tests.components.combobox;
 
 import org.junit.Test;
 
+import com.vaadin.testbench.elements.ButtonElement;
 import com.vaadin.testbench.elements.LabelElement;
 import com.vaadin.tests.tb3.MultiBrowserTest;
 import com.vaadin.tests.tb3.newelements.ComboBoxElement;
@@ -50,4 +51,22 @@ public class ComboBoxScrollingToPageDisabledTest extends MultiBrowserTest {
 
         org.junit.Assert.assertEquals("Item 99", combo.getText());
     }
+
+    @Test
+    public void checkUpdateFromServerDisplayedCorrectly() {
+        ButtonElement selFirstButton = $(ButtonElement.class)
+                .caption("Select first").first();
+        ButtonElement sel50Button = $(ButtonElement.class)
+                .caption("Select index 50").first();
+        ComboBoxElement comboBox = $(ComboBoxElement.class).first();
+
+        selFirstButton.click();
+        org.junit.Assert.assertEquals("Item 0", comboBox.getText());
+        sel50Button.click();
+        org.junit.Assert.assertEquals("Item 50", comboBox.getText());
+        selFirstButton.click();
+        org.junit.Assert.assertEquals("Item 0", comboBox.getText());
+        sel50Button.click();
+        org.junit.Assert.assertEquals("Item 50", comboBox.getText());
+    }
 }