diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java index 23fcd996747238f7c86b96240b06b22e28424fe4..9e9d1a7d6c8834de87d11d0823734f8bc202ff52 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java @@ -18,7 +18,7 @@ import java.util.ArrayList; public class JournalServiceImpl implements JournalService { private final Logger log = LoggerFactory.getLogger(JournalServiceImpl.class); - JournalDAO journalDAO = new JournalDAOImpl(); + private JournalDAO journalDAO = new JournalDAOImpl(); @Override public Journal getJournal(String id) { @@ -45,7 +45,6 @@ public class JournalServiceImpl implements JournalService { } //If Visibility Group, show if student is in group and filter allows it - //TODO: project != Group, for testing ok, change for real Service if (j.getVisibility() == Visibility.GROUP && j.getStudentIdentifier().getProjectId().equals(project) && filter == JournalFilter.ALL) { result.add(j); } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..05ce97fb48f7880edf0b40c40b79be515661bc81 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java @@ -0,0 +1,212 @@ +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.Journal; +import unipotsdam.gf.modules.journal.model.Visibility; +import unipotsdam.gf.modules.journal.model.dao.JournalDAO; +import unipotsdam.gf.modules.journal.model.dao.JournalDAOImpl; +import unipotsdam.gf.modules.peer2peerfeedback.Category; + +import java.util.ArrayList; + +import static org.junit.Assert.*; + +public class JournalServiceImplTest { + + private final String testId = "-1"; + private final String testStudent = "testStudent"; + private final String testProject = "testProject"; + private final String testEntry = "This is a Test"; + private final Visibility testVisibility = Visibility.ALL; + private final Category testCategory = Category.TITEL; + private final Journal testJournal = new Journal(testId, new StudentIdentifier(testProject, testStudent), testEntry, testVisibility, testCategory); + private JournalService journalService = new JournalServiceImpl(); + private JournalDAO journalDAO = new JournalDAOImpl(); + private Management management = new ManagementImpl(); + + @After + public void cleanUp() { + + ArrayList<Journal> deleteJournals = journalDAO.getAllByProject(testProject, testStudent); + + for (Journal j : deleteJournals) { + journalDAO.deleteJournal(j.getId()); + } + } + + @Test + public void getJournal() { + + journalDAO.createJournal(testJournal); + + //get id of added Journal + String journalID = journalDAO.getAllByProject(testProject, testStudent).get(0).getId(); + + Journal resultJournal = journalService.getJournal(journalID); + + assertNotNull(resultJournal); + + assertEquals(resultJournal.getStudentIdentifier().getStudentId(), testStudent); + assertEquals(resultJournal.getStudentIdentifier().getProjectId(), testProject); + assertEquals(resultJournal.getEntryMD(), testEntry); + assertEquals(resultJournal.getId(), journalID); + assertEquals(resultJournal.getVisibility(), testVisibility); + assertEquals(resultJournal.getCategory(), testCategory); + + } + + @Test + public void getAllJournalsSi() { + + journalDAO.createJournal(testJournal); + journalDAO.createJournal(testJournal); + journalDAO.createJournal(testJournal); + testJournal.setStudentIdentifier(new StudentIdentifier("a", "b")); + journalDAO.createJournal(testJournal); + + ArrayList<Journal> resultJurnals = journalService.getAllJournals(testStudent, testProject); + + assertEquals(3, resultJurnals.size()); + + //Delete extra Journal + String jId = journalDAO.getAllByProject("a", "b").get(0).getId(); + journalDAO.deleteJournal(jId); + } + + @Test + public void getAllJournalsFilter() { + journalDAO.createJournal(testJournal); + testJournal.setVisibility(Visibility.MINE); + journalDAO.createJournal(testJournal); + testJournal.setVisibility(Visibility.GROUP); + journalDAO.createJournal(testJournal); + testJournal.setStudentIdentifier(new StudentIdentifier(testProject, "b")); + testJournal.setVisibility(Visibility.ALL); + journalDAO.createJournal(testJournal); + + ArrayList<Journal> resultJournals = journalService.getAllJournals("b", testProject); + + assertEquals(3, resultJournals.size()); + + //Delete extra Journal + String jId = journalDAO.getAllByProject(testProject, "b").get(0).getId(); + journalDAO.deleteJournal(jId); + + } + + @Test + public void saveJournal() { + //Create new + + journalService.saveJournal("0",testStudent,testProject,testEntry,testVisibility.toString(),testVisibility.toString()); + + String journalID = journalDAO.getAllByProject(testProject, testStudent).get(0).getId(); + + Journal resultJournal = journalDAO.getJournal(journalID); + + assertNotNull(resultJournal); + + assertEquals(resultJournal.getStudentIdentifier().getStudentId(), testStudent); + assertEquals(resultJournal.getStudentIdentifier().getProjectId(), testProject); + assertEquals(resultJournal.getEntryMD(), testEntry); + assertEquals(resultJournal.getId(), journalID); + assertEquals(resultJournal.getVisibility(), testVisibility); + assertEquals(resultJournal.getCategory(), testCategory); + + + //Update + + journalService.saveJournal(journalID,testStudent,testProject,testEntry+testEntry,Visibility.MINE.toString(),Category.AUSWERTUNG.toString()); + + resultJournal = journalDAO.getJournal(journalID); + + assertNotNull(resultJournal); + + assertEquals(resultJournal.getStudentIdentifier().getStudentId(), testStudent); + assertEquals(resultJournal.getStudentIdentifier().getProjectId(), testProject); + assertEquals(resultJournal.getEntryMD(), testEntry+testEntry); + assertEquals(resultJournal.getId(), journalID); + assertEquals(resultJournal.getVisibility(), Visibility.MINE); + assertEquals(resultJournal.getCategory(), Category.AUSWERTUNG); + + + } + + @Test + public void deleteJournal() { + + journalDAO.createJournal(testJournal); + + ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject, testStudent); + assertEquals(1, resultJournals.size()); + + String jId = resultJournals.get(0).getId(); + + journalService.deleteJournal(jId); + + resultJournals = journalDAO.getAllByProject(testProject, testStudent); + assertEquals(0, resultJournals.size()); + + } + + @Test + public void closeJournal() { + + journalDAO.createJournal(testJournal); + + Journal resultJournal = journalDAO.getAllByProject(testProject, testStudent).get(0); + + assertTrue(resultJournal.isOpen()); + + journalService.closeJournal(resultJournal.getId()); + resultJournal = journalDAO.getAllByProject(testProject, testStudent).get(0); + + assertFalse(resultJournal.isOpen()); + } + + @Test + public void checkIfAllJournalClosed() { + + Project project = new Project(); + project.setId(testProject); + + journalDAO.createJournal(testJournal); + journalDAO.createJournal(testJournal); + + ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject,testStudent); + + assertFalse(journalService.checkIfAllJournalClosed(project)); + + for(Journal j : resultJournals){ + journalDAO.closeJournal(j.getId()); + } + + assertTrue(journalService.checkIfAllJournalClosed(project)); + + } + + @Test + public void getOpenUserByProject() { + + User user = new User("Test", "Test", "test@test.de", true); + String token = management.getUserToken(user); + + Project project = new Project(); + + testJournal.getStudentIdentifier().setStudentId(token); + project.setId(testProject); + + journalDAO.createJournal(testJournal); + + ArrayList<User> resultUsers = journalService.getOpenUserByProject(project); + + assertEquals(1,resultUsers.size()); + assertEquals(user.getEmail(),resultUsers.get(0).getId()); + } +} \ No newline at end of file