diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java index a1586385a6e96c6fae08a8f1637f78d00312b18c..6d9a5381f2a1e46ba09099603c7726971d5023fb 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java @@ -30,11 +30,13 @@ public class GroupDAO { public void persist(Group group) { connect.connect(); String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)"; + // TODO: refactor insert or delete to get the full object back from database to get group or just use UUID instead of autoincrement connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId()); for (User groupMember : group.getMembers()) { String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId()); + // TODO: fix -> getProjectId is not correct. it need to be the groupId } connect.close(); @@ -42,8 +44,8 @@ public class GroupDAO { public void update(Group group) { connect.connect(); - String mysqlRequest = "UPDATE groups SET projectId=?,chatRoomid=?"; - connect.issueUpdateStatement(mysqlRequest, group.getProjectId(), group.getChatRoomId()); + String mysqlRequest = "UPDATE groups SET projectId = ?, chatRoomId = ? where id = ?"; + connect.issueUpdateStatement(mysqlRequest, group.getProjectId(), group.getChatRoomId(), group.getId()); connect.close(); // TODO: implement update of groupuser if needed later (if member list need to be updated) } @@ -80,9 +82,6 @@ public class GroupDAO { ArrayList<Group> groups = new ArrayList<>(); groupHashMap.forEach((key, group) -> groups.add(group)); connect.close(); - if (groups.isEmpty()) { - return null; - } return groups; } @@ -95,7 +94,7 @@ public class GroupDAO { User user = ResultSetUtil.getUserFromResultSet(vereinfachtesResultSet); String chatRoomId = vereinfachtesResultSet.getString("chatRoomId"); ArrayList<User> userList = new ArrayList<>(Collections.singletonList(user)); - Group group = new Group(userList, projectId, chatRoomId); + Group group = new Group(id, userList, projectId, chatRoomId); existingGroups.put(id, group); } } diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java index 9fb25b2321be9db193925fa36ac7eecf708cdb8a..d9f49c3e5fb92c3361f76d48a7aa7b3e1be9b410 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java @@ -19,7 +19,8 @@ public class InMemoryMySqlConnect extends MysqlConnect { private Connection getDatabaseConnection() throws ManagedProcessException, SQLException { DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder(); - config.setPort(0); + // set port for testing statically + config.setPort(3307); DB db = DB.newEmbeddedDB(config.build()); db.start(); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java index 4c1ea15576b02a1f4cbb8c6dc4b4e632fcde3313..340eb2c502655b331fb6faa9f455c976cd6620db 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/group/GroupDAOTest.java @@ -1,6 +1,5 @@ package unipotsdam.gf.core.management.group; -import org.junit.Assert; import org.junit.Before; import org.junit.Test; import uk.co.jemos.podam.api.PodamFactory; @@ -10,8 +9,12 @@ import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserDAO; import java.util.Arrays; +import java.util.List; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; public class GroupDAOTest { @@ -38,9 +41,42 @@ public class GroupDAOTest { group = new Group(Arrays.asList(userStudent, userDocent), "1", "1"); } + @Test + public void testExist() { + inMemoryMySqlConnect.connect(); + String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)"; + inMemoryMySqlConnect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId()); + + for (User groupMember : group.getMembers()) { + String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)"; + inMemoryMySqlConnect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId()); + } + + assertThat(groupDAO.exists(group), is(true)); + inMemoryMySqlConnect.tearDown(); + } + @Test public void testPersist() { groupDAO.persist(group); - Assert.assertThat(groupDAO.exists(group), is(true)); + assertThat(groupDAO.exists(group), is(true)); + } + + @Test + public void testUpdate() { + groupDAO.persist(group); + assertThat(groupDAO.exists(group), is(true)); + Group groupWithId = groupDAO.getGroupsByProjectId(group.getProjectId()).get(0); + groupWithId.setChatRoomId("neu"); + groupDAO.update(groupWithId); + assertThat(groupDAO.exists(groupWithId), is(true)); + } + + @Test + public void testGetGroupsByProjectId() { + groupDAO.persist(group); + List<Group> groups = groupDAO.getGroupsByProjectId(group.getProjectId()); + assertThat(groups, hasSize(1)); + assertThat(groups.get(0), equalTo(group)); } }