From 657304a4cff803cfee244407fb28f85af86138f2 Mon Sep 17 00:00:00 2001 From: shiv12095 Date: Tue, 16 Aug 2016 06:58:15 +0530 Subject: [PATCH] Added test cases for devtool Signed-off-by: shiv12095 --- server/devtool/pom.xml | 19 ++++++ .../IInformationModelEditorService.java | 5 -- .../impl/FunctionBlockEditorServiceImpl.java | 10 ++-- .../InformationModelEditorServiceImpl.java | 12 ++-- ...inker.java => DevtoolReferenceLinker.java} | 4 +- ...RestClient.java => DevtoolRestClient.java} | 2 +- .../service/ProjectRepositoryServiceTest.java | 59 +++++++++++++++++++ .../impl/ProjectRepositoryDAOTest.java | 56 ++++++++++++++++++ 8 files changed, 148 insertions(+), 19 deletions(-) rename server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/{InformationModelEditorReferenceLinker.java => DevtoolReferenceLinker.java} (98%) rename server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/{InformationModelEditorRestClient.java => DevtoolRestClient.java} (98%) create mode 100644 server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/ProjectRepositoryServiceTest.java create mode 100644 server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/impl/ProjectRepositoryDAOTest.java diff --git a/server/devtool/pom.xml b/server/devtool/pom.xml index 17558b100e..76344a7abb 100644 --- a/server/devtool/pom.xml +++ b/server/devtool/pom.xml @@ -195,5 +195,24 @@ angular-smart-table 2.1.6 + + + + junit + junit + test + + + org.springframework + spring-test + test + + + org.springframework.boot + spring-boot-starter-test + test + + + diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/IInformationModelEditorService.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/IInformationModelEditorService.java index 26968988e9..cf70a035d6 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/IInformationModelEditorService.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/IInformationModelEditorService.java @@ -7,11 +7,6 @@ import org.eclipse.vorto.http.model.ModelId; import org.eclipse.vorto.http.model.ModelResource; -/** - * - * @author shiv - * - */ public interface IInformationModelEditorService { String linkFunctionBlockToInformationModel(String infoModelResourceId, ModelId functionBlockModelId, ResourceSet resourceSet, diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/FunctionBlockEditorServiceImpl.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/FunctionBlockEditorServiceImpl.java index 268da7e132..fb98f664dd 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/FunctionBlockEditorServiceImpl.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/FunctionBlockEditorServiceImpl.java @@ -12,8 +12,8 @@ import org.eclipse.vorto.http.model.ModelId; import org.eclipse.vorto.http.model.ModelResource; import org.eclipse.vorto.server.devtool.service.IFunctionBlockEditorService; -import org.eclipse.vorto.server.devtool.utils.InformationModelEditorReferenceLinker; -import org.eclipse.vorto.server.devtool.utils.InformationModelEditorRestClient; +import org.eclipse.vorto.server.devtool.utils.DevtoolReferenceLinker; +import org.eclipse.vorto.server.devtool.utils.DevtoolRestClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,10 +21,10 @@ public class FunctionBlockEditorServiceImpl implements IFunctionBlockEditorService { @Autowired - InformationModelEditorRestClient informationModelEditorRestClient; + DevtoolRestClient devtoolRestClient; @Autowired - InformationModelEditorReferenceLinker infomrationModelRefernceLinker; + DevtoolReferenceLinker infomrationModelRefernceLinker; @Override public String linkDatatypeToFunctionBlock(String functionBlockResourceId, ModelId datatypeModelId, @@ -49,7 +49,7 @@ public List searchDataTypeByExpression(String expression) { private List searchModelByExpressionAndValidate(String expression, org.eclipse.vorto.http.model.ModelType modelType) { - List resourceList = informationModelEditorRestClient.searchByExpression(expression); + List resourceList = devtoolRestClient.searchByExpression(expression); ArrayList modelResourceList = new ArrayList(); for (ModelResource modelResource : resourceList) { if (modelResource.getModelType().equals(modelType)) { diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/InformationModelEditorServiceImpl.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/InformationModelEditorServiceImpl.java index 8608722eea..fdab3bfb27 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/InformationModelEditorServiceImpl.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/service/impl/InformationModelEditorServiceImpl.java @@ -12,8 +12,8 @@ import org.eclipse.vorto.http.model.ModelId; import org.eclipse.vorto.http.model.ModelResource; import org.eclipse.vorto.server.devtool.service.IInformationModelEditorService; -import org.eclipse.vorto.server.devtool.utils.InformationModelEditorReferenceLinker; -import org.eclipse.vorto.server.devtool.utils.InformationModelEditorRestClient; +import org.eclipse.vorto.server.devtool.utils.DevtoolReferenceLinker; +import org.eclipse.vorto.server.devtool.utils.DevtoolRestClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,15 +21,15 @@ public class InformationModelEditorServiceImpl implements IInformationModelEditorService { @Autowired - InformationModelEditorRestClient informationModelEditorRestClient; + DevtoolRestClient devtoolRestClient; @Autowired - InformationModelEditorReferenceLinker infomrationModelRefernceLinker; + DevtoolReferenceLinker devtoolReferenceLinker; @Override public String linkFunctionBlockToInformationModel(String infoModelResourceId, ModelId functionBlockModelId, ResourceSet resourceSet, Set referencedResourceSet) { - infomrationModelRefernceLinker.linkFunctionBlockToInfoModel(infoModelResourceId, functionBlockModelId, + devtoolReferenceLinker.linkFunctionBlockToInfoModel(infoModelResourceId, functionBlockModelId, resourceSet, referencedResourceSet); Resource infoModelResource = resourceSet.getResource(URI.createURI(infoModelResourceId), true); try { @@ -48,7 +48,7 @@ public List searchFunctionBlockByExpression(String expression) { private List searchModelByExpressionAndValidate(String expression, org.eclipse.vorto.http.model.ModelType modelType) { - List resourceList = informationModelEditorRestClient.searchByExpression(expression); + List resourceList = devtoolRestClient.searchByExpression(expression); ArrayList modelResourceList = new ArrayList(); for (ModelResource modelResource : resourceList) { if (modelResource.getModelType().equals(modelType)) { diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorReferenceLinker.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java similarity index 98% rename from server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorReferenceLinker.java rename to server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java index c7ae42fdbb..775a5be331 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorReferenceLinker.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolReferenceLinker.java @@ -23,10 +23,10 @@ import org.springframework.stereotype.Component; @Component -public class InformationModelEditorReferenceLinker { +public class DevtoolReferenceLinker { @Autowired - InformationModelEditorRestClient informationModelEditorRestClient; + DevtoolRestClient informationModelEditorRestClient; public void linkFunctionBlockToInfoModel(String infoModelResourceId, ModelId functionBlockModelId, ResourceSet resourceSet, Set referencedResourceSet) { diff --git a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorRestClient.java b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolRestClient.java similarity index 98% rename from server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorRestClient.java rename to server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolRestClient.java index c43e405550..5244392987 100644 --- a/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/InformationModelEditorRestClient.java +++ b/server/devtool/src/main/java/org/eclipse/vorto/server/devtool/utils/DevtoolRestClient.java @@ -22,7 +22,7 @@ import com.google.gson.reflect.TypeToken; @Component -public class InformationModelEditorRestClient { +public class DevtoolRestClient { @Value("${vorto.repository.rest.path}") private String basePath; diff --git a/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/ProjectRepositoryServiceTest.java b/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/ProjectRepositoryServiceTest.java new file mode 100644 index 0000000000..edd01e778c --- /dev/null +++ b/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/ProjectRepositoryServiceTest.java @@ -0,0 +1,59 @@ +package org.eclipse.vorto.server.devtool.service; + +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.when; + +import org.eclipse.vorto.editor.web.resource.WebEditorResourceSetProvider; +import org.eclipse.vorto.server.devtool.exception.ProjectAlreadyExistsException; +import org.eclipse.vorto.server.devtool.exception.ProjectNotFoundException; +import org.eclipse.vorto.server.devtool.service.impl.ProjectRepositoryServiceImpl; +import org.eclipse.xtext.web.server.model.IWebResourceSetProvider; +import org.junit.Before; +import org.junit.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import com.google.inject.Injector; + +public class ProjectRepositoryServiceTest { + + @InjectMocks + private IProjectRepositoryService projectRepositoryService = new ProjectRepositoryServiceImpl(); + + @Mock + private IProjectRespositoryDAO projectRespositoryDAO; + + @Mock + private Injector injector; + + @Mock + private WebEditorResourceSetProvider webEditorResourceSetProvider; + + private String sessionId = "sessionId"; + private String projectName = "Project"; + + @Before + public void initMocks() { + MockitoAnnotations.initMocks(this); + } + + @Test(expected = ProjectAlreadyExistsException.class) + public void checkProjectExistsTest() throws ProjectAlreadyExistsException{ + when(injector.getInstance(IWebResourceSetProvider.class)).thenReturn(webEditorResourceSetProvider); + when(projectRespositoryDAO.projectExists(projectName, sessionId)).thenReturn(true); + projectRepositoryService.createProject(sessionId, projectName); + } + + @Test(expected = ProjectNotFoundException.class) + public void openNonExistantProjectTest() throws ProjectNotFoundException{ + when(projectRespositoryDAO.openProject(projectName, sessionId)).thenReturn(null); + projectRepositoryService.openProject(sessionId, projectName); + } + + @Test + public void getProjectListTest() throws ProjectNotFoundException{ + assertNotNull(projectRepositoryService.getProjects(sessionId)); + } + +} diff --git a/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/impl/ProjectRepositoryDAOTest.java b/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/impl/ProjectRepositoryDAOTest.java new file mode 100644 index 0000000000..8f55f55c32 --- /dev/null +++ b/server/devtool/src/test/java/org/eclipse/vorto/server/devtool/service/impl/ProjectRepositoryDAOTest.java @@ -0,0 +1,56 @@ +package org.eclipse.vorto.server.devtool.service.impl; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import org.eclipse.vorto.server.devtool.models.Project; +import org.junit.Test; +import org.mockito.InjectMocks; + +public class ProjectRepositoryDAOTest { + + @InjectMocks + private MapProjectRespositoryDAOImpl projectRepositoryDAO = new MapProjectRespositoryDAOImpl(); + + private String sessionId = "sessionId"; + private String projectName = "Project"; + + @Test + public void uniqueProjectNameTest(){ + Project project1 = new Project(projectName); + projectRepositoryDAO.createProject(project1, sessionId); + assertEquals(1, projectRepositoryDAO.getProjects(sessionId).size()); + Project project2 = new Project(projectName); + projectRepositoryDAO.createProject(project2, sessionId); + assertEquals(1, projectRepositoryDAO.getProjects(sessionId).size()); + } + + @Test + public void checkProjectExistsTest(){ + Project project1 = new Project(projectName); + projectRepositoryDAO.createProject(project1, sessionId); + assertTrue(projectRepositoryDAO.projectExists(projectName, sessionId)); + assertFalse(projectRepositoryDAO.projectExists(Long.toString(System.currentTimeMillis()), sessionId)); + } + + + @Test + public void openProjectTest(){ + Project project1 = new Project(projectName); + projectRepositoryDAO.createProject(project1, sessionId); + assertNotNull(projectRepositoryDAO.openProject(projectName, sessionId)); + assertNull((projectRepositoryDAO.openProject(Long.toString(System.currentTimeMillis()), sessionId))); + } + + @Test + public void getProjectsTest(){ + Project project1 = new Project(projectName); + projectRepositoryDAO.createProject(project1, sessionId); + assertEquals(1, projectRepositoryDAO.getProjects(sessionId).size()); + assertEquals(projectName, projectRepositoryDAO.getProjects(sessionId).get(0).getProjectName()); + } + +}