package de.ks.idnadrev.information.uml; import de.ks.LauncherRunner; import de.ks.activity.ActivityCfg; import de.ks.idnadrev.ActivityTest; import de.ks.idnadrev.entity.Category; import de.ks.idnadrev.entity.Tag; import de.ks.idnadrev.entity.information.UmlDiagramInfo; 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 java.util.List; import java.util.Set; import static org.junit.Assert.*; @RunWith(LauncherRunner.class) public class UmlDiagramActivityTest extends ActivityTest { public static final String UML_DIAGRAM_STRING = "\n" + "Class01 \"1\" *-- \"many\" Class02 : contains\n" + "Class03 o-- Class04 : aggregation\n" + "Class05 --> \"1\" Class06"; private UmlDiagramController controller; @Override protected Class<? extends ActivityCfg> getActivityClass() { return UmlDiagramActivity.class; } @Before public void setUp() throws Exception { controller = activityController.getControllerInstance(UmlDiagramController.class); FXPlatform.invokeLater(() -> controller.getPersistentStoreBack().delete()); } @Override protected void createTestData(EntityManager em) { em.persist(new Category("cat1")); } @Test public void testCreateNew() throws Exception { FXPlatform.invokeLater(() -> { controller.name.setText("test"); controller.content.setText(UML_DIAGRAM_STRING); controller.tagContainerController.addTag("tag1"); controller.categorySelectionController.setSelectedValue(PersistentWork.forName(Category.class, "cat1")); }); FXPlatform.waitForFX(); activityController.waitForTasks(); activityController.save(); activityController.waitForDataSource(); PersistentWork.wrap(() -> { UmlDiagramInfo diagramInfo = PersistentWork.forName(UmlDiagramInfo.class, "test"); assertNotNull(diagramInfo); assertNotNull(diagramInfo.getCategory()); assertEquals("cat1", diagramInfo.getCategory().getName()); Set<Tag> tags = diagramInfo.getTags(); assertEquals(1, tags.size()); Tag tag = tags.iterator().next(); assertEquals("tag1", tag.getName()); assertEquals(UML_DIAGRAM_STRING, diagramInfo.getContent()); }); } @Test public void testEdit() throws Exception { UmlDiagramDS datasource = (UmlDiagramDS) store.getDatasource(); UmlDiagramInfo model = PersistentWork.read(em -> { UmlDiagramInfo textInfo = new UmlDiagramInfo("test").setContent(UML_DIAGRAM_STRING); textInfo.addTag("tag"); Category testCategory = new Category("testCategory"); em.persist(testCategory); textInfo.setCategory(testCategory); em.persist(textInfo); return textInfo; }); datasource.setLoadingHint(model); activityController.reload(); activityController.waitForDataSource(); assertEquals("test", controller.name.getText()); assertEquals(UML_DIAGRAM_STRING, controller.content.getText()); assertEquals("testCategory", controller.categorySelectionController.getInput().getText()); assertTrue(controller.tagContainerController.getCurrentTags().contains("tag")); FXPlatform.invokeLater(() -> controller.content.setText("other")); activityController.save(); activityController.waitForDataSource(); PersistentWork.wrap(() -> { List<UmlDiagramInfo> from = PersistentWork.from(UmlDiagramInfo.class); assertEquals(1, from.size()); UmlDiagramInfo info = from.get(0); assertEquals("other", info.getContent()); }); } }