]> source.dussan.org Git - vaadin-framework.git/commitdiff
Test and fix a CheckBoxGroup icon provider and item enabled provider
authorelmot <elmot@vaadin.com>
Wed, 14 Sep 2016 09:13:14 +0000 (12:13 +0300)
committerVaadin Code Review <review@vaadin.com>
Mon, 19 Sep 2016 05:44:39 +0000 (05:44 +0000)
Change-Id: Ia3ed99478d19efc041cc4adaabd856ee69f3531b

client/src/main/java/com/vaadin/client/ui/VCheckBoxGroup.java
uitest-common/src/main/java/com/vaadin/testbench/customelements/CheckBoxGroupElement.java
uitest/src/main/java/com/vaadin/tests/components/checkbox/CheckBoxGroupTestUI.java
uitest/src/test/java/com/vaadin/tests/components/checkboxgroup/CheckBoxGroupTest.java

index 3fde2f69983fc026b8b3b9b2076833ac82795ac3..c51cb32a2faabc06a13c2b3317fa5adc78f47353 100644 (file)
@@ -107,7 +107,8 @@ public class VCheckBoxGroup extends Composite implements Field, ClickHandler,
             String iconUrl = item
                     .getString(CheckBoxGroupConstants.JSONKEY_ITEM_ICON);
             if (iconUrl != null && iconUrl.length() != 0) {
-                checkBox.icon = client.getIcon(iconUrl);
+                Icon icon = client.getIcon(iconUrl);
+                itemHtml = icon.getElement().getString() + itemHtml;
             }
 
             checkBox.addStyleName(CLASSNAME_OPTION);
index b2dd93a7b00f9203dfe3e9d963088956dadd1f6f..9b234fa1cdb0c0c57bc3fe23f4114828a8f66f5d 100644 (file)
@@ -46,6 +46,30 @@ public class CheckBoxGroupElement extends AbstractSelectElement {
         return optionTexts;
     }
 
+    public List<String> getOptionsCssClasses() {
+        List<String> optionTexts = new ArrayList<>();
+        List<WebElement> options = findElements(byButtonSpan);
+        for (WebElement option : options) {
+            optionTexts.add(option.getAttribute("class"));
+        }
+        return optionTexts;
+    }
+
+    public List<String> getOptionsIconUrls() {
+        List<String> icons = new ArrayList<>();
+        List<WebElement> options = findElements(byButtonSpan);
+        for (WebElement option : options) {
+            List<WebElement> images = option.findElements(By.tagName("img"));
+            if (images != null && images.size() > 0) {
+                icons.add(images.get(0).getAttribute("src"));
+            } else {
+                icons.add(null);
+            }
+
+        }
+        return icons;
+    }
+
     public void selectByText(String text) throws ReadOnlyException {
         if (isReadOnly()) {
             throw new ReadOnlyException();
@@ -103,4 +127,5 @@ public class CheckBoxGroupElement extends AbstractSelectElement {
                 "Clear operation is not supported for CheckBoxGroup."
                         + " This operation has no effect on the element.");
     }
+
 }
index fef23f56d3de0cd392a7c65bf7e767071502ba32..e8af72bfa6954d89db3ccb2077d50e9711030caa 100644 (file)
@@ -37,6 +37,17 @@ public class CheckBoxGroupTestUI
         return (Class) CheckBoxGroup.class;
     }
 
+
+    @Override
+    protected CheckBoxGroup<Object> constructComponent() {
+        CheckBoxGroup<Object> checkBoxGroup = super.constructComponent();
+        checkBoxGroup.setItemIconProvider(
+                item -> "Item 2".equals(item) ? ICON_16_HELP_PNG_CACHEABLE :
+                        null);
+        checkBoxGroup.setItemEnabledProvider(item -> !"Item 10".equals(item));
+        return checkBoxGroup;
+    }
+
     @Override
     protected void createActions() {
         super.createActions();
index 9a8f6315943a67fa9d6c5a6cae1aeef4d11f3539..087ab55b6c432f0de73defdb21c55896836daa76 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright 2000-2014 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
@@ -26,6 +26,16 @@ import org.junit.Test;
 import com.vaadin.testbench.customelements.CheckBoxGroupElement;
 import com.vaadin.tests.components.checkbox.CheckBoxGroupTestUI;
 import com.vaadin.tests.tb3.MultiBrowserTest;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Test for CheckBoxGroup
@@ -113,4 +123,32 @@ public class CheckBoxGroupTest extends MultiBrowserTest {
         }
         assertEquals("Number of items", count, i);
     }
+
+    @Test
+    public void testDisabled() {
+        List<String> optionsCssClasses = getSelect().getOptionsCssClasses();
+        for (int i = 0; i < optionsCssClasses.size(); i++) {
+            String cssClassList = optionsCssClasses.get(i);
+            if (i == 10) {
+                assertTrue("10th item should be disabled",
+                           cssClassList.toLowerCase().contains("disabled"));
+            } else {
+                assertFalse("Only 10th item should be disabled",
+                            cssClassList.toLowerCase().contains("disabled"));
+            }
+        }
+    }
+
+    @Test
+    public void testIconUrl() {
+        List<String> optionsIcons = getSelect().getOptionsIconUrls();
+        for (int i = 0; i < optionsIcons.size(); i++) {
+            String icon = optionsIcons.get(i);
+            if (i == 2) {
+                assertNotNull("2nd item should have icon", icon);
+            } else {
+                assertNull("Only 2nd item should have icon", icon);
+            }
+        }
+    }
 }