1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
|
package com.vaadin.tests.smoke;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.core.IsNot.not;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.openqa.selenium.WebElement;
import com.vaadin.testbench.By;
import com.vaadin.testbench.elements.CalendarElement;
import com.vaadin.tests.tb3.MultiBrowserTest;
public class CalendarSmokeTest extends MultiBrowserTest {
@Test
public void calendarSmokeTest() {
openTestURL();
smokeTest();
}
@Test
public void readOnlyCalendarSmokeTest() {
openTestURL("restartApplication&readonly");
smokeTest();
}
private void smokeTest() {
openWeekView();
assertTrue("Calendar wasn't in week view.",
getCalendar().hasWeekView());
reload();
openDayView();
assertTrue("Calendar wasn't in day view.", getCalendar().hasDayView());
reload();
openWeekView();
getCalendar().getDayHeaders().get(0).click();
assertTrue("Calendar wasn't in day view.", getCalendar().hasDayView());
reload();
openWeekView();
String firstDayOfCurrentWeek = getVisibleFirstDay();
getCalendar().next();
String firstDayOfNextWeek = getVisibleFirstDay();
assertThat("Week didn't change.", firstDayOfCurrentWeek,
is(not(firstDayOfNextWeek)));
reload();
openDayView();
String currentDay = getVisibleFirstDay();
getCalendar().next();
String nextDay = getVisibleFirstDay();
assertThat("Day didn't change.", currentDay, is(not(nextDay)));
reload();
openDayView();
currentDay = getVisibleFirstDay();
getCalendar().back();
String previousDay = getVisibleFirstDay();
assertThat("Day didn't change.", currentDay, is(not(previousDay)));
reload();
WebElement dayWithEvents = getFirstDayWithEvents();
assertThat("Incorrect event count.",
getVisibleEvents(dayWithEvents).size(), is(2));
toggleExpandEvents(dayWithEvents).click();
assertThat("Incorrect event count.",
getVisibleEvents(dayWithEvents).size(), is(4));
toggleExpandEvents(dayWithEvents).click();
assertThat("Incorrect event count.",
getVisibleEvents(dayWithEvents).size(), is(2));
}
private CalendarElement getCalendar() {
return $(CalendarElement.class).first();
}
private void openDayView() {
getCalendar().getDayNumbers().get(0).click();
}
private void openWeekView() {
getCalendar().getWeekNumbers().get(0).click();
}
private String getVisibleFirstDay() {
return getCalendar().getDayHeaders().get(0).getText();
}
private WebElement getFirstDayWithEvents() {
for (WebElement monthDay : getCalendar().getMonthDays()) {
if (!getVisibleEvents(monthDay).isEmpty()) {
return monthDay;
}
}
return null;
}
private void reload() {
getDriver().navigate().refresh();
}
private WebElement toggleExpandEvents(WebElement dayWithEvents) {
return dayWithEvents
.findElement(By.className("v-calendar-bottom-spacer"));
}
private List<WebElement> getVisibleEvents(WebElement dayWithEvents) {
return dayWithEvents.findElements(By.className("v-calendar-event"));
}
}
|