diff options
author | Peter Lehto <peter@vaadin.com> | 2017-06-13 12:41:36 +0300 |
---|---|---|
committer | Artur <artur@vaadin.com> | 2017-06-13 12:41:36 +0300 |
commit | cb1a2b99472faabba3596d673dbdbc377fb1628a (patch) | |
tree | 5d314656198c06b6411fce5a6b6a62214fa59197 /server/src/test | |
parent | 2f5e484a12f25d10ac6034d8ee9176b553b96c2d (diff) | |
download | vaadin-framework-cb1a2b99472faabba3596d673dbdbc377fb1628a.tar.gz vaadin-framework-cb1a2b99472faabba3596d673dbdbc377fb1628a.zip |
Add getStateParameterMap to Navigator to get parameters as a map (#9517)
Diffstat (limited to 'server/src/test')
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/navigator/NavigatorTest.java | 127 |
1 files changed, 109 insertions, 18 deletions
diff --git a/server/src/test/java/com/vaadin/tests/server/navigator/NavigatorTest.java b/server/src/test/java/com/vaadin/tests/server/navigator/NavigatorTest.java index 6991fd1b9e..022b388840 100644 --- a/server/src/test/java/com/vaadin/tests/server/navigator/NavigatorTest.java +++ b/server/src/test/java/com/vaadin/tests/server/navigator/NavigatorTest.java @@ -23,6 +23,8 @@ import static org.junit.Assert.assertSame; import static org.junit.Assert.fail; import java.util.LinkedList; +import java.util.Map; +import java.util.Map.Entry; import org.easymock.EasyMock; import org.easymock.IArgumentMatcher; @@ -51,6 +53,25 @@ import com.vaadin.ui.VerticalLayout; public class NavigatorTest { + private final class TestNavigationStateManager + implements NavigationStateManager { + private String state; + + @Override + public void setState(String state) { + this.state = state; + } + + @Override + public void setNavigator(Navigator navigator) { + } + + @Override + public String getState() { + return state; + } + } + // TODO test internal parameters (and absence of them) // TODO test listeners blocking navigation, multiple listeners @@ -854,24 +875,7 @@ public class NavigatorTest { @Test public void testNavigateTo_navigateSameUriTwice_secondNavigationDoesNothing() { - NavigationStateManager manager = new NavigationStateManager() { - - private String state; - - @Override - public void setState(String state) { - this.state = state; - } - - @Override - public void setNavigator(Navigator navigator) { - } - - @Override - public String getState() { - return state; - } - }; + NavigationStateManager manager = new TestNavigationStateManager(); final String viewName = "view"; @@ -969,4 +973,91 @@ public class NavigatorTest { ((Label) ((HorizontalLayout) ui.getContent()).getComponent(0)) .getValue()); } + + @Test + public void parameterMap_noViewSeparator() { + Navigator navigator = createNavigatorWithState("fooview"); + Assert.assertTrue(navigator.getStateParameterMap().isEmpty()); + Assert.assertTrue(navigator.getStateParameterMap("foo").isEmpty()); + } + + @Test + public void parameterMap_noParameters() { + Navigator navigator = createNavigatorWithState("fooview/"); + Assert.assertTrue(navigator.getStateParameterMap().isEmpty()); + } + + @Test + public void parameterMap_oneParameterNoValue() { + Navigator navigator = createNavigatorWithState("fooview/bar"); + assertMap(navigator.getStateParameterMap(), entry("bar", "")); + } + + @Test + public void parameterMap_oneParameterNoValueButEquals() { + Navigator navigator = createNavigatorWithState("fooview/bar="); + assertMap(navigator.getStateParameterMap(), entry("bar", "")); + } + + @Test + public void parameterMap_oneParameterWithValue() { + Navigator navigator = createNavigatorWithState("fooview/bar=baz"); + assertMap(navigator.getStateParameterMap(), entry("bar", "baz")); + } + + @Test + public void parameterMap_twoParameters() { + Navigator navigator = createNavigatorWithState("fooview/foo=bar&baz"); + assertMap(navigator.getStateParameterMap(), entry("foo", "bar"), + entry("baz", "")); + } + + @Test + public void parameterMap_customSeparator() { + Navigator navigator = createNavigatorWithState("fooview/foo=bar&baz"); + assertMap(navigator.getStateParameterMap("a"), entry("foo", "b"), + entry("r&b", ""), entry("z", "")); + } + + @SafeVarargs + private final void assertMap(Map<String, String> map, + Entry<String, String>... entries) { + Assert.assertEquals(entries.length, map.size()); + for (Entry<String, String> entry : entries) { + Assert.assertTrue( + "Map should contain a key called '" + entry.getKey() + "'", + map.containsKey(entry.getKey())); + Assert.assertEquals(entry.getValue(), map.get(entry.getKey())); + } + + } + + private Entry<String, String> entry(String key, String value) { + return new Entry<String, String>() { + + @Override + public String getKey() { + return key; + } + + @Override + public String getValue() { + return value; + } + + @Override + public String setValue(String value) { + throw new UnsupportedOperationException(); + } + + }; + } + + private Navigator createNavigatorWithState(String state) { + TestNavigationStateManager manager = new TestNavigationStateManager(); + Navigator navigator = new Navigator(createMockUI(), manager, + EasyMock.createMock(ViewDisplay.class)); + manager.setState(state); + return navigator; + } } |