]> source.dussan.org Git - vaadin-framework.git/commitdiff
Setting null as URI fragment doesn't remove the fragment in the browser (#11312)
authorAnna Miroshnik <anna.miroshnik@arcadia.spb.ru>
Tue, 16 Sep 2014 09:33:35 +0000 (13:33 +0400)
committerVaadin Code Review <review@vaadin.com>
Fri, 19 Sep 2014 10:02:53 +0000 (10:02 +0000)
Tests only. Because this defect was fixed during fixing #12207.

Change-Id: If47f06d30fd3c8318df9b3197cea5771a1b38063

uitest/src/com/vaadin/tests/urifragments/SettingNullFragment.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/urifragments/SettingNullFragmentTest.java [new file with mode: 0644]

diff --git a/uitest/src/com/vaadin/tests/urifragments/SettingNullFragment.java b/uitest/src/com/vaadin/tests/urifragments/SettingNullFragment.java
new file mode 100644 (file)
index 0000000..4c3921e
--- /dev/null
@@ -0,0 +1,53 @@
+package com.vaadin.tests.urifragments;
+
+import com.vaadin.server.Page;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+
+@SuppressWarnings("serial")
+public class SettingNullFragment extends AbstractTestUI {
+
+    protected static final String BUTTON_FRAG_1_ID = "buttonFrag1";
+    protected static final String BUTTON_NULL_FRAGMENT_ID = "buttonNullFragment";
+
+    protected static final String FRAG_1_URI = "FRAG1";
+    protected static final String NULL_FRAGMENT_URI = "";
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        Button button1 = new Button("Set Fragment");
+        button1.setId(BUTTON_FRAG_1_ID);
+
+        Button button2 = new Button("Set Null Fragment");
+        button2.setId(BUTTON_NULL_FRAGMENT_ID);
+
+        button1.addClickListener(new Button.ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                Page.getCurrent().setUriFragment(FRAG_1_URI);
+            }
+        });
+
+        button2.addClickListener(new Button.ClickListener() {
+            @Override
+            public void buttonClick(ClickEvent event) {
+                Page.getCurrent().setUriFragment(null);
+            }
+        });
+
+        getLayout().addComponent(button1);
+        getLayout().addComponent(button2);
+    }
+
+    @Override
+    protected String getTestDescription() {
+        return "Setting null as URI fragment should remove (clear) old fragment in the browser";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 11312;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/urifragments/SettingNullFragmentTest.java b/uitest/src/com/vaadin/tests/urifragments/SettingNullFragmentTest.java
new file mode 100644 (file)
index 0000000..4fed0b2
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * 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
+ * 
+ * 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.urifragments;
+
+import org.junit.Test;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedCondition;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * UI test: setting null as URI fragment clear (remove) the fragment in the
+ * browser
+ * 
+ * @author Vaadin Ltd
+ */
+public class SettingNullFragmentTest extends MultiBrowserTest {
+
+    @Test
+    public void testSettingNullURIFragment() throws Exception {
+        openTestURL();
+
+        navigateToFrag1();
+        assertFragment(SettingNullFragment.FRAG_1_URI);
+
+        navigateToNull();
+        assertFragment(SettingNullFragment.NULL_FRAGMENT_URI);
+    }
+
+    private void assertFragment(String fragment) {
+        final String expectedText = fragment;
+
+        waitUntil(new ExpectedCondition<Boolean>() {
+
+            @Override
+            public Boolean apply(WebDriver input) {
+                String currentURL = getDriver().getCurrentUrl();
+                String currentURIFragment = "";
+                if (currentURL.contains("#") && !currentURL.endsWith("#")) {
+                    currentURIFragment = currentURL.split("#")[1];
+                }
+                return expectedText.equals(currentURIFragment);
+            }
+        });
+    }
+
+    private void navigateToFrag1() {
+        hitButton(SettingNullFragment.BUTTON_FRAG_1_ID);
+    }
+
+    private void navigateToNull() {
+        hitButton(SettingNullFragment.BUTTON_NULL_FRAGMENT_ID);
+    }
+
+}