package de.ks.idnadrev.overview; import de.ks.LauncherRunner; import de.ks.activity.ActivityCfg; import de.ks.idnadrev.ActivityTest; import de.ks.idnadrev.entity.Context; import de.ks.idnadrev.entity.Task; import de.ks.idnadrev.entity.Thought; import de.ks.persistence.PersistentWork; import de.ks.util.FXPlatform; import javafx.collections.ObservableList; import org.hamcrest.Matchers; import org.junit.Test; import org.junit.runner.RunWith; import javax.persistence.EntityManager; import java.time.Duration; import java.util.List; import static org.junit.Assert.*; @RunWith(LauncherRunner.class) public class OverviewActivityTest extends ActivityTest { @Override protected void createTestData(EntityManager em) { new OverviewDSTest().createTestData(em); Context context = new Context("context"); em.persist(context); em.persist(new Task("task1").setContext(context).setEstimatedTime(Duration.ofMinutes(42))); em.persist(new Task("task2").setContext(context).setEstimatedTime(Duration.ofMinutes(12))); } @Override protected Class<? extends ActivityCfg> getActivityClass() { return OverviewActivity.class; } @Test public void testContextFilling() throws Exception { OverviewContextualController contextController = activityController.getControllerInstance(OverviewContextualController.class); FXPlatform.invokeLater(() -> contextController.context.getSelectionModel().select("context")); activityController.waitForTasks(); FXPlatform.waitForFX(); ObservableList<Task> items = contextController.contextTasks.getItems(); assertEquals(2, items.size()); assertEquals("task2", items.get(0).getName()); assertEquals("task1", items.get(1).getName()); } @Test public void testScheduledFilling() throws Exception { OverviewScheduledController scheduledController = activityController.getControllerInstance(OverviewScheduledController.class); ObservableList<Task> items = scheduledController.scheduledTasks.getItems(); assertEquals(2, items.size()); assertEquals(OverviewDSTest.SCHEDULED_TODAY, items.get(0).getName()); assertEquals(OverviewDSTest.SCHEDULED_TODAY_NOON, items.get(1).getName()); items = scheduledController.proposedTasks.getItems(); assertEquals(2, items.size()); assertEquals(OverviewDSTest.PROPOSED_THIS_WEEK, items.get(0).getName()); assertEquals(OverviewDSTest.PROPOSED_THIS_WEEK_DAY, items.get(1).getName()); } @Test public void testThoughtCreation() throws Exception { OverviewAddThoughtController addThoughtController = activityController.getControllerInstance(OverviewAddThoughtController.class); assertTrue(addThoughtController.save.isDisabled()); FXPlatform.invokeLater(() -> { addThoughtController.name.setText("testThought"); addThoughtController.description.setText("One arrogant bastard please!"); addThoughtController.onSave(); }); activityController.waitForTasks(); FXPlatform.waitForFX(); assertEquals("", addThoughtController.name.getText()); assertEquals("", addThoughtController.description.getText()); List<Thought> thoughts = PersistentWork.from(Thought.class); assertEquals(1, thoughts.size()); assertEquals("testThought", thoughts.get(0).getName()); assertThat(thoughts.get(0).getDescription(), Matchers.containsString("bastard")); FXPlatform.invokeLater(() -> addThoughtController.name.setText("test")); FXPlatform.waitForFX(); assertFalse(addThoughtController.save.isDisabled()); FXPlatform.invokeLater(() -> addThoughtController.name.setText("testThought")); FXPlatform.waitForFX(); assertTrue(addThoughtController.save.isDisabled()); } }