فهرست منبع

Merge remote-tracking branch 'origin/refactor-case' into refactor-case

# Conflicts:
#	mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/logic/impl/CaseLogicImplTest.java
tangss 8 سال پیش
والد
کامیت
10cc9e2fb5

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/CaseController.java

@@ -83,13 +83,13 @@ public class CaseController extends BaseController {
     @RequestMapping(value = UrlConstants.API + "case/{caseId}", method = RequestMethod.PUT)
     public void updateCase(@RequestBody CaseExtendsVO caseExtendsVO,@PathVariable("caseId") long caseId){
         if(caseId!=caseExtendsVO.getId()){
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException("Id are not same");
         }
         caseLogic.update(caseExtendsVO,caseId);
     }
 
     @RequestMapping(value = UrlConstants.API + "case/{caseId}", method = RequestMethod.DELETE)
-    public CaseExtendsVO updateCase(@PathVariable("caseId") long caseId){
+    public CaseExtendsVO deleteCase(@PathVariable("caseId") long caseId){
         return caseLogic.delete(caseId);
     }
 

+ 2 - 2
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/CaseLogicImpl.java

@@ -122,7 +122,7 @@ public class CaseLogicImpl implements CaseLogic {
     public void update(CaseExtendsVO caseExtendsVO, Long caseExtendsId) {
         CaseExtends caseExtends = caseService.getCaseExtendsById(caseExtendsId);
         if(caseExtends==null)
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException("Cannot find the caseExtends");
         Timestamp timestamp=caseExtends.getCreateTime();
         Converter.copy(caseExtends,caseExtendsVO);
         caseExtends.setId(caseExtendsId);
@@ -134,7 +134,7 @@ public class CaseLogicImpl implements CaseLogic {
     public CaseExtendsVO delete(Long caseExtendsId) {
         CaseExtends caseExtends = caseService.getCaseExtendsById(caseExtendsId);
         if(caseExtends==null)
-            throw new IllegalArgumentException();
+            throw new IllegalArgumentException("Cannot find the caseExtends");
         caseExtends.setDeleted(true);
         caseService.save(caseExtends);
         return Converter.convert(CaseExtendsVO.class, caseExtends);

+ 141 - 1
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/ctrl/CaseControllerTest.java

@@ -1,5 +1,6 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
+import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.web.data.CaseExtendsVO;
 import cn.iselab.mooctest.site.web.logic.CaseLogic;
 import org.json.JSONArray;
@@ -13,6 +14,7 @@ import org.mockito.Mockito;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.Pageable;
+import org.springframework.http.MediaType;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.MvcResult;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@@ -21,10 +23,11 @@ import org.springframework.web.util.NestedServletException;
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Matchers.*;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
@@ -113,4 +116,141 @@ public class CaseControllerTest {
         JSONObject jsonObject = new JSONObject(result.getResponse().getContentAsString());
         Assert.assertEquals(123L,jsonObject.getLong("id"));
     }
+
+    @Test
+    public void should_useCaseLogicCreate_when_givenCaseExtendsVO() throws Exception{
+        //arrange
+        CaseExtendsVO caseExtendsVO=new CaseExtendsVO();
+        short platform=5;
+        caseExtendsVO.setPlatform(platform);
+        caseExtendsVO.setProperties("");
+        caseExtendsVO.setSubsiteId(46L);
+        caseExtendsVO.setTargetId(123L);
+        caseExtendsVO.setName("Test");
+        caseExtendsVO.setDescription("This is just a test.");
+        caseExtendsVO.setManagerId(17L);
+
+        JSONObject input=new JSONObject();
+        input.put("name","Test");
+        input.put("description","This is just a test.");
+        input.put("properties","");
+        input.put("platform",platform);
+        input.put("managerId",17L);
+        input.put("subsiteId",46L);
+        input.put("targetId",123L);
+
+        //action
+        MvcResult result = mockMvc.perform(
+                post("/api/case").content(input.toString())
+        ).andDo(print()).andExpect(status().isOk()).andReturn();
+
+        //assert
+        Mockito.verify(caseLogic).create(caseExtendsVO);
+    }
+
+    @Test
+    public void should_useCaseLogicUpdate_when_givenCaseExtendVOAndId() throws Exception{
+        //arrange
+        CaseExtendsVO caseExtendsVO=new CaseExtendsVO();
+        short platform=5;
+        caseExtendsVO.setPlatform(platform);
+        caseExtendsVO.setProperties("");
+        caseExtendsVO.setSubsiteId(46L);
+        caseExtendsVO.setTargetId(123L);
+        caseExtendsVO.setName("Test");
+        caseExtendsVO.setDescription("This is just a test.");
+        caseExtendsVO.setManagerId(123L);
+        caseExtendsVO.setId(123L);
+
+        JSONObject input=new JSONObject();
+        input.put("id",123L);
+        input.put("name","Test");
+        input.put("description","This is just a test.");
+        input.put("properties","");
+        input.put("platform",platform);
+        input.put("managerId",123L);
+        input.put("subsiteId",46L);
+        input.put("targetId",123L);
+
+        //action
+        MvcResult result = mockMvc.perform(
+                put("/api/case/123").contentType(MediaType.APPLICATION_JSON).content(input.toString())
+        ).andDo(print()).andExpect(status().isOk()).andReturn();
+
+        //assert
+        Mockito.verify(caseLogic).update(caseExtendsVO,123L);
+    }
+
+    @Test
+    public void should_throwException_whenCaseExtendIdNotSame(){
+        //arrange
+        CaseExtendsVO caseExtendsVO=new CaseExtendsVO();
+        short platform=5;
+        caseExtendsVO.setPlatform(platform);
+        caseExtendsVO.setProperties("");
+        caseExtendsVO.setSubsiteId(46L);
+        caseExtendsVO.setTargetId(123L);
+        caseExtendsVO.setName("Test");
+        caseExtendsVO.setDescription("This is just a test.");
+        caseExtendsVO.setManagerId(123L);
+        caseExtendsVO.setId(123456L);
+
+        JSONObject input=new JSONObject();
+        input.put("id",12345L);
+        input.put("name","Test");
+        input.put("description","This is just a test.");
+        input.put("properties","");
+        input.put("platform",platform);
+        input.put("managerId",123L);
+        input.put("subsiteId",46L);
+        input.put("targetId",123L);
+
+        //action
+        try{
+            MvcResult result = mockMvc.perform(
+                    put("/api/case/123").contentType(MediaType.APPLICATION_JSON).content(input.toString())
+            ).andDo(print()).andExpect(status().isOk()).andReturn();
+        }catch(Exception e){
+            Assert.assertEquals(((NestedServletException)e).getRootCause().getClass(),IllegalArgumentException.class);
+            Assert.assertEquals(((NestedServletException)e).getRootCause().getMessage(),"Id are not same");
+        }
+    }
+
+    @Test
+    public void should_returnCaseExtendsVO_when_givenDeleteId() throws Exception{
+        //arrange
+        CaseExtendsVO caseExtendsVO=new CaseExtendsVO();
+        short platform=5;
+        caseExtendsVO.setId(123L);
+        caseExtendsVO.setPlatform(platform);
+        caseExtendsVO.setProperties("");
+        caseExtendsVO.setSubsiteId(46L);
+        caseExtendsVO.setTargetId(123L);
+        caseExtendsVO.setName("Test");
+        caseExtendsVO.setDescription("This is just a test.");
+        caseExtendsVO.setManagerId(17L);
+
+        JSONObject input=new JSONObject();
+        input.put("name","Test");
+        input.put("description","This is just a test.");
+        input.put("properties","");
+        input.put("platform",platform);
+        input.put("managerId",17L);
+        input.put("subsiteId",46L);
+        input.put("targetId",123L);
+        input.put("id",123L);
+
+        when(caseLogic.delete(123L)).thenReturn(caseExtendsVO);
+
+        //action
+        MvcResult result = mockMvc.perform(
+                delete("/api/case/123").contentType(MediaType.APPLICATION_JSON).content(input.toString())
+        ).andDo(print()).andExpect(status().isOk()).andReturn();
+
+        //assert
+        JSONObject re=new JSONObject(result.getResponse().getContentAsString());
+        assertEquals(123,re.get("id"));
+        assertEquals("Test",re.get("name"));
+        assertEquals("This is just a test.",re.get("description"));
+    }
 }

+ 47 - 13
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/logic/impl/CaseLogicImplTest.java

@@ -5,7 +5,6 @@ import cn.iselab.mooctest.site.models.CaseExtends;
 import cn.iselab.mooctest.site.service.CaseService;
 import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.web.data.CaseExtendsVO;
-import cn.iselab.mooctest.site.web.data.ExamVO;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -15,17 +14,12 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.runners.MockitoJUnitRunner;
 import org.springframework.boot.test.SpringApplicationConfiguration;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.data.domain.Pageable;
 import org.springframework.test.context.web.WebAppConfiguration;
 
-import java.sql.Timestamp;
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.when;
 
 /**
@@ -67,8 +61,8 @@ public class CaseLogicImplTest {
     }
 
     @Test
-    public void testCreateCase(){
-        //when(caseService.save(caseExtends)).thenReturn(caseExtends);
+    public void should_useCaseServiceSave_when_givenCaseExtendsVO(){
+        //arrange
         CaseExtends caseExtends=new CaseExtends();
         short platform=5;
         caseExtends.setPlatform(platform);
@@ -80,12 +74,16 @@ public class CaseLogicImplTest {
         caseExtends.setManagerId(17L);
         caseExtends.setVisible(true);
 
+        //action
         caseLogic.create(caseExtendsVO);
+
+        //assert
         Mockito.verify(caseService).save(caseExtends);
     }
 
     @Test
-    public void testDeleteCase(){
+    public void should_returnCaseExtendsVO_when_givenCaseExtendsId(){
+        //arrange
         CaseExtends caseExtends=new CaseExtends();
         short platform=5;
         caseExtends.setPlatform(platform);
@@ -96,15 +94,35 @@ public class CaseLogicImplTest {
         caseExtends.setDescription("This is just a test.");
         caseExtends.setManagerId(17L);
         caseExtends.setVisible(false);
-
         when(caseService.getCaseExtendsById(17L)).thenReturn(caseExtends);
+
+        //action
         CaseExtendsVO caseExtendsVO=caseLogic.delete(17L);
+
+        //assert
         assertEquals(caseExtendsVO.getName(),"测试");
         Mockito.verify(caseService).save(caseExtends);
     }
 
     @Test
-    public void testUpdateCase(){
+    public void should_throwException_when_delete_caseExtendsIdNotExists(){
+        //arrange
+        when(caseService.getCaseExtendsById(17L)).thenReturn(null);
+
+        //action
+        try{
+            CaseExtendsVO caseExtendsVO=caseLogic.delete(17L);
+        }
+        //assert
+        catch(Exception e){
+            assertEquals(e instanceof IllegalArgumentException,true);
+            assertEquals(e.getMessage(),"Cannot find the caseExtends");
+        }
+    }
+
+    @Test
+    public void should_useCaseExtendsSave_when_givenCaseExtendVOAndCaseExtendsId(){
+        //arrange
         CaseExtends caseExtends=new CaseExtends();
         short platform=5;
         caseExtends.setPlatform(platform);
@@ -115,10 +133,12 @@ public class CaseLogicImplTest {
         caseExtends.setDescription("This is just a test.");
         caseExtends.setManagerId(17L);
         caseExtends.setVisible(false);
-
         when(caseService.getCaseExtendsById(17)).thenReturn(caseExtends);
+
+        //action
         caseLogic.update(caseExtendsVO,17L);
 
+        //assert
         Mockito.verify(caseService).save(caseExtends);
     }
 
@@ -139,4 +159,18 @@ public class CaseLogicImplTest {
         Assert.assertEquals(Long.valueOf(456L),result.get(0).getId());
     }
 
+    public void should_throwException_when_update_caseExtendsIdNotExists(){
+        //arrange
+        when(caseService.getCaseExtendsById(17L)).thenReturn(null);
+
+        //action
+        try{
+            caseLogic.update(caseExtendsVO,17L);
+        }
+        //assert
+        catch(Exception e){
+            assertEquals(e instanceof IllegalArgumentException,true);
+            assertEquals(e.getMessage(),"Cannot find the caseExtends");
+        }
+    }
 }