--- a
+++ b/src/test/java/net/timbusproject/legalmanagement/test/TestProjectManager.java
@@ -0,0 +1,206 @@
+package net.timbusproject.legalmanagement.test;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import net.timbusproject.legalmanagement.data.LegalDocRead;
+import net.timbusproject.legalmanagement.data.LegalDocument;
+import net.timbusproject.legalmanagement.data.Project;
+import net.timbusproject.legalmanagement.tools.ProjectManager;
+
+import org.hibernate.Query;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
+import org.hibernate.dialect.HSQLDialect;
+import org.hibernate.service.ServiceRegistryBuilder;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+public class TestProjectManager extends TestCase {
+
+ int projectCount = 5;
+ int legalDocCount = 10;
+ String userName = "testUser";
+
+ @Before
+ public void setUp() throws Exception {
+
+ Configuration configuration = new Configuration();
+ configuration.setProperty(Environment.DRIVER, "org.hsqldb.jdbcDriver");
+ configuration.setProperty(Environment.URL, "jdbc:hsqldb:mem:LLMPersistenceTest");
+ configuration.setProperty(Environment.USER, "sa");
+ configuration.setProperty(Environment.DIALECT, HSQLDialect.class.getName());
+ configuration.setProperty(Environment.SHOW_SQL, "true");
+ configuration.setProperty(Environment.POOL_SIZE, "1");
+ configuration.setProperty(Environment.HBM2DDL_AUTO, "create");
+
+ configuration.setProperty("javax.persistence.validation.mode", "NONE");
+ String filename = new String("datamapping.hbm.xml");
+ configuration.addInputStream(this.getClass().getClassLoader().getResourceAsStream(filename));
+ ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder().applySettings(configuration
+ .getProperties());
+ SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistryBuilder.buildServiceRegistry());
+ ProjectManager.setSessionFactory(sessionFactory);
+
+ Session session = sessionFactory.openSession();
+ session.beginTransaction();
+
+ // generate and store Projects
+ for (int i = 0; i < projectCount; i++) {
+ long nameExtension = (long) (i * 10 + 9 * Math.random());
+ Project project = new Project();
+ project.setUser(userName);
+ project.setName("testProject" + nameExtension);
+ session.save(project);
+ }
+
+ // generate and store LegalDocs
+ for (int i = 0; i < legalDocCount; i++) {
+ long nameExtension = (long) (i * 10 + 9 * Math.random());
+
+ String docId = "testdoc" + nameExtension;
+ LegalDocument legalDoc = new LegalDocument();
+ legalDoc.setDocId(docId);
+ session.save(legalDoc);
+ }
+
+ session.getTransaction().commit();
+
+
+
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ }
+
+ public void testProjectFactory() {
+ ProjectManager pm1 = ProjectManager.getprojectManager();
+ ProjectManager pm2 = ProjectManager.getprojectManager();
+ assertNotNull(pm1);
+ assertNotNull(pm2);
+ assertEquals(pm1, pm2);
+ assertEquals(ProjectManager.class,pm1.getClass());
+ assertEquals(ProjectManager.class,pm2.getClass());
+ }
+
+ public void testGenerateProject() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project = pm.generateProject("projecteins",userName);
+ assertEquals("projecteins",project.getName());
+ assertEquals(userName,project.getUser());
+ }
+
+ public void testAddProject() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project = pm.generateProject("projecteins",userName);
+ assertEquals("projecteins",project.getName());
+ assertEquals(userName,project.getUser());
+ pm.addProject(project);
+ Project project1 = pm.getProject(project.getId());
+ assertEquals(project.getName(),project1.getName());
+ }
+
+
+ public void testEditProject() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project1 = pm.getProject(addLegalReadToProject());
+ Long projectID = project1.getId();
+ Project newProject = new Project();
+ newProject.setName("helloProject");
+ newProject.setDescription("another Project Description for now");
+ assertFalse(newProject.getName().equals(project1.getName()));
+ assertFalse(newProject.getDescription().equals(project1.getDescription()));
+ project1 = pm.editProject(project1.getId(), newProject);
+ assertEquals(newProject.getName(), project1.getName());
+ assertEquals(newProject.getDescription(), project1.getDescription());
+ assertEquals(projectID, project1.getId());
+ project1 = pm.getProject(projectID);
+ assertEquals(newProject.getName(), project1.getName());
+ assertEquals(newProject.getDescription(), project1.getDescription());
+ assertEquals(projectID, project1.getId());
+
+// Session session = ProjectManager.getSessionFactory().openSession();
+// assertEquals(session.getNamedQuery("LegalDocs.findAll").list().size(), project1.getLegalDocsRead().size());
+ }
+
+ public void testGetProject() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ List<Project> projects = pm.getProjects(userName);
+ Project project = projects.get(0);
+ Project directProject = pm.getProject(project.getId());
+ assertEquals(directProject.getId(),project.getId());
+ assertEquals(project.getId(), directProject.getId());
+ }
+
+ public void testDeleteProject(){
+ ProjectManager pm = ProjectManager.getprojectManager();
+ List<Project> projects = pm.getProjects(userName);
+ pm.deleteProject(projects.get(0).getId());
+ assertEquals(projects.size()-1, pm.getProjects(userName).size());
+ assertNull(pm.getProject(projects.get(0).getId()));
+ }
+
+ public void testDeleteLegalDocsRead() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project1 = pm.getProject(addLegalReadToProject());
+ long proj_id = project1.getId();
+ int numberOfLegalDocs = project1.getLegalDocsRead().size();
+ assertTrue(0 < numberOfLegalDocs);
+ HashSet<LegalDocument> legalDocs = new HashSet<LegalDocument>();
+ legalDocs.add(project1.getLegalDocsRead().iterator().next().getDocument());
+ ProjectManager.getprojectManager().removeDocsFromProject(project1, legalDocs);
+ assertEquals(numberOfLegalDocs-1, project1.getLegalDocsRead().size());
+ legalDocs = new HashSet<LegalDocument>();
+ for (Iterator<LegalDocRead> iter = project1.getLegalDocsRead().iterator(); iter.hasNext();) {
+ legalDocs.add(iter.next().getDocument());
+ }
+ ProjectManager.getprojectManager().removeDocsFromProject(project1, legalDocs);
+ Project project = pm.getProject(proj_id);
+ assertEquals(0, project.getLegalDocsRead().size());
+ }
+
+ public void testAddAssessment() {
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project = (Project) pm.getProjects(userName).get(0);
+ assertEquals(0, project.getAssessments().size());
+ project = pm.addAssessment(project.getId(), "Funny new Text");
+ assertEquals(1, project.getAssessments().size());
+ assertEquals(1, pm.getProject(project.getId()).getAssessments().size());
+ }
+
+ public void testChangeTime() throws InterruptedException{
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project1 = pm.getProject(addLegalReadToProject());
+ long proj_id = project1.getId();
+ LegalDocRead legalDocRead = project1.getLegalDocsRead().iterator().next();
+ Date changed = legalDocRead.getChangeDate();
+ Thread.sleep(1000);
+ legalDocRead = pm.markDocAsRead(project1, legalDocRead.getDocument());
+ assertFalse(changed.equals(legalDocRead.getChangeDate()));
+ }
+
+ private long addLegalReadToProject(){
+ ProjectManager pm = ProjectManager.getprojectManager();
+ Project project = pm.generateProject("projecteins",userName);
+ pm.addProject(project);
+ Session session = ProjectManager.getSessionFactory().openSession();
+ Query query = session.getNamedQuery("LegalDocs.findAll");
+ List<LegalDocument> legalDocs = query.list();
+ pm.addDocsToProject(project, new HashSet<LegalDocument>(legalDocs));
+ return project.getId();
+ }
+
+}