From 71ed339c198b5688d2770603df8546880bd265e0 Mon Sep 17 00:00:00 2001 From: Martin Staehr <software@mstaehr.net> Date: Wed, 12 Sep 2018 10:53:09 +0200 Subject: [PATCH] #40 feat: adding mysql connect as injection, feat: implementing in memory database for tests, move fltrail.sql to test/resources/database, so it can be used in test for building the inmemory database --- gemeinsamforschen/pom.xml | 13 ++- .../gf/config/GFApplicationBinder.java | 1 + .../gf/core/database/mysql/MysqlConnect.java | 1 + .../gf/core/management/Management.java | 3 + .../gf/core/management/ManagementImpl.java | 16 +++- .../gf/core/management/group/GroupDAO.java | 3 +- .../core/management/project/ProjectDAO.java | 4 +- .../gf/core/management/user/UserDAO.java | 14 +-- .../gf/core/management/user/UserService.java | 24 +++-- .../controller/service/PeerAssessment.java | 19 +++- .../gf/modules/communication/ChatWindow.java | 6 +- .../core/database/InMemoryMySqlConnect.java | 51 ++++++++++ .../management/project/ProjectDAOTest.java | 25 +++++ .../gf/core/management/user/UserDAOTest.java | 95 +++++++++++++++++++ .../gf/interfaces/ManagementTest.java | 91 ++---------------- .../unipotsdam/gf/interfaces/PhaseTest.java | 4 +- .../java/unipotsdam/gf/util/TestHelper.java | 23 +++++ .../src/test/resources/database/fltrail.sql | 1 - 18 files changed, 269 insertions(+), 125 deletions(-) create mode 100644 gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java create mode 100644 gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java create mode 100644 gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java create mode 100644 gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java diff --git a/gemeinsamforschen/pom.xml b/gemeinsamforschen/pom.xml index e4fb1798..cda31359 100644 --- a/gemeinsamforschen/pom.xml +++ b/gemeinsamforschen/pom.xml @@ -52,7 +52,7 @@ <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> - <version>1.6.2</version> + <version>1.7.25</version> </dependency> <dependency> @@ -211,10 +211,17 @@ <dependency> <groupId>ch.vorburger.mariaDB4j</groupId> <artifactId>mariaDB4j</artifactId> - <version>2.2.3</version> - <scope>test</scope> + <version>2.3.0</version> </dependency> + + <dependency> + <groupId>commons-dbutils</groupId> + <artifactId>commons-dbutils</artifactId> + <version>1.7</version> + </dependency> + + </dependencies> </project> \ No newline at end of file diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java index b6721808..ce37ee4f 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java @@ -48,5 +48,6 @@ public class GFApplicationBinder extends AbstractBinder { bind(GroupDAO.class).to(GroupDAO.class); bind(MysqlConnect.class).to(MysqlConnect.class); + } } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java index c0330b7c..09a12822 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/database/mysql/MysqlConnect.java @@ -39,6 +39,7 @@ public class MysqlConnect { System.out.println(ex); //logger? } conn = DriverManager.getConnection(createConnectionString()); + } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java index c919c527..3492e7ce 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java @@ -6,6 +6,7 @@ import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserInterests; import unipotsdam.gf.core.management.user.UserProfile; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; /** * Created by dehne on 31.05.2018. @@ -85,5 +86,7 @@ public interface Management { void create(ProjectConfiguration projectConfiguration, Project project); ProjectConfiguration getProjectConfiguration(Project project); + + Quiz getQuizByProjectGroupId(String projectId, String quizId); } diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java index 0a6eb7ab..efdbc691 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java @@ -28,16 +28,22 @@ import java.util.ArrayList; @Singleton public class ManagementImpl implements Management { - @Inject private UserDAO userDAO; - @Inject private GroupDAO groupDAO; - @Inject private ProjectDAO projectDAO; + private MysqlConnect connect; + + @Inject + public ManagementImpl(UserDAO userDAO, GroupDAO groupDAO, ProjectDAO projectDAO, MysqlConnect connect) { + this.userDAO = userDAO; + this.groupDAO = groupDAO; + this.projectDAO = projectDAO; + this.connect = connect; + } + @Override public void register(User user, Project project, UserInterests interests) { - MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest = "INSERT INTO projectuser (`projectId`, `userId`) values (?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), user.getId()); @@ -51,8 +57,8 @@ public class ManagementImpl implements Management { * @param quizId * @return */ + @Override public Quiz getQuizByProjectGroupId(String projectId, String quizId) { - MysqlConnect connect = new MysqlConnect(); connect.connect(); String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question=" + quizId; VereinfachtesResultSet vereinfachtesResultSet = 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 6467339a..2d887c0e 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 @@ -28,7 +28,6 @@ public class GroupDAO { public void persist(Group group) { connect.connect(); - String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId()); @@ -37,6 +36,7 @@ public class GroupDAO { connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId()); } connect.close(); + } public void update(Group group) { @@ -74,7 +74,6 @@ public class GroupDAO { } ArrayList<Group> groups = new ArrayList<>(); groupHashMap.forEach((key, group) -> groups.add(group)); - connect.close(); if (groups.isEmpty()) { return null; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java index d987951d..5a9df4d0 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java @@ -41,10 +41,10 @@ public class ProjectDAO { connect.connect(); String mysqlRequest = "DELETE FROM projects where id = (?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId()); - + connect.close(); // TODO: delete all groups of project? - connect.close(); + } public Boolean exists(Project project) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java index 693964a1..01ed0681 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserDAO.java @@ -2,7 +2,6 @@ package unipotsdam.gf.core.management.user; import unipotsdam.gf.core.database.mysql.MysqlConnect; import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet; -import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.util.ResultSetUtil; import javax.annotation.ManagedBean; @@ -29,31 +28,28 @@ public class UserDAO { public void persist(User user, UserProfile profile) { UUID uuid = UUID.randomUUID(); String token = uuid.toString(); - connect.connect(); String mysqlRequest = "INSERT INTO users (`name`, `password`, `email`, `token`,`isStudent`," + "`rocketChatId`,`rocketChatAuthToken`) values (?,?,?,?,?,?,?)"; connect.issueInsertOrDeleteStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), token, user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken()); connect.close(); - // TODO implmement UserProfile @Mar } public void delete(User user) { - connect.connect(); String mysqlRequest = "DELETE FROM users where email = (?)"; + connect.connect(); connect.issueInsertOrDeleteStatement(mysqlRequest, user.getEmail()); connect.close(); } public void update(User user) { - connect.connect(); String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?," + "`rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1"; //TODO: maybe add handling if a line is actually updated //TODO: if user is updated, it also must update all other tables which includes some information about the user, for example project user - + connect.connect(); connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(), user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail()); connect.close(); @@ -70,7 +66,8 @@ public class UserDAO { return result; } - public List<User> getUsers(Project project) { + public List<User> getUsersByProjectId(String projectId) { + connect.connect(); String query = "SELECT * FROM users u " + " JOIN projectuser pu ON u.email=pu.userId" @@ -78,8 +75,7 @@ public class UserDAO { + " WHERE pu.projectId = ?"; ArrayList<User> result = new ArrayList<>(); - connect.connect(); - VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getId()); + VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, projectId); while (!vereinfachtesResultSet.isLast()) { boolean next = vereinfachtesResultSet.next(); if (next) { diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java index 9684fa6b..000b4394 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java @@ -1,6 +1,6 @@ package unipotsdam.gf.core.management.user; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.Management; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; @@ -19,12 +19,19 @@ import java.net.URISyntaxException; @ManagedBean public class UserService { - @Inject private ICommunication communicationService; - @Inject private UserDAO userDAO; + private Management management; + + @Inject + public UserService(ICommunication communicationService, UserDAO userDAO, Management management) { + this.communicationService = communicationService; + this.userDAO = userDAO; + this.management = management; + } + /** * creates a user with given credentials * @@ -43,7 +50,6 @@ public class UserService { @FormParam("email") String email, @FormParam("isStudent") String isStudent) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); User user = new User(name, password, email, isStudent == null); return login(true, user); @@ -66,7 +72,6 @@ public class UserService { @FormParam("email") String email) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); User user = new User(name, password, email, null); ICommunication iCommunication = new CommunicationDummyService(); boolean isLoggedIn = iCommunication.loginUser(user); @@ -88,11 +93,11 @@ public class UserService { * @throws URISyntaxException */ protected Response login(boolean createUser, User user) throws URISyntaxException { - ManagementImpl management = new ManagementImpl(); + if (management.exists(user)) { if (!createUser) { user = fillUserFields(user); - return redirectToProjectPage(user, management); + return redirectToProjectPage(user); } String existsUrl = "../register.jsp?userExists=true"; return forwardToLocation(existsUrl); @@ -104,7 +109,7 @@ public class UserService { } management.create(user, null); user = fillUserFields(user); - return redirectToProjectPage(user, management); + return redirectToProjectPage(user); } else { String existsUrl = "../index.jsp?userExists=false"; return forwardToLocation(existsUrl); @@ -133,11 +138,10 @@ public class UserService { * helper function for redirecting to the right project page * * @param user - * @param management * @return * @throws URISyntaxException */ - private Response redirectToProjectPage(User user, ManagementImpl management) throws URISyntaxException { + private Response redirectToProjectPage(User user) throws URISyntaxException { String successUrl; if (user.getStudent() != null && user.getStudent()) { successUrl = "../pages/overview-student.jsp?token="; diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java index a4ff7b02..b221d397 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java @@ -1,14 +1,25 @@ package unipotsdam.gf.modules.assessment.controller.service; -import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.Management; import unipotsdam.gf.interfaces.IPeerAssessment; import unipotsdam.gf.modules.assessment.QuizAnswer; -import unipotsdam.gf.modules.assessment.controller.model.*; - +import unipotsdam.gf.modules.assessment.controller.model.Assessment; +import unipotsdam.gf.modules.assessment.controller.model.Grading; +import unipotsdam.gf.modules.assessment.controller.model.PeerRating; +import unipotsdam.gf.modules.assessment.controller.model.Performance; +import unipotsdam.gf.modules.assessment.controller.model.Quiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentAndQuiz; +import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier; + +import javax.inject.Inject; import java.util.ArrayList; import java.util.List; public class PeerAssessment implements IPeerAssessment { + + @Inject + private Management management; + @Override public void addAssessmentDataToDB(Assessment assessment) { @@ -16,7 +27,7 @@ public class PeerAssessment implements IPeerAssessment { @Override//returns one quiz public Quiz getQuiz(String projectId, String quizId) { - return new ManagementImpl().getQuizByProjectGroupId(projectId,quizId); + return management.getQuizByProjectGroupId(projectId, quizId); } @Override //returns all quizzes in the course diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java index 9fa51312..366395ce 100644 --- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java +++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/ChatWindow.java @@ -1,6 +1,5 @@ package unipotsdam.gf.modules.communication; -import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.interfaces.ICommunication; import unipotsdam.gf.modules.communication.service.CommunicationDummyService; @@ -18,16 +17,15 @@ public class ChatWindow extends SimpleTagSupport { PageContext pageContext = (PageContext) getJspContext(); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); String token = request.getParameter("token"); - ManagementImpl management = new ManagementImpl(); //User user = management.getUserByToken(token); String groupToken = request.getParameter("groupToken"); String projectToken = request.getParameter("projectToken"); //get ProjetbyToken ICommunication communicationService = new CommunicationDummyService(); - String chatRoomLink = communicationService.getChatRoomLink(token,projectToken,groupToken); + String chatRoomLink = communicationService.getChatRoomLink(token, projectToken, groupToken); JspWriter out = getJspContext().getOut(); - out.println("<iframe width=\"30%\" height=\"100%\" src=\""+chatRoomLink+"\"/>"); + out.println("<iframe width=\"30%\" height=\"100%\" src=\"" + chatRoomLink + "\"/>"); } public void setOrientation(String orientation) { diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java new file mode 100644 index 00000000..9fb25b23 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/database/InMemoryMySqlConnect.java @@ -0,0 +1,51 @@ +package unipotsdam.gf.core.database; + +import ch.vorburger.exec.ManagedProcessException; +import ch.vorburger.mariadb4j.DB; +import ch.vorburger.mariadb4j.DBConfigurationBuilder; +import org.apache.commons.dbutils.DbUtils; +import unipotsdam.gf.core.database.mysql.MysqlConnect; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.Objects; + +public class InMemoryMySqlConnect extends MysqlConnect { + + public InMemoryMySqlConnect() { + connect(); + } + + private Connection getDatabaseConnection() throws ManagedProcessException, SQLException { + DBConfigurationBuilder config = DBConfigurationBuilder.newBuilder(); + config.setPort(0); + DB db = DB.newEmbeddedDB(config.build()); + + db.start(); + db.source("database/fltrail.sql"); + + return DriverManager.getConnection(config.getURL("fltrail")); + + } + + @Override + public void connect() { + try { + if (Objects.isNull(conn)) { + conn = getDatabaseConnection(); + } + } catch (SQLException | ManagedProcessException e) { + DbUtils.closeQuietly(conn); + } + } + + @Override + public void close() { + // do nothing, because close shouldn't close inMemoryDatabase while tests are running, tearDown() replaces close in tests + } + + public void tearDown() { + super.close(); + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java new file mode 100644 index 00000000..17c2aaa4 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java @@ -0,0 +1,25 @@ +package unipotsdam.gf.core.management.project; + +import org.junit.Before; +import org.junit.Test; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; + +public class ProjectDAOTest { + + private InMemoryMySqlConnect inMemoryMySqlConnect; + + @Before + public void setUp() { + inMemoryMySqlConnect = new InMemoryMySqlConnect(); + } + + /** + * Test creating a user in the DB + */ + @Test + public void testPersist() { + ProjectDAO projectDAO = new ProjectDAO(inMemoryMySqlConnect); + projectDAO.persist(new Project("Gemeinsam Forschen", "1235", true, "me", "keins")); + + } +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java new file mode 100644 index 00000000..6ba930a9 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/user/UserDAOTest.java @@ -0,0 +1,95 @@ +package unipotsdam.gf.core.management.user; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.project.Project; +import unipotsdam.gf.util.TestHelper; + +import java.util.List; + +import static org.hamcrest.Matchers.hasSize; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; + +public class UserDAOTest { + + private InMemoryMySqlConnect inMemoryMySqlConnect; + + @Before + public void setUp() throws Exception { + inMemoryMySqlConnect = new InMemoryMySqlConnect(); + } + + @After + public void tearDown() throws Exception { + inMemoryMySqlConnect.tearDown(); + } + + @Test + public void testGetUsersByProjectId() { + ManagementImpl management = TestHelper.getManagementImpl(inMemoryMySqlConnect); + + User user = new User("julian", "1234", "from@stuff.com", false); + management.create(user, new UserProfile()); + assert management.exists(user); + + + Project project = new Project("Gemeinsam Forschen", "1235", true, "me", "keins"); + management.create(project); + management.register(user, project, null); + + assertTrue(management.exists(project)); + + User user2 = new User("julian2", "12345", "from2@stuff.com", true); + management.create(user2, new UserProfile()); + management.register(user2, project, null); + assert management.exists(user2); + + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + List<User> users = userDAO.getUsersByProjectId(project.getId()); + assert users != null; + assert !users.isEmpty(); + assertThat(users, hasSize(2)); + } + + @Test + public void testExists() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "from1123123123@stuff.com", true); + assert !userDAO.exists(user); + } + + @Test + public void testPersist() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "from@stuff.com", false); + userDAO.persist(user, new UserProfile()); + assert userDAO.exists(user); + } + + @Test + public void testUpdateUser() { + UserDAO userDAO = new UserDAO(inMemoryMySqlConnect); + User user = new User("julian", "1234", "testUpdateUser@stuff.com", true); + user.setToken("abc"); + userDAO.persist(user, new UserProfile()); + assertTrue(userDAO.exists(user)); + + user.setStudent(false); + userDAO.update(user); + assertTrue(userDAO.exists(user)); + User managementUser = userDAO.getUserByToken(user.getToken()); + assertEquals(user.getStudent(), managementUser.getStudent()); + } + + @Test + public void testDelete() { + + } + + +} diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java index e087e61c..ff18fe4c 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java @@ -1,5 +1,6 @@ package unipotsdam.gf.interfaces; +import org.junit.Before; import org.junit.Test; import uk.co.jemos.podam.api.PodamFactory; import uk.co.jemos.podam.api.PodamFactoryImpl; @@ -7,14 +8,10 @@ import unipotsdam.gf.core.management.ManagementImpl; import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.project.ProjectConfiguration; import unipotsdam.gf.core.management.user.User; -import unipotsdam.gf.core.management.user.UserDAO; import unipotsdam.gf.core.management.user.UserProfile; +import unipotsdam.gf.util.TestHelper; -import java.util.List; - -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; /** * Created by dehne on 01.06.2018. @@ -23,52 +20,19 @@ import static org.junit.Assert.assertTrue; public class ManagementTest { - /** * Utility to creaty dummy data for students */ - PodamFactory factory = new PodamFactoryImpl(); - - - @Test - public void testDelete() { - - } - - /** - * CREATE a user in the DB using the - */ - @Test - public void testExists() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from1123123123@stuff.com", true); - assert !management.exists(user); - } - - /** - * CREATE a user in the DB using the - */ - @Test - public void testCreate() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from@stuff.com", false); - management.create(user, new UserProfile()); - assert management.exists(user); - } - - /** - * Test creating a user in the DB - */ - @Test - public void testCreate1() { - ManagementImpl management = new ManagementImpl(); - management.create(new Project("Gemainsam Forschen", "1235", true, "me", "keins")); + private PodamFactory factory = new PodamFactoryImpl(); + private ManagementImpl management; + @Before + public void setUp() throws Exception { + management = TestHelper.getManagementImpl(); } @Test public void testRegister() { - ManagementImpl management = new ManagementImpl(); User user = new User("julian", "1234", "from@stuff.com", true); management.create(user, new UserProfile()); assert management.exists(user); @@ -78,52 +42,11 @@ public class ManagementTest { management.register(user, project, null); } - @Test - public void testUpdateUser() { - ManagementImpl management = new ManagementImpl(); - UserDAO userDAO = new UserDAO(); - User user = new User("julian", "1234", "testUpdateUser@stuff.com", true); - user.setToken("abc"); - management.create(user, new UserProfile()); - assertTrue(management.exists(user)); - - user.setStudent(false); - management.update(user); - assertTrue(management.exists(user)); - User managementUser = userDAO.getUserByToken(user.getToken()); - assertEquals(user.getStudent(), managementUser.getStudent()); - } - - @Test - public void testGetUsers() { - ManagementImpl management = new ManagementImpl(); - User user = new User("julian", "1234", "from@stuff.com", false); - management.create(user, new UserProfile()); - assert management.exists(user); - - Project project = new Project("Gemainsam Forschen", "1235", true, "me", "keins"); - management.create(project); - management.register(user, project, null); - - assertTrue(management.exists(project)); - - User user2 = new User("julian2", "12345", "from2@stuff.com", true); - management.create(user2, new UserProfile()); - assert management.exists(user2); - - UserDAO userDAO = new UserDAO(); - List<User> users = userDAO.getUsers(project); - assert users != null; - assert !users.isEmpty(); - - } - @Test public void testProjectConfiguration() { ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class); Project project = factory.manufacturePojo(Project.class); - ManagementImpl management = new ManagementImpl(); management.create(projectConfiguration, project); ProjectConfiguration projectConfiguration1 = management.getProjectConfiguration(project); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java index 9d59d39a..af263fb6 100644 --- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java @@ -11,6 +11,8 @@ import unipotsdam.gf.core.management.project.Project; import unipotsdam.gf.core.management.user.User; import unipotsdam.gf.core.management.user.UserProfile; import unipotsdam.gf.core.states.ProjectPhase; +import unipotsdam.gf.util.TestHelper; + import javax.inject.Inject; public class PhaseTest { @@ -27,7 +29,7 @@ public class PhaseTest { @BeforeClass public static void prepareProject() { - ManagementImpl management = new ManagementImpl(); + ManagementImpl management = TestHelper.getManagementImpl(); User user = new User("julian", "1234", "from@stuff.com", false); management.create(user, new UserProfile()); assert management.exists(user); diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java new file mode 100644 index 00000000..86683104 --- /dev/null +++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/util/TestHelper.java @@ -0,0 +1,23 @@ +package unipotsdam.gf.util; + +import unipotsdam.gf.core.database.InMemoryMySqlConnect; +import unipotsdam.gf.core.management.ManagementImpl; +import unipotsdam.gf.core.management.group.GroupDAO; +import unipotsdam.gf.core.management.project.ProjectDAO; +import unipotsdam.gf.core.management.user.UserDAO; + +public class TestHelper { + + public static ManagementImpl getManagementImpl() { + InMemoryMySqlConnect connect = new InMemoryMySqlConnect(); + return getManagementImpl(connect); + } + + public static ManagementImpl getManagementImpl(InMemoryMySqlConnect connect) { + UserDAO userDAO = new UserDAO(connect); + GroupDAO groupDAO = new GroupDAO(connect); + ProjectDAO projectDAO = new ProjectDAO(connect); + + return new ManagementImpl(userDAO, groupDAO, projectDAO, connect); + } +} diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql index 22a07cbc..c11a8a42 100644 --- a/gemeinsamforschen/src/test/resources/database/fltrail.sql +++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql @@ -44,7 +44,6 @@ CREATE TABLE if not exists `users` ( `token` varchar(800) NOT NULL, `rocketChatId` varchar(400) NOT NULL, `rocketChatAuthToken` varchar(800) NOT NULL, - `isStudent` TINYINT(1), UNIQUE (email) ) -- GitLab