diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java index b5e5e3bdbc4062678e683e6875336755ee211293..aad24cdcafd882b5dc7288323e7a7358c8400535 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java @@ -19,30 +19,27 @@ public class ProjectDescription { private String descriptionMD; private boolean open; private ArrayList<Link> links; - private ArrayList<String> group; private long timestamp; public ProjectDescription() { } - public ProjectDescription(String id, String name, String description, String project, ArrayList<Link> links, ArrayList<String> group) { + public ProjectDescription(String id, String name, String description, String project, ArrayList<Link> links) { this.id = id; this.student = new StudentIdentifier(project, name); this.descriptionHTML = convertMarkdownToHtml(description); this.descriptionMD = description; this.links = links; - this.group = group; this.timestamp = new Date().getTime(); this.open = true; } - public ProjectDescription(String id, String name, String description, String project, ArrayList<Link> links, ArrayList<String> group, long timestamp, boolean open) { + public ProjectDescription(String id, String name, String description, String project, ArrayList<Link> links, long timestamp, boolean open) { this.id = id; this.student = new StudentIdentifier(project, name); this.descriptionHTML = convertMarkdownToHtml(description); this.descriptionMD = description; this.links = links; - this.group = group; this.timestamp = timestamp; this.open = open; } @@ -100,14 +97,6 @@ public class ProjectDescription { this.links = links; } - public ArrayList<String> getGroup() { - return group; - } - - public void setGroup(ArrayList<String> group) { - this.group = group; - } - public long getTimestamp() { return timestamp; } @@ -125,7 +114,6 @@ public class ProjectDescription { ", descriptionMD='" + descriptionMD + '\'' + ", open=" + open + ", links=" + links + - ", group=" + group + ", timestamp=" + timestamp + '}'; } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java index 1f2be67782a3a27edd8928141af29b8070d1e639..0db2468007ef2a9c24d5b8a12761741688c82d40 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java @@ -168,7 +168,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO { String text = rs.getString("text"); boolean open = rs.getBoolean("open"); - return new ProjectDescription(id,author,text,project,new ArrayList<>(),new ArrayList<>(),timestamp, open); + return new ProjectDescription(id,author,text,project,new ArrayList<>(), timestamp, open); } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java index a6b88a5f7d8ff030bf6c71eab4773372cc43143c..9c3a3539a33e33c24c094e97c4322cad0625f26c 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java @@ -15,16 +15,15 @@ import java.util.ArrayList; public class ProjectDescriptionImpl implements ProjectDescriptionService { - ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); - LinkDAO linkDAO = new LinkDAOImpl(); + private ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); + private LinkDAO linkDAO = new LinkDAOImpl(); @Override public ProjectDescription getProjectbyStudent(StudentIdentifier studentIdentifier) { - //if no description exists, create a new + //if no description exists (when page is opend for the first time), create a new one if(descriptionDAO.getDescription(studentIdentifier)==null){ - //TODO richtige Daten, standartwerte über config? - ProjectDescription description = new ProjectDescription("0", studentIdentifier.getStudentId(), "Hier soll ein Turtorialtext stehen", studentIdentifier.getProjectId(), null, null); + ProjectDescription description = new ProjectDescription("0", studentIdentifier.getStudentId(), "Hier soll ein Turtorialtext stehen", studentIdentifier.getProjectId(), null); descriptionDAO.createDescription(description); } @@ -67,7 +66,7 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService { @Override public boolean checkIfAllDescriptionsClosed(Project project) { - return (descriptionDAO.getOpenDescriptions(project).size() == 0); //TODO Jeder eine desc? + return (descriptionDAO.getOpenDescriptions(project).size() == 0); } @Override diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java index 99bc64222cc3a49942ee5e25eeb5e05a5a0e16d6..bfcf503f12693ece2998ab4908928352ef2a23dc 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java @@ -18,13 +18,13 @@ public class ProjectDescriptionImplDAOTest { private final ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); private final MysqlConnect connection = new MysqlConnect(); - String testId = "-1"; - String testStudent = "testStudent"; - String testDescription = "testDescription"; - String testProjekt = "testProjekt"; - ArrayList<String> testGroup = new ArrayList<>(); + private String testId = "-1"; + private String testStudent = "testStudent"; + private String testDescription = "testDescription"; + private String testProjekt = "testProjekt"; + private ArrayList<String> testGroup = new ArrayList<>(); - ProjectDescription testProjectDescription = new ProjectDescription(testId, testStudent, testDescription, testProjekt, null /*Links are added in Service*/, testGroup); + private ProjectDescription testProjectDescription = new ProjectDescription(testId, testStudent, testDescription, testProjekt, null /*Links are added in Service*/); @Test public void createDescription() { @@ -32,7 +32,6 @@ public class ProjectDescriptionImplDAOTest { connection.connect(); ProjectDescription createDescription = testProjectDescription; - createDescription.getGroup().add("test"); descriptionDAO.createDescription(testProjectDescription); @@ -223,7 +222,7 @@ public class ProjectDescriptionImplDAOTest { String text = rs.getString("text"); boolean open = rs.getBoolean("open"); - return new ProjectDescription(id, author, text, project, new ArrayList<>(), new ArrayList<>(), timestamp, open); + return new ProjectDescription(id, author, text, project, new ArrayList<>(), timestamp, open); } } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..08fed12a66e4607f14f071e120834e6a17e1d6f8 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java @@ -0,0 +1,204 @@ +package unipotsdam.gf.modules.journal.service; + +import org.junit.After; +import org.junit.Test; +import unipotsdam.gf.core.management.Management; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.core.management.user.User; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; +import unipotsdam.gf.modules.journal.model.Link; +import unipotsdam.gf.modules.journal.model.ProjectDescription; +import unipotsdam.gf.modules.journal.model.dao.LinkDAO; +import unipotsdam.gf.modules.journal.model.dao.LinkDAOImpl; +import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAO; +import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAOImpl; + +import java.util.ArrayList; + +import static org.junit.Assert.*; + +public class ProjectDescriptionImplTest { + + private ProjectDescriptionService projectDescriptionService = new ProjectDescriptionImpl(); + + private ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl(); + private LinkDAO linkDAO = new LinkDAOImpl(); + private Management management = new ManagementImpl(); + + private String testId = "-1"; + private String testStudent = "testStudent"; + private String testDescription = "testDescription"; + private String testProject = "testProject"; + + private String testProjectDescription = "testproject"; + private String testName = "testname"; + private String testLink = "https://www.test.de"; + private Link testLinkObj = new Link(testId, testProjectDescription, testName, testLink); + + private ArrayList<Link> linkArrayList = new ArrayList<>(); + + private ProjectDescription testProjectDescriptionObj = new ProjectDescription(testId, testStudent, testDescription, testProject, linkArrayList); + + @After + public void cleanUp() { + StudentIdentifier deleteIdentifier = new StudentIdentifier(testProject, testStudent); + ProjectDescription deleteDescription = descriptionDAO.getDescription(deleteIdentifier); + descriptionDAO.deleteDescription(deleteIdentifier); + + if (deleteDescription != null) { + ArrayList<Link> deleteLinks = linkDAO.getAllLinks(deleteDescription.getId()); + + for (Link l : deleteLinks) { + linkDAO.deleteLink(l.getId()); + } + } + } + + @Test + public void getProjectbyStudent() { + //NO description exists + projectDescriptionService.getProjectbyStudent(new StudentIdentifier(testProject, testStudent)); + + ProjectDescription resProjectDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + String id = resProjectDescription.getId(); + + assertNotNull(resProjectDescription); + assertEquals("Hier soll ein Turtorialtext stehen", resProjectDescription.getDescriptionMD()); + assertEquals(testStudent, resProjectDescription.getStudent().getStudentId()); + assertEquals(testProject, resProjectDescription.getStudent().getProjectId()); + + //description exists + resProjectDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + assertNotNull(resProjectDescription); + assertEquals(id, resProjectDescription.getId()); + assertEquals("Hier soll ein Turtorialtext stehen", resProjectDescription.getDescriptionMD()); + assertEquals(testStudent, resProjectDescription.getStudent().getStudentId()); + assertEquals(testProject, resProjectDescription.getStudent().getProjectId()); + + } + + @Test + public void getProjectbyId() { + + descriptionDAO.createDescription(testProjectDescriptionObj); + String id = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)).getId(); + + testLinkObj.setProjectDescription(id); + linkDAO.addLink(testLinkObj); + + ProjectDescription resProjectDescription = projectDescriptionService.getProjectbyId(id); + + assertNotNull(resProjectDescription); + assertEquals(testDescription, resProjectDescription.getDescriptionMD()); + assertEquals(testStudent, resProjectDescription.getStudent().getStudentId()); + assertEquals(testProject, resProjectDescription.getStudent().getProjectId()); + + ArrayList<Link> links = resProjectDescription.getLinks(); + assertEquals(1, links.size()); + assertEquals(testLink, links.get(0).getLink()); + assertEquals(testName, links.get(0).getName()); + + } + + @Test + public void saveProjectText() { + descriptionDAO.createDescription(testProjectDescriptionObj); + + projectDescriptionService.saveProjectText(new StudentIdentifier(testProject, testStudent), testName); + + ProjectDescription resProjectDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + assertEquals(testName, resProjectDescription.getDescriptionMD()); + + } + + @Test + public void addLink() { + descriptionDAO.createDescription(testProjectDescriptionObj); + ProjectDescription resProjectDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + projectDescriptionService.addLink(resProjectDescription.getId(), testLink, testName); + + ArrayList<Link> resLinks = linkDAO.getAllLinks(resProjectDescription.getId()); + + assertEquals(1, resLinks.size()); + assertEquals(resProjectDescription.getId(), resLinks.get(0).getProjectDescription()); + assertEquals(testName, resLinks.get(0).getName()); + assertEquals(testLink, resLinks.get(0).getLink()); + + } + + @Test + public void deleteLink() { + descriptionDAO.createDescription(testProjectDescriptionObj); + ProjectDescription resProjectDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + testLinkObj.setProjectDescription(resProjectDescription.getId()); + linkDAO.addLink(testLinkObj); + + ArrayList<Link> resLinks = linkDAO.getAllLinks(resProjectDescription.getId()); + + assertEquals(1, resLinks.size()); + + projectDescriptionService.deleteLink(resLinks.get(0).getId()); + + resLinks = linkDAO.getAllLinks(resProjectDescription.getId()); + assertEquals(0, resLinks.size()); + + } + + @Test + public void closeDescription() { + + descriptionDAO.createDescription(testProjectDescriptionObj); + + ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + assertTrue(resDescription.isOpen()); + + projectDescriptionService.closeDescription(resDescription.getId()); + + resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + assertFalse(resDescription.isOpen()); + } + + @Test + public void checkIfAllDescriptionsClosed() { + + descriptionDAO.createDescription(testProjectDescriptionObj); + + Project project = new Project(); + project.setId(testProject); + assertFalse(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + + ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent)); + + descriptionDAO.closeDescription(resDescription.getId()); + + assertTrue(projectDescriptionService.checkIfAllDescriptionsClosed(project)); + + } + + @Test + public void getOpenUserByProject() { + User user = new User("Test", "Test", "test@test.de", true); + String token = management.getUserToken(user); + + Project project = new Project(); + project.setId(testProject); + + testProjectDescriptionObj.getStudent().setStudentId(token); + descriptionDAO.createDescription(testProjectDescriptionObj); + + ArrayList<User> resultUser = projectDescriptionService.getOpenUserByProject(project); + + assertEquals(1, resultUser.size()); + assertEquals(user.getEmail(), resultUser.get(0).getId()); + + StudentIdentifier delUser = new StudentIdentifier(testProject, token); + descriptionDAO.deleteDescription(delUser); + } +} \ No newline at end of file