package de.ks.idnadrev.information.view; import de.ks.LauncherRunner; import de.ks.activity.ActivityCfg; import de.ks.executor.group.LastTextChange; import de.ks.idnadrev.ActivityTest; import de.ks.idnadrev.entity.Category; import de.ks.idnadrev.entity.Tag; import de.ks.idnadrev.entity.information.TextInfo; import de.ks.persistence.PersistentWork; import de.ks.util.FXPlatform; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import javax.persistence.EntityManager; import static org.junit.Assert.assertEquals; @RunWith(LauncherRunner.class) public class InformationOverviewActivityTest extends ActivityTest { private InformationListView listView; @Override protected Class<? extends ActivityCfg> getActivityClass() { return InformationOverviewActivity.class; } @Before public void setUp() throws Exception { listView = activityController.getControllerInstance(InformationListView.class); } @Override protected void createTestData(EntityManager em) { for (int i = 0; i < 5; i++) { Tag tag = new Tag("tag" + i); Category category = new Category("category" + i); TextInfo info = new TextInfo("info" + i); info.addTag(tag); info.setCategory(category); PersistentWork.persist(tag, category, info); } } @Test public void testFiltering() throws Exception { expectItemCount(5); FXPlatform.invokeLater(() -> listView.tagContainerController.addTag("tag1")); activityController.waitForDataSource(); expectItemCount(1); expectItem(0, "info1"); FXPlatform.invokeLater(() -> listView.tagContainerController.removeTag("tag1")); activityController.waitForDataSource(); expectItemCount(5); FXPlatform.invokeLater(() -> listView.categorySelectionController.getInput().setText("category3")); Thread.sleep(LastTextChange.WAIT_TIME + 150); activityController.waitForDataSource(); FXPlatform.waitForFX(); expectItemCount(1); expectItem(0, "info3"); FXPlatform.invokeLater(() -> listView.categorySelectionController.getInput().setText("")); FXPlatform.invokeLater(() -> listView.nameSearch.setText("4")); Thread.sleep(LastTextChange.WAIT_TIME + 150); activityController.waitForDataSource(); FXPlatform.waitForFX(); expectItemCount(1); expectItem(0, "info4"); } private void expectItemCount(int expected) { assertEquals(expected, listView.informationList.getItems().size()); } private void expectItem(int index, String name) { InformationPreviewItem item = listView.informationList.getItems().get(index); assertEquals(name, item.getName()); } }