summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuho Nurminen <juho@vaadin.com>2013-10-30 14:25:30 +0200
committerVaadin Code Review <review@vaadin.com>2013-10-30 13:43:33 +0000
commite2157f47967e1470704cb0b2ab023941f26171f9 (patch)
tree7d130a8b35f159523d2e8eb5905cc7d61d11c696
parent017bd0684c7d6c8475c8b43514e6f3998095c8d6 (diff)
downloadvaadin-framework-e2157f47967e1470704cb0b2ab023941f26171f9.tar.gz
vaadin-framework-e2157f47967e1470704cb0b2ab023941f26171f9.zip
Fixed Tab error tooltips (#12802)
Change-Id: I5ad33f38be5fac64805950d143ad2712e671ff83
-rw-r--r--client/src/com/vaadin/client/ui/VTabsheet.java3
-rw-r--r--uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltip.java60
-rw-r--r--uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltipTest.java81
3 files changed, 143 insertions, 1 deletions
diff --git a/client/src/com/vaadin/client/ui/VTabsheet.java b/client/src/com/vaadin/client/ui/VTabsheet.java
index 7dec62bde0..c64216d49f 100644
--- a/client/src/com/vaadin/client/ui/VTabsheet.java
+++ b/client/src/com/vaadin/client/ui/VTabsheet.java
@@ -265,7 +265,8 @@ public class VTabsheet extends VTabsheetBase implements Focusable,
}
public boolean updateCaption(UIDL uidl) {
- if (uidl.hasAttribute(TabsheetBaseConstants.ATTRIBUTE_TAB_DESCRIPTION)) {
+ if (uidl.hasAttribute(TabsheetBaseConstants.ATTRIBUTE_TAB_DESCRIPTION)
+ || uidl.hasAttribute(TabsheetBaseConstants.ATTRIBUTE_TAB_ERROR_MESSAGE)) {
setTooltipInfo(new TooltipInfo(
uidl.getStringAttribute(TabsheetBaseConstants.ATTRIBUTE_TAB_DESCRIPTION),
uidl.getStringAttribute(TabsheetBaseConstants.ATTRIBUTE_TAB_ERROR_MESSAGE)));
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltip.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltip.java
new file mode 100644
index 0000000000..02482b7049
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltip.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2000-2013 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.tests.components.tabsheet;
+
+import com.vaadin.server.UserError;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Label;
+import com.vaadin.ui.TabSheet;
+import com.vaadin.ui.TabSheet.Tab;
+
+public class TabSheetErrorTooltip extends AbstractTestUI {
+
+ private TabSheet tabSheet = new TabSheet();
+ private int tabCount = 0;
+
+ @Override
+ protected void setup(VaadinRequest request) {
+
+ addTab();
+ addTab().setComponentError(new UserError("Error!"));
+ addTab().setDescription("This is a tab");
+
+ Tab t = addTab();
+ t.setComponentError(new UserError("Error!"));
+ t.setDescription("This tab has both an error and a description");
+
+ setContent(tabSheet);
+ }
+
+ private Tab addTab() {
+ tabCount++;
+ Label contents = new Label("Contents for tab " + tabCount);
+ return tabSheet.addTab(contents, "Tab " + tabCount);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "TabSheet Tabs should display component error tooltips when expected";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 12802;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltipTest.java b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltipTest.java
new file mode 100644
index 0000000000..88bc23d12b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/tabsheet/TabSheetErrorTooltipTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2000-2013 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.tests.components.tabsheet;
+
+import java.io.IOException;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.NoSuchElementException;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class TabSheetErrorTooltipTest extends MultiBrowserTest {
+
+ @Test
+ public void checkTooltips() throws IOException {
+ openTestURL();
+
+ testBenchElement(getTab(0)).showTooltip();
+ assertNoTooltip();
+
+ testBenchElement(getTab(1)).showTooltip();
+ assertErrorMessage("Error!");
+ assertTooltip("");
+
+ testBenchElement(getTab(2)).showTooltip();
+ assertErrorMessage("");
+ assertTooltip("This is a tab");
+
+ testBenchElement(getTab(3)).showTooltip();
+ assertErrorMessage("Error!");
+ assertTooltip("This tab has both an error and a description");
+ }
+
+ private WebElement getTab(int index) {
+ return vaadinElement("/VTabsheet[0]/domChild[0]/domChild[0]/domChild[0]/domChild[0]/domChild["
+ + index + "]/domChild[0]");
+ }
+
+ private WebElement getTooltip() {
+ return getDriver().findElement(
+ By.xpath("//div[@class='v-tooltip-text']"));
+ }
+
+ private WebElement getErrorMessage() {
+ return getDriver().findElement(
+ By.xpath("//div[@class='v-errormessage']"));
+ }
+
+ private void assertTooltip(String tooltip) {
+ Assert.assertEquals(tooltip, getTooltip().getText());
+ }
+
+ private void assertErrorMessage(String message) {
+ Assert.assertEquals(message, getErrorMessage().getText());
+ }
+
+ private void assertNoTooltip() {
+ try {
+ getTooltip();
+ } catch (NoSuchElementException e) {
+ return;
+ }
+ Assert.fail("Tooltip exists");
+ }
+}