You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ButtonDeclarativeTest.java 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. /*
  2. * Copyright 2000-2016 Vaadin Ltd.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  5. * use this file except in compliance with the License. You may obtain a copy of
  6. * the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  12. * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  13. * License for the specific language governing permissions and limitations under
  14. * the License.
  15. */
  16. package com.vaadin.tests.server.component.button;
  17. import org.jsoup.nodes.Element;
  18. import org.jsoup.parser.Tag;
  19. import org.junit.Test;
  20. import com.vaadin.event.ShortcutAction.KeyCode;
  21. import com.vaadin.event.ShortcutAction.ModifierKey;
  22. import com.vaadin.tests.design.DeclarativeTestBase;
  23. import com.vaadin.ui.Button;
  24. import com.vaadin.ui.NativeButton;
  25. import com.vaadin.ui.declarative.DesignContext;
  26. /**
  27. * Tests declarative support for implementations of {@link Button} and
  28. * {@link NativeButton}.
  29. *
  30. * @since 7.4
  31. * @author Vaadin Ltd
  32. */
  33. public class ButtonDeclarativeTest extends DeclarativeTestBase<Button> {
  34. @Test
  35. public void testEmptyPlainText() {
  36. String design = "<vaadin-button plain-text></vaadin-button>";
  37. testButtonAndNativeButton(design, false, "");
  38. }
  39. @Test
  40. public void testPlainTextCaption() {
  41. String design = "<vaadin-button plain-text>Click</vaadin-button>";
  42. testButtonAndNativeButton(design, false, "Click");
  43. }
  44. @Test
  45. public void testEmptyHtml() {
  46. String design = "<vaadin-button />";
  47. testButtonAndNativeButton(design, true, "");
  48. }
  49. @Test
  50. public void testHtmlCaption() {
  51. String design = "<vaadin-button><b>Click</b></vaadin-button>";
  52. testButtonAndNativeButton(design, true, "<b>Click</b>");
  53. }
  54. @Test
  55. public void testWithCaptionAttribute() {
  56. // The caption attribute should be ignored
  57. String design = "<vaadin-button caption=Caption>Click</vaadin-button>";
  58. String expectedWritten = "<vaadin-button>Click</vaadin-button>";
  59. testButtonAndNativeButton(design, true, "Click", expectedWritten);
  60. }
  61. @Test
  62. public void testWithOnlyCaptionAttribute() {
  63. String design = "<vaadin-button caption=Click/>";
  64. String expectedWritten = "<vaadin-button/>";
  65. testButtonAndNativeButton(design, true, "", expectedWritten);
  66. }
  67. @Test
  68. public void testHtmlEntitiesInCaption() {
  69. String designPlainText = "<vaadin-button plain-text=\"true\">&gt; One</vaadin-button>";
  70. String expectedCaptionPlainText = "> One";
  71. Button read = read(designPlainText);
  72. assertEquals(expectedCaptionPlainText, read.getCaption());
  73. designPlainText = designPlainText.replace("vaadin-button",
  74. "vaadin-native-button");
  75. Button nativeButton = read(designPlainText);
  76. assertEquals(expectedCaptionPlainText,
  77. nativeButton.getCaption());
  78. String designHtml = "<vaadin-button>&gt; One</vaadin-button>";
  79. String expectedCaptionHtml = "&gt; One";
  80. read = read(designHtml);
  81. assertEquals(expectedCaptionHtml, read.getCaption());
  82. designHtml = designHtml.replace("vaadin-button",
  83. "vaadin-native-button");
  84. nativeButton = read(designHtml);
  85. assertEquals(expectedCaptionHtml, nativeButton.getCaption());
  86. read = new Button("&amp; Test");
  87. read.setCaptionAsHtml(true);
  88. Element root = new Element(Tag.valueOf("vaadin-button"), "");
  89. read.writeDesign(root, new DesignContext());
  90. assertEquals("&amp; Test", root.html());
  91. read.setCaptionAsHtml(false);
  92. root = new Element(Tag.valueOf("vaadin-button"), "");
  93. read.writeDesign(root, new DesignContext());
  94. assertEquals("&amp;amp; Test", root.html());
  95. }
  96. public void testButtonAndNativeButton(String design, boolean html,
  97. String caption) {
  98. testButtonAndNativeButton(design, html, caption, design);
  99. }
  100. public void testButtonAndNativeButton(String design, boolean html,
  101. String caption, String expectedWritten) {
  102. // Test Button
  103. Button b = new Button();
  104. b.setCaptionAsHtml(html);
  105. b.setCaption(caption);
  106. testRead(expectedWritten, b);
  107. testWrite(expectedWritten, b);
  108. // Test NativeButton
  109. design = design.replace("vaadin-button", "vaadin-native-button");
  110. expectedWritten = expectedWritten.replace("vaadin-button",
  111. "vaadin-native-button");
  112. NativeButton nb = new NativeButton();
  113. nb.setCaptionAsHtml(html);
  114. nb.setCaption(caption);
  115. testRead(expectedWritten, nb);
  116. testWrite(expectedWritten, nb);
  117. }
  118. @Test
  119. public void testAttributes() {
  120. String design = "<vaadin-button tabindex=3 plain-text icon-alt=OK "
  121. + "click-shortcut=shift-ctrl-o></vaadin-button>";
  122. Button b = new Button("");
  123. b.setTabIndex(3);
  124. b.setIconAlternateText("OK");
  125. b.setClickShortcut(KeyCode.O, ModifierKey.CTRL, ModifierKey.SHIFT);
  126. testRead(design, b);
  127. testWrite(design, b);
  128. }
  129. }