package de.ks.idnadrev.overview; import de.ks.LauncherRunner; import de.ks.fxcontrols.weekview.WeekHelper; import de.ks.idnadrev.entity.Cleanup; import de.ks.idnadrev.entity.Task; import de.ks.persistence.PersistentWork; import de.ks.scheduler.Schedule; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import javax.inject.Inject; import javax.persistence.EntityManager; import java.time.LocalDate; import java.time.LocalTime; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @RunWith(LauncherRunner.class) public class OverviewDSTest { public static final String PROPOSED_THIS_WEEK_DAY = "proposedThisWeekDay"; public static final String PROPOSED_THIS_WEEK = "proposedThisWeek"; public static final String SCHEDULED_TODAY_NOON = "scheduledTodayNoon"; public static final String SCHEDULED_TODAY = "scheduledToday"; @Inject Cleanup cleanup; @Before public void setUp() throws Exception { cleanup.cleanup(); PersistentWork.run(em -> { createTestData(em); }); } protected void createTestData(EntityManager em) { em.persist(new Task("notScheduled")); Schedule schedule = new Schedule(); schedule.setScheduledDate(LocalDate.now()); em.persist(new Task(SCHEDULED_TODAY).setSchedule(schedule)); em.persist(new Task("scheduledTodayButDone").setSchedule(schedule).setFinished(true)); schedule = new Schedule(); schedule.setScheduledDate(LocalDate.now()); schedule.setScheduledTime(LocalTime.of(12, 42)); em.persist(new Task(SCHEDULED_TODAY_NOON).setSchedule(schedule)); schedule = new Schedule(); schedule.setProposedWeek(new WeekHelper().getWeek(LocalDate.now())); schedule.setProposedYear(LocalDate.now().getYear()); em.persist(new Task(PROPOSED_THIS_WEEK).setSchedule(schedule)); em.persist(new Task("proposedThisWeekButDone").setSchedule(schedule).setFinished(true)); schedule = new Schedule(); schedule.setProposedWeek(new WeekHelper().getWeek(LocalDate.now())); schedule.setProposedYear(LocalDate.now().getYear()); schedule.setProposedWeekDay(LocalDate.now().getDayOfWeek()); em.persist(new Task(PROPOSED_THIS_WEEK_DAY).setSchedule(schedule)); schedule = new Schedule(); schedule.setProposedWeek(new WeekHelper().getWeek(LocalDate.now())); schedule.setProposedYear(LocalDate.now().getYear()); schedule.setProposedWeekDay(LocalDate.now().plusDays(1).getDayOfWeek()); em.persist(new Task("proposedOtherWeekDay").setSchedule(schedule)); } @Test public void testProposedTasks() throws Exception { OverviewDS datasource = new OverviewDS(); PersistentWork.run(em -> { List<Task> proposedTasks = datasource.getProposedTasks(em, LocalDate.now()); assertEquals(2, proposedTasks.size()); Set<String> tasknames = proposedTasks.stream().map(t -> t.getName()).collect(Collectors.toSet()); assertTrue(tasknames.contains("proposedThisWeek")); assertTrue(tasknames.contains("proposedThisWeekDay")); }); } @Test public void testScheduledTasks() throws Exception { OverviewDS datasource = new OverviewDS(); PersistentWork.run(em -> { List<Task> proposedTasks = datasource.getScheduledTasks(em, LocalDate.now()); assertEquals(2, proposedTasks.size()); Set<String> tasknames = proposedTasks.stream().map(t -> t.getName()).collect(Collectors.toSet()); assertTrue(tasknames.contains("scheduledTodayNoon")); assertTrue(tasknames.contains("scheduledToday")); }); } }