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.

DelayedViewLeaveConfirmationTest.java 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package com.vaadin.tests.navigator;
  2. import static org.junit.Assert.assertEquals;
  3. import org.junit.Test;
  4. import com.vaadin.testbench.elements.ButtonElement;
  5. import com.vaadin.testbench.elements.LabelElement;
  6. import com.vaadin.testbench.elements.TextFieldElement;
  7. import com.vaadin.testbench.elements.WindowElement;
  8. import com.vaadin.tests.tb3.SingleBrowserTest;
  9. public class DelayedViewLeaveConfirmationTest extends SingleBrowserTest {
  10. @Test
  11. public void navigateAwayWithoutChanges() {
  12. openMainView();
  13. navigateToOtherView();
  14. assertOnOtherView();
  15. }
  16. @Test
  17. public void cancelNavigateAwayWithChanges() {
  18. openMainView();
  19. updateValue();
  20. navigateToOtherView();
  21. assertOnMainView();
  22. chooseToStay();
  23. assertOnMainView();
  24. }
  25. @Test
  26. public void confirmNavigateAwayWithChanges() {
  27. openMainView();
  28. updateValue();
  29. navigateToOtherView();
  30. assertOnMainView();
  31. chooseToLeave();
  32. assertOnOtherView();
  33. }
  34. @Test
  35. public void confirmLogoutWithChanges() {
  36. openMainView();
  37. updateValue();
  38. logout();
  39. assertOnMainView();
  40. chooseToLeave();
  41. assertLoggedOut();
  42. }
  43. @Test
  44. public void cancelLogoutWithChanges() {
  45. openMainView();
  46. updateValue();
  47. logout();
  48. assertOnMainView();
  49. chooseToStay();
  50. assertOnMainView();
  51. }
  52. @Test
  53. public void logoutWithoutChanges() {
  54. openMainView();
  55. getLogout().click();
  56. assertLoggedOut();
  57. }
  58. private void openMainView() {
  59. String url = getTestURL(DelayedViewLeaveConfirmation.class);
  60. url += "#!main";
  61. driver.get(url);
  62. }
  63. private void navigateToOtherView() {
  64. getNavigateAway().click();
  65. }
  66. private void logout() {
  67. getLogout().click();
  68. }
  69. private void assertOnOtherView() {
  70. assertEquals("Just another view",
  71. $(LabelElement.class).first().getText());
  72. }
  73. private void assertOnMainView() {
  74. assertEquals("Saved value", $(LabelElement.class).first().getCaption());
  75. }
  76. private void assertLoggedOut() {
  77. assertEquals("You have been logged out",
  78. $(LabelElement.class).first().getText());
  79. }
  80. private void chooseToStay() {
  81. $(WindowElement.class).first().$(ButtonElement.class).id("stay")
  82. .click();
  83. }
  84. private void chooseToLeave() {
  85. $(WindowElement.class).first().$(ButtonElement.class).id("leave")
  86. .click();
  87. }
  88. private void updateValue() {
  89. TextFieldElement input = $(TextFieldElement.class).id("input");
  90. input.setValue(input.getValue() + "-upd");
  91. }
  92. private ButtonElement getNavigateAway() {
  93. return $(ButtonElement.class).id("navigateAway");
  94. }
  95. private ButtonElement getLogout() {
  96. return $(ButtonElement.class).id("logout");
  97. }
  98. }