From a8f095db0663f92b594666d8d8d9881fa1b55aec Mon Sep 17 00:00:00 2001 From: Markus Kreth Date: Mon, 17 Dec 2018 01:23:00 +0100 Subject: [PATCH] Events tested. --- .../VaadinClubhelperApplicationTests.java | 95 ++++++++++++++++++- 1 file changed, 92 insertions(+), 3 deletions(-) diff --git a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/VaadinClubhelperApplicationTests.java b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/VaadinClubhelperApplicationTests.java index 13eae30..5d9de56 100644 --- a/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/VaadinClubhelperApplicationTests.java +++ b/src/test/java/de/kreth/vaadin/clubhelper/vaadinclubhelper/ui/tests/VaadinClubhelperApplicationTests.java @@ -1,10 +1,20 @@ package de.kreth.vaadin.clubhelper.vaadinclubhelper.ui.tests; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; + import java.awt.GraphicsEnvironment; import java.time.YearMonth; +import java.time.ZonedDateTime; import java.time.format.TextStyle; +import java.util.Arrays; +import java.util.List; import java.util.Locale; +import javax.persistence.EntityManager; +import javax.persistence.EntityTransaction; + import org.hamcrest.Matchers; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; @@ -16,10 +26,16 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.WebDriverWait; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.LocalServerPort; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEvent; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.ClubEventBuilder; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.GroupDef; +import de.kreth.vaadin.clubhelper.vaadinclubhelper.data.Person; + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @AutoConfigureWebTestClient public class VaadinClubhelperApplicationTests { @@ -28,7 +44,11 @@ public class VaadinClubhelperApplicationTests { @LocalServerPort int port; + @Autowired + EntityManager em; + private WebDriver driver; + private ZonedDateTime now; @BeforeAll static void setupDriverConfiguration() { @@ -38,12 +58,65 @@ public class VaadinClubhelperApplicationTests { } options = new ChromeOptions(); - options.setHeadless(!GraphicsEnvironment.isHeadless()); + options.setHeadless(GraphicsEnvironment.isHeadless()); } @BeforeEach void setUp() throws Exception { + now = ZonedDateTime.now(); + + EntityTransaction tx = em.getTransaction(); + tx.begin(); + + GroupDef g1 = new GroupDef(); + g1.setName("ADMIN"); + GroupDef g2 = new GroupDef(); + g1.setName("Wettkämpfer"); + GroupDef g3 = new GroupDef(); + g1.setName("ACTIVE"); + + em.persist(g1); + em.persist(g2); + em.persist(g3); + + ClubEvent ev = new ClubEventBuilder().withAllDay(true).withId("id").withCaption("caption") + .withDescription("description").withiCalUID("iCalUID").withLocation("location") + .withOrganizerDisplayName("mtv_allgemein").withStart(now).withEnd(now.plusDays(2)).build(); + + em.persist(ev); + + ZonedDateTime holidayStart; + ZonedDateTime holidayEnd; + + if (now.getDayOfMonth() >= 15) { + holidayStart = now.minusDays(30); + holidayEnd = now.minusDays(1); + } else { + + holidayStart = now.plusDays(1); + holidayEnd = now.plusDays(30); + } + + ClubEvent holiday = new ClubEventBuilder().withAllDay(true).withId("holiday").withCaption("holiday") + .withDescription("holiday").withiCalUID("iCalUID").withLocation("") + .withOrganizerDisplayName("Schulferien").withStart(holidayStart).withEnd(holidayEnd).build(); + + em.persist(holiday); + + Person p = new Person(); + p.setPrename("prename"); + p.setSurname("surname"); + p.setBirth(now.minusYears(13).toLocalDate()); + p.setUsername("username"); + p.setPassword("password"); + + List persongroups = Arrays.asList(g1, g2, g3); + p.setPersongroups(persongroups); + em.persist(p); + + tx.commit(); + driver = new ChromeDriver(options); } @@ -55,7 +128,7 @@ public class VaadinClubhelperApplicationTests { } @Test - public void seleniumWebWorkflow() { + public void verifyMonthViewComplete() { WebDriverWait driverWait = new WebDriverWait(driver, 45L); driver.get("http://localhost:" + port); @@ -65,6 +138,22 @@ public class VaadinClubhelperApplicationTests { WebElement monthLabel = driver.findElement(By.id("calendar.month")); String month = monthLabel.getText(); String expected = YearMonth.now().getMonth().getDisplayName(TextStyle.FULL_STANDALONE, Locale.getDefault()); - org.hamcrest.MatcherAssert.assertThat(month, Matchers.containsString(expected)); + assertThat(month, containsString(expected)); + + List days = driver.findElements(By.className("v-calendar-day-number")); + assertThat(days, Matchers.hasSize(Matchers.greaterThanOrEqualTo(now.getMonth().length(true)))); + + WebElement today = findElementWithContent(String.valueOf(now.getDayOfMonth())); + WebElement parentElement = today.findElement(By.xpath("./..")); + WebElement todayContent = parentElement.findElement(By.className("v-calendar-event")); + assertEquals("caption", todayContent.getText()); + + List allEventElements = driver.findElements(By.className("v-calendar-event")); + assertThat(allEventElements, Matchers.hasSize(Matchers.greaterThanOrEqualTo(16))); + + } + + public WebElement findElementWithContent(String content) { + return driver.findElement(By.xpath(String.format("//*[contains(text(), '%s')]", content))); } }