diff options
author | Leif Åstrand <leif@vaadin.com> | 2015-06-14 15:36:33 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2015-06-17 12:32:18 +0000 |
commit | f8aacf7c53d2e758e431588f44185b583fad8cb6 (patch) | |
tree | fbf8ce2cb80546eec99ef45f720137e1bf26f1b9 /uitest | |
parent | 02d548fb26eb2bab1ee651abce647b562600d160 (diff) | |
download | vaadin-framework-f8aacf7c53d2e758e431588f44185b583fad8cb6.tar.gz vaadin-framework-f8aacf7c53d2e758e431588f44185b583fad8cb6.zip |
Allow beforeClientResponse to change hierarchy or dirtyness (#18268)
Change-Id: I6a1ae23c1dd67f8889479a1069f260fa736bbd83
Diffstat (limited to 'uitest')
2 files changed, 114 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponse.java b/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponse.java new file mode 100644 index 0000000000..e6daf8356c --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponse.java @@ -0,0 +1,71 @@ +/* + * 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.components.abstractcomponent; + +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.CssLayout; +import com.vaadin.ui.Label; + +public class ChangeHierarchyBeforeResponse extends AbstractTestUI { + private CssLayout layout = new CssLayout() { + @Override + public void beforeClientResponse(boolean initial) { + super.beforeClientResponse(initial); + if (initial) { + addComponent(buttonToAdd); + removeComponent(labelToRemove); + } + } + }; + + private Button buttonToAdd = new Button("Added from beforeClientResponse", + new Button.ClickListener() { + @Override + public void buttonClick(ClickEvent event) { + layout.addComponent(labelToRemove); + } + }) { + @Override + public void beforeClientResponse(boolean initial) { + super.beforeClientResponse(initial); + setCaption("Add label to layout"); + } + }; + + private Label labelToRemove = new Label("Label to remove") { + int count = 0; + + @Override + public void beforeClientResponse(boolean initial) { + super.beforeClientResponse(initial); + if (initial) { + count++; + setValue("Initial count: " + count); + } + } + }; + + @Override + protected void setup(VaadinRequest request) { + layout.addComponent(labelToRemove); + + addComponent(layout); + } + +} diff --git a/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponseTest.java b/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponseTest.java new file mode 100644 index 0000000000..485e218a68 --- /dev/null +++ b/uitest/src/com/vaadin/tests/components/abstractcomponent/ChangeHierarchyBeforeResponseTest.java @@ -0,0 +1,43 @@ +/* + * 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.components.abstractcomponent; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.LabelElement; +import com.vaadin.tests.tb3.SingleBrowserTest; + +public class ChangeHierarchyBeforeResponseTest extends SingleBrowserTest { + @Test + public void testHierarchyChangeBeforeResponse() { + openTestURL(); + + ButtonElement button = $(ButtonElement.class).first(); + + Assert.assertEquals( + "Button caption should change by its own beforeClientResponse", + "Add label to layout", button.getText()); + + button.click(); + + LabelElement label = $(LabelElement.class).all().get(1); + + Assert.assertEquals("Label should have been considered initial twice", + "Initial count: 2", label.getText()); + } +} |