diff options
author | Pekka Hyvönen <pekka@vaadin.com> | 2016-10-07 16:06:01 +0300 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2016-10-13 06:41:15 +0000 |
commit | fb4248119d77a6865a42ffdf0d80f10d683769a5 (patch) | |
tree | 60692a31b04a85958fefb6959e06e7039a3ea879 /compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java | |
parent | b66631c3dc5d79caa6a78274d2ea4107ccae7973 (diff) | |
download | vaadin-framework-fb4248119d77a6865a42ffdf0d80f10d683769a5.tar.gz vaadin-framework-fb4248119d77a6865a42ffdf0d80f10d683769a5.zip |
Remove AbstractComponent.immediate
All components are now in immediate mode by default.
V7 compatibility components will use AbstractLegacyComponent that has immediate.
V7 ColorPickerPopup will not have setImmediate, since it extends V8 Window,
which is not in V7 compatibility packages.
Removed OutOfSync and ResynchronizeAfterAsyncRemoval Tests,
since those tested UI in not immediate mode, which is invalid now.
Removed WindowResizeListener, LazyWindowResize, test UIs,
since both used immediate and there were no test run for either.
Change-Id: Ie1c8cfa4c48461db944ff9b13efe8473c5a3298f
Diffstat (limited to 'compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java')
-rw-r--r-- | compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java | 224 |
1 files changed, 224 insertions, 0 deletions
diff --git a/compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java b/compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java new file mode 100644 index 0000000000..0577a5743e --- /dev/null +++ b/compatibility-server/src/test/java/com/vaadin/v7/ui/AbstractLegacyComponentDeclarativeTest.java @@ -0,0 +1,224 @@ +/* + * Copyright 2000-2016 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.v7.ui; + +import static org.junit.Assert.assertTrue; + +import java.io.ByteArrayInputStream; +import java.io.File; +import java.lang.reflect.Field; +import java.nio.charset.Charset; +import java.util.Locale; + +import org.jsoup.nodes.Attributes; +import org.jsoup.nodes.Element; +import org.jsoup.parser.Tag; +import org.junit.Before; +import org.junit.Test; + +import com.vaadin.server.ErrorMessage.ErrorLevel; +import com.vaadin.server.ExternalResource; +import com.vaadin.server.FileResource; +import com.vaadin.server.Responsive; +import com.vaadin.server.ThemeResource; +import com.vaadin.server.UserError; +import com.vaadin.tests.design.DeclarativeTestBase; +import com.vaadin.ui.AbstractComponent; +import com.vaadin.ui.Label; +import com.vaadin.ui.declarative.Design; +import com.vaadin.ui.declarative.DesignContext; + +/** + * Test cases for reading and writing the properties of AbstractComponent. + * + * @since + * @author Vaadin Ltd + */ +public class AbstractLegacyComponentDeclarativeTest + extends DeclarativeTestBase<AbstractLegacyComponent> { + + private AbstractLegacyComponent component; + + @Before + public void setUp() { + NativeSelect ns = new NativeSelect(); + component = ns; + } + + @Test + public void testEmptyDesign() { + String design = "<vaadin7-native-select>"; + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testProperties() { + String design = "<vaadin7-native-select id=\"testId\" primary-style-name=\"test-style\" " + + "caption=\"test-caption\" locale=\"fi_FI\" description=\"test-description\" " + + "error=\"<div>test-error</div>\" />"; + component.setId("testId"); + component.setPrimaryStyleName("test-style"); + component.setCaption("test-caption"); + component.setLocale(new Locale("fi", "FI")); + component.setDescription("test-description"); + component.setComponentError(new UserError("<div>test-error</div>", + com.vaadin.server.AbstractErrorMessage.ContentMode.HTML, + ErrorLevel.ERROR)); + component.setImmediate(true); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testReadImmediate() { + // Additional tests for the immediate property, including + // explicit immediate values + String[] design = { "<vaadin7-native-select/>", + "<vaadin7-native-select immediate=\"false\"/>", + "<vaadin7-native-select immediate=\"true\"/>", + "<vaadin7-native-select immediate />" }; + Boolean[] explicitImmediate = { null, Boolean.FALSE, Boolean.TRUE, + Boolean.TRUE }; + boolean[] immediate = { true, false, true, true }; + for (int i = 0; i < design.length; i++) { + component = (AbstractLegacyComponent) Design + .read(new ByteArrayInputStream( + design[i].getBytes(Charset.forName("UTF-8")))); + assertEquals(immediate[i], component.isImmediate()); + assertEquals(explicitImmediate[i], getExplicitImmediate(component)); + } + } + + @Test + public void testExternalIcon() { + String design = "<vaadin7-native-select icon=\"http://example.com/example.gif\"/>"; + component.setIcon( + new ExternalResource("http://example.com/example.gif")); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testThemeIcon() { + String design = "<vaadin7-native-select icon=\"theme://example.gif\"/>"; + component.setIcon(new ThemeResource("example.gif")); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testFileResourceIcon() { + String design = "<vaadin7-native-select icon=\"img/example.gif\"/>"; + component.setIcon(new FileResource(new File("img/example.gif"))); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testWidthAndHeight() { + String design = "<vaadin7-native-select width=\"70%\" height=\"12px\"/>"; + component.setWidth("70%"); + component.setHeight("12px"); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testSizeFull() { + String design = "<vaadin7-native-select size-full />"; + component.setSizeFull(); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testHeightFull() { + String design = "<vaadin7-native-select height-full width=\"20px\"/>"; + component.setHeight("100%"); + component.setWidth("20px"); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testWidthFull() { + String design = "<vaadin7-native-select caption=\"Foo\" caption-as-html width-full height=\"20px\"></vaadin7-native-select>"; + AbstractLegacyComponent component = new NativeSelect(); + component.setCaptionAsHtml(true); + component.setCaption("Foo"); + component.setHeight("20px"); + component.setWidth("100%"); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testResponsive() { + String design = "<vaadin7-native-select responsive />"; + Responsive.makeResponsive(component); + testRead(design, component); + testWrite(design, component); + } + + @Test + public void testResponsiveFalse() { + String design = "<vaadin7-native-select responsive =\"false\"/>"; + // Only test read as the attribute responsive=false would not be written + testRead(design, component); + } + + @Test + public void testReadAlreadyResponsive() { + AbstractComponent component = new Label(); + Responsive.makeResponsive(component); + Element design = createDesign(true); + component.readDesign(design, new DesignContext()); + assertEquals("Component should have only one extension", 1, + component.getExtensions().size()); + } + + @Test + public void testUnknownProperties() { + String design = "<vaadin7-native-select foo=\"bar\"/>"; + + DesignContext context = readAndReturnContext(design); + NativeSelect ns = (NativeSelect) context.getRootComponent(); + assertTrue("Custom attribute was preserved in custom attributes", + context.getCustomAttributes(ns).containsKey("foo")); + + testWrite(ns, design, context); + } + + private Element createDesign(boolean responsive) { + Attributes attributes = new Attributes(); + attributes.put("responsive", responsive); + Element node = new Element(Tag.valueOf("vaadin-label"), "", attributes); + return node; + } + + private Boolean getExplicitImmediate(AbstractLegacyComponent component) { + try { + Field immediate = AbstractLegacyComponent.class + .getDeclaredField("explicitImmediateValue"); + immediate.setAccessible(true); + return (Boolean) immediate.get(component); + } catch (Exception e) { + throw new RuntimeException( + "Getting the field explicitImmediateValue failed."); + } + } +} |