Selaa lähdekoodia

Merge branch 'DEV' into dev-target

chenxz 8 vuotta sitten
vanhempi
commit
f6e476a81a

+ 11 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/dao/ExamDao.java

@@ -3,9 +3,12 @@ package cn.iselab.mooctest.site.dao;
 import cn.iselab.mooctest.site.models.Task;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.Pageable;
+import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.repository.query.Param;
 
 import javax.transaction.Transactional;
+import java.util.List;
 
 
 /**
@@ -14,6 +17,13 @@ import javax.transaction.Transactional;
 @Transactional
 public interface ExamDao extends PagingAndSortingRepository<Task, Long> {
 
+    Page<Task> findByManagerId(long organizerId, Pageable pageable);
 
-    Page<Task> findByManagerId(long managerId, Pageable pageable);
+    @Query("SELECT t " +
+            "FROM Task t " +
+            "WHERE t.id IN( " +
+            " SELECT at.taskId " +
+            " FROM AssignedTask at " +
+            " WHERE at.workerId=:participantId)")
+    Page<Task> findByParticipantId(@Param("participantId") long participantId, Pageable pageable);
 }

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/ExamService.java

@@ -11,4 +11,6 @@ import org.springframework.data.domain.Pageable;
 public interface ExamService {
 
     public Page<Task> getExamsByOrganizerId(long organizerId, Pageable pageable);
+
+    public Page<Task> getExamsByParticipantId(long participantId, Pageable pageable);
 }

+ 6 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/service/impl/ExamServiceImpl.java

@@ -25,4 +25,10 @@ public class ExamServiceImpl extends BaseService implements ExamService {
         return examDao.findByManagerId(organizerId, pageable);
     }
 
+    @Override
+    public Page<Task> getExamsByParticipantId(long participantId, Pageable pageable) {
+        return examDao.findByParticipantId(participantId, pageable);
+    }
+
+
 }

+ 3 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ExamController.java

@@ -1,6 +1,5 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
-import cn.iselab.mooctest.site.common.constant.UrlConstants;
 import cn.iselab.mooctest.site.web.data.ExamVO;
 import cn.iselab.mooctest.site.web.data.PaperVO;
 import cn.iselab.mooctest.site.web.logic.ExamLogic;
@@ -11,7 +10,6 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
-import java.util.List;
 
 /**
  * Created by major on 2017/6/15.
@@ -34,10 +32,11 @@ public class ExamController {
         }
         Pageable pageable = new PageRequest(activePage - 1, rowsOnPage);
         if(organizerId != null && participantId == null) {
-            return examLogic.getOrganizerExamList(organizerId, pageable);
+            Page<ExamVO> vo = examLogic.getOrganizerExamList(organizerId, pageable);
+            return vo;
         }
         if(participantId != null && organizerId == null)
-            return null;
+            return examLogic.getParticipantExamList(participantId, pageable);
         return null;
     }
 

+ 1 - 1
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ExamLogic.java

@@ -14,5 +14,5 @@ public interface ExamLogic {
 
     Page<ExamVO> getOrganizerExamList(long organizerId, Pageable pageable);
 
-    List<ExamVO> getParticipantExamList(long participantId);
+    Page<ExamVO> getParticipantExamList(long participantId, Pageable pageable);
 }

+ 10 - 4
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ExamLogicImpl.java

@@ -68,9 +68,15 @@ public class ExamLogicImpl extends BaseLogic implements ExamLogic {
     }
 
     @Override
-    public List<ExamVO> getParticipantExamList(long participantId) {
-        List<Task> taskList = taskService.getTaskListByWorkerId(participantId);
-        List<ExamVO> examList = examVOWrapper.wrapParticipantExamList(taskList, participantId);
-        return examList;
+    public Page<ExamVO> getParticipantExamList(long participantId, Pageable pageable) {
+//        List<Task> taskList = taskService.getTaskListByWorkerId(participantId);
+        Page<Task> taskPage = examService.getExamsByParticipantId(participantId, pageable);
+        Page<ExamVO> examVOPage = taskPage.map(new Converter<Task, ExamVO>() {
+            @Override
+            public ExamVO convert(Task task) {
+                return examVOWrapper.wrapParticipantExam(task, participantId);
+            }
+        });
+        return examVOPage;
     }
 }

+ 97 - 0
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/service/impl/ExamServiceTest.java

@@ -0,0 +1,97 @@
+package cn.iselab.mooctest.site.service.impl;
+
+import cn.iselab.mooctest.site.Application;
+import cn.iselab.mooctest.site.dao.ExamDao;
+import cn.iselab.mooctest.site.dao.GroupDao;
+import cn.iselab.mooctest.site.models.Task;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+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.mockito.Mockito.when;
+
+/**
+ * Created by major on 2017/6/26.
+ */
+
+@RunWith(MockitoJUnitRunner.class)
+@WebAppConfiguration
+@SpringApplicationConfiguration(classes = Application.class)
+public class ExamServiceTest {
+
+    @InjectMocks
+    private ExamServiceImpl examService = new ExamServiceImpl();
+
+    @Mock
+    private ExamDao examDao;
+
+    List<Task> taskList = new ArrayList<>();
+    Page<Task> taskPage;
+    @Before
+    public void setUp() {
+
+        MockitoAnnotations.initMocks(this);
+        Task task = new Task();
+        task.setId(497L);
+        task.setBeginTime(new Timestamp(1495443120000L));
+        task.setEndTime(new Timestamp(1495999990000L));
+        task.setDuration(1);
+        task.setInformation("lalaland");
+        task.setManagerId(17L);
+        task.setName("shi juan 1");
+        task.setSubsiteId(2L);
+        taskList.add(task);
+        taskPage = new PageImpl(taskList);
+    }
+
+    @Test
+    public void should_returnExamPageData_when_givenOrganizerIdAndPageable() {
+        //arrange
+        long organizerId = 17;
+        Integer activePage = 1;
+        Integer rowsOnPage = 10;
+        Pageable pageable = new PageRequest(activePage - 1, rowsOnPage);
+
+        when(examDao.findByManagerId(organizerId, pageable)).thenReturn(taskPage);
+        //action
+        Page<Task> resultPage = examDao.findByManagerId(organizerId, pageable);
+
+        //assert
+        List<Task> expectTaskList = taskList;
+        List<Task> resultTaskList = resultPage.getContent();
+        Assert.assertEquals(expectTaskList.get(0).getId(), resultTaskList.get(0).getId());
+    }
+
+    @Test
+    public void should_returnExamPageData_when_givenParticipantIdAndPageable() {
+        //arrange
+        long participantId = 17;
+        Integer activePage = 1;
+        Integer rowsOnPage = 10;
+        Pageable pageable = new PageRequest(activePage - 1, rowsOnPage);
+
+        when(examDao.findByParticipantId(participantId, pageable)).thenReturn(taskPage);
+        //action
+        Page<Task> resultPage = examDao.findByParticipantId(participantId, pageable);
+
+        //assert
+        List<Task> expectTaskList = taskList;
+        List<Task> resultTaskList = resultPage.getContent();
+        Assert.assertEquals(expectTaskList.get(0).getId(), resultTaskList.get(0).getId());
+    }
+}

+ 38 - 35
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/ctrl/ExamControllerTest.java

@@ -1,12 +1,11 @@
 package cn.iselab.mooctest.site.web.ctrl;
 
 import cn.iselab.mooctest.site.Application;
-import cn.iselab.mooctest.site.models.Task;
-import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.web.data.ExamVO;
-import cn.iselab.mooctest.site.web.data.wrapper.ExamVOWrapper;
 import cn.iselab.mooctest.site.web.logic.ExamLogic;
-import cn.iselab.mooctest.site.web.logic.impl.ExamLogicImpl;
+import jdk.nashorn.internal.parser.JSONParser;
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
@@ -15,6 +14,10 @@ import org.mockito.InjectMocks;
 import org.mockito.Mock;
 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 org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.MvcResult;
@@ -23,6 +26,8 @@ import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyLong;
 import static org.mockito.Mockito.when;
 import static org.mockito.MockitoAnnotations.initMocks;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
@@ -44,13 +49,14 @@ public class ExamControllerTest {
 
     @Mock
     private ExamLogic examLogic;
-    List<ExamVO> expect = new ArrayList<>();
+    Page<ExamVO> expect;
 
     @Before
     public void setupMockMvc() {
         initMocks(this);
         mockMvc = MockMvcBuilders.standaloneSetup(examController).build();
 
+        List voList = new ArrayList(1);
         ExamVO examVO = new ExamVO();
         examVO.setId(497L);
         examVO.setBeginTime(1495443120000L);
@@ -64,49 +70,46 @@ public class ExamControllerTest {
         groupIds.add(111L);
         examVO.setGroupIds(groupIds);
         examVO.setManagerId(17L);
-        expect.add(examVO);
+        voList.add(examVO);
 
-    }
+        expect = new PageImpl(voList);
 
-//    @Test
-//    public void should_returnMergedList_when_givenOrganizerId() throws Exception {
-//        //arrange
-//        long organizerId = 17;
-//
-//
-//        when(examLogic.getOrganizerExamList(organizerId)).thenReturn(expect);
-//        //action
-//        MvcResult result = mockMvc.perform(
-//                get("/api/exams").param("organizer_id", "17")
-//        ).andDo(print()).andExpect(status().isOk()).andReturn();
-//
-//        //assert
-//        Assert.assertEquals("[{\"id\":497,\"name\":\"shi juan 1\",\"beginTime\":1495443120000," +
-//                        "\"endTime\":1495999990000,\"info\":\"lalaland\",\"subsiteId\":2,\"managerId\":17," +
-//                        "\"managerName\":null,\"duration\":1,\"groupIds\":[111],\"workerCount\":null," +
-//                        "\"groupNames\":null,\"status\":null}]"
-//                ,result.getResponse().getContentAsString());
-//
-//    }
+    }
 
     @Test
-    public void should_returnMergedList_when_givenParticipant() throws Exception {
+    public void should_returnPageData_when_givenOrganizerId() throws Exception {
         //arrange
-        long participantId = 17;
+        when(examLogic.getOrganizerExamList(anyLong(), any(Pageable.class))).thenReturn(expect);
+        //action
+        MvcResult result = mockMvc.perform(
+                get("/api/exams").param("organizer_id", "17")
+                        .header("activePage", "17")
+                        .header("rowsOnPage", "10")
+        ).andDo(print()).andExpect(status().isOk()).andReturn();
 
+        //assert
+        JSONObject jsonObject = new JSONObject(result.getResponse().getContentAsString());
+        JSONArray array = jsonObject.getJSONArray("content");
+        Assert.assertEquals(497L,array.getJSONObject(0).getLong("id"));
+
+    }
+
+    @Test
+    public void should_returnPageData_when_givenParticipant() throws Exception {
+        //arrange
 
-        when(examLogic.getParticipantExamList(participantId)).thenReturn(expect);
+        when(examLogic.getParticipantExamList(anyLong(), any(Pageable.class))).thenReturn(expect);
         //action
         MvcResult result = mockMvc.perform(
                 get("/api/exams").param("participant_id", "17")
+                        .header("activePage", "17")
+                        .header("rowsOnPage", "10")
         ).andDo(print()).andExpect(status().isOk()).andReturn();
 
         //assert
-        Assert.assertEquals("[{\"id\":497,\"name\":\"shi juan 1\",\"beginTime\":1495443120000," +
-                        "\"endTime\":1495999990000,\"info\":\"lalaland\",\"subsiteId\":2,\"managerId\":17," +
-                        "\"managerName\":null,\"duration\":1,\"groupIds\":[111],\"workerCount\":null," +
-                        "\"groupNames\":null,\"status\":null}]"
-                ,result.getResponse().getContentAsString());
+        JSONObject jsonObject = new JSONObject(result.getResponse().getContentAsString());
+        JSONArray array = jsonObject.getJSONArray("content");
+        Assert.assertEquals(497L,array.getJSONObject(0).getLong("id"));
 
     }
 

+ 53 - 57
mooctest-site-server/src/test/java/cn/iselab/mooctest/site/web/logic/impl/ExamLogicImplTest.java

@@ -2,6 +2,7 @@ package cn.iselab.mooctest.site.web.logic.impl;
 
 import cn.iselab.mooctest.site.Application;
 import cn.iselab.mooctest.site.models.Task;
+import cn.iselab.mooctest.site.service.ExamService;
 import cn.iselab.mooctest.site.service.TaskService;
 import cn.iselab.mooctest.site.web.data.ExamVO;
 import cn.iselab.mooctest.site.web.data.wrapper.ExamVOWrapper;
@@ -14,6 +15,10 @@ import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 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;
@@ -33,22 +38,19 @@ public class ExamLogicImplTest {
     private ExamLogicImpl examLogic = new ExamLogicImpl();
 
     @Mock
-    private TaskService taskService;
+    private ExamService examService;
 
     @Mock
     private ExamVOWrapper examVOWrapper;
 
+    List<Task> taskList = new ArrayList<>();
+    List<ExamVO> voList = new ArrayList<>();
+    Page<ExamVO> examVOPage;
+    Page<Task> taskPage;
     @Before
     public void setUp() {
-        MockitoAnnotations.initMocks(this);
-    }
 
-    @Test
-    public void should_returnTheParticipantExamList_when_givenParticipantId() {
-        //arrange
-        long participantId = 12L;
-
-        List<Task> taskList = new ArrayList<>();
+        MockitoAnnotations.initMocks(this);
         Task task = new Task();
         task.setId(497L);
         task.setBeginTime(new Timestamp(1495443120000L));
@@ -59,8 +61,8 @@ public class ExamLogicImplTest {
         task.setName("shi juan 1");
         task.setSubsiteId(2L);
         taskList.add(task);
+        taskPage = new PageImpl(taskList);
 
-        List<ExamVO> expect = new ArrayList<>();
         ExamVO examVO = new ExamVO();
         examVO.setId(497L);
         examVO.setBeginTime(1495443120000L);
@@ -70,60 +72,54 @@ public class ExamLogicImplTest {
         examVO.setManagerId(17L);
         examVO.setName("shi juan 1");
         examVO.setSubsiteId(2L);
-        expect.add(examVO);
-        when(taskService.getTaskListByWorkerId(participantId)).thenReturn(taskList);
-        when(examVOWrapper.wrapParticipantExamList(taskList, participantId)).thenReturn(expect);
+        voList.add(examVO);
+
+        examVOPage = new PageImpl(voList);
+    }
+
+    @Test
+    public void should_returnTheParticipantExamPageData_when_givenParticipantId() {
+        //arrange
+        long participantId = 12L;
+
+        Integer activePage = 1;
+        Integer rowsOnPage = 10;
+        Pageable pageable = new PageRequest(activePage - 1, rowsOnPage);
+
+        when(examService.getExamsByParticipantId(participantId, pageable)).thenReturn(taskPage);
+        when(examVOWrapper.wrapParticipantExam(taskList.get(0), participantId)).thenReturn(voList.get(0));
 
         //action
-        List<ExamVO> result = examLogic.getParticipantExamList(participantId);
+        Page<ExamVO> result = examLogic.getParticipantExamList(participantId, pageable);
 
         //assert
-        ExamVO expectExam = expect.get(0);
-        ExamVO resultExam = result.get(0);
+        ExamVO expectExam = examVOPage.getContent().get(0);
+        ExamVO resultExam = result.getContent().get(0);
         Assert.assertEquals(expectExam.getId(), resultExam.getId());
         Assert.assertEquals(expectExam.getManagerId(), resultExam.getManagerId());
 
     }
 
-//    @Test
-//    public void should_returnTheOrganizerExamList_when_givenParticipantId() {
-//        //arrange
-//        long organizerId = 12L;
-//
-//        List<Task> taskList = new ArrayList<>();
-//        Task task = new Task();
-//        task.setId(497L);
-//        task.setBeginTime(new Timestamp(1495443120000L));
-//        task.setEndTime(new Timestamp(1495999990000L));
-//        task.setDuration(1);
-//        task.setInformation("lalaland");
-//        task.setManagerId(17L);
-//        task.setName("shi juan 1");
-//        task.setSubsiteId(2L);
-//        taskList.add(task);
-//
-//        List<ExamVO> expect = new ArrayList<>();
-//        ExamVO examVO = new ExamVO();
-//        examVO.setId(497L);
-//        examVO.setBeginTime(1495443120000L);
-//        examVO.setEndTime(1495999990000L);
-//        examVO.setDuration(1);
-//        examVO.setInfo("lalaland");
-//        examVO.setManagerId(17L);
-//        examVO.setName("shi juan 1");
-//        examVO.setSubsiteId(2L);
-//        expect.add(examVO);
-//        when(taskService.getTaskList(organizerId)).thenReturn(taskList);
-//        when(examVOWrapper.wrapOrganizerExamList(taskList, organizerId)).thenReturn(expect);
-//
-//        //action
-//        List<ExamVO> result = examLogic.getOrganizerExamList(organizerId);
-//
-//        //assert
-//        ExamVO expectExam = expect.get(0);
-//        ExamVO resultExam = result.get(0);
-//        Assert.assertEquals(expectExam.getId(), resultExam.getId());
-//        Assert.assertEquals(expectExam.getManagerId(), resultExam.getManagerId());
-//
-//    }
+    @Test
+    public void should_returnTheOrganizerExamPageData_when_givenOrganizerId() {
+        //arrange
+        long organizerId = 12L;
+
+        Integer activePage = 1;
+        Integer rowsOnPage = 10;
+        Pageable pageable = new PageRequest(activePage - 1, rowsOnPage);
+
+        when(examService.getExamsByOrganizerId(organizerId, pageable)).thenReturn(taskPage);
+        when(examVOWrapper.wrapOrganizerExam(taskList.get(0), organizerId)).thenReturn(voList.get(0));
+
+        //action
+        Page<ExamVO> result = examLogic.getOrganizerExamList(organizerId, pageable);
+
+        //assert
+        ExamVO expectExam = examVOPage.getContent().get(0);
+        ExamVO resultExam = result.getContent().get(0);
+        Assert.assertEquals(expectExam.getId(), resultExam.getId());
+        Assert.assertEquals(expectExam.getManagerId(), resultExam.getManagerId());
+
+    }
 }