Переглянути джерело

Merge branch 'feature_dto_render' into 'master'

Feature dto render

See merge request crowd-2019/crowd-test-service-backend!3
薛晓波 6 роки тому
батько
коміт
4f48c68747

+ 3 - 1
.gitignore

@@ -3,6 +3,7 @@ precompiled
 /conf/application.conf
 test-result
 .classpath
+.project
 *.launch
 *.classpath
 *.DS_Store
@@ -12,4 +13,5 @@ test-result
 **.log
 /log/
 .idea/
-**target/
+**target/
+.settings/

+ 16 - 1
pom.xml

@@ -17,9 +17,19 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-all</artifactId>
-            <version>1.8.5</version>
+            <version>1.10.19</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-module-junit4</artifactId>
+            <version>1.6.4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.powermock</groupId>
+            <artifactId>powermock-api-mockito</artifactId>
+            <version>1.6.4</version>
+        </dependency>
 
         <!--dubbo-service-api-->
         <!--dubbo-dependency-->
@@ -39,6 +49,11 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>1.18.6</version>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 5 - 0
src/main/java/com/mooctest/crowd/domain/command/LoginCommand.java

@@ -1,9 +1,14 @@
 package com.mooctest.crowd.domain.command;
 
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 14:24
  */
+@NoArgsConstructor
+@AllArgsConstructor
 public class LoginCommand {
     private String mobileNum;
     private String password;

+ 5 - 0
src/main/java/com/mooctest/crowd/domain/command/RegisterCommand.java

@@ -1,9 +1,14 @@
 package com.mooctest.crowd.domain.command;
 
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
 /**
  * @Author: xuexb
  * @Date: 2019.7.5 14:09
  */
+@AllArgsConstructor
+@NoArgsConstructor
 public class RegisterCommand {
     private String mobileNum;
     private String checkCode;

+ 17 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/IndexDTO.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ReportVO;
+import com.mooctest.crowd.domain.data.vo.TaskVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:15
+ */
+@Data
+public class IndexDTO {
+    private TaskVO taskVO;
+    private List<ReportVO> reportVOList;
+}

+ 20 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/MyCrowdDTO.java

@@ -0,0 +1,20 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ProjectVO;
+import com.mooctest.crowd.domain.data.vo.TaskVO;
+import com.mooctest.crowd.domain.data.vo.UserVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:17
+ */
+@Data
+public class MyCrowdDTO {
+    private UserVO userVO;
+    private List<TaskVO> unfinishedTasks;
+    private List<TaskVO> finishedTasks;
+    private List<ProjectVO> projectVOList;
+}

+ 19 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/ProjectDTO.java

@@ -0,0 +1,19 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ProjectVO;
+import com.mooctest.crowd.domain.data.vo.ReportVO;
+import com.mooctest.crowd.domain.data.vo.TaskVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:17
+ */
+@Data
+public class ProjectDTO {
+    private ProjectVO projectVO;
+    private List<TaskVO> taskVOList;
+    private List<ReportVO> reportVOList;
+}

+ 13 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/ReportDTO.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ReportVO;
+import lombok.Data;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:29
+ */
+@Data
+public class ReportDTO {
+    ReportVO reportVO;
+}

+ 17 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/TaskDTO.java

@@ -0,0 +1,17 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ReportVO;
+import com.mooctest.crowd.domain.data.vo.TaskVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:17
+ */
+@Data
+public class TaskDTO {
+    private TaskVO taskVO;
+    private List<ReportVO> reportVOList;
+}

+ 15 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/TaskSquareDTO.java

@@ -0,0 +1,15 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.TaskVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:16
+ */
+@Data
+public class TaskSquareDTO {
+    private List<TaskVO> taskVOList;
+}

+ 23 - 0
src/main/java/com/mooctest/crowd/domain/data/dto/UserDTO.java

@@ -0,0 +1,23 @@
+package com.mooctest.crowd.domain.data.dto;
+
+import com.mooctest.crowd.domain.data.vo.ProjectVO;
+import com.mooctest.crowd.domain.data.vo.UserVO;
+import com.mooctest.crowd.domain.domainobject.Permission;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.16 20:21
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserDTO {
+    private UserVO userVO;
+    private List<Permission> permissions;
+    private List<ProjectVO> projectVOS;
+}

+ 25 - 0
src/main/java/com/mooctest/crowd/domain/data/vo/ProjectVO.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:41
+ */
+@Data
+public class ProjectVO {
+
+    public ProjectVO(CrowdTestProject project){
+        BeanUtils.copyProperties(project, this);
+    }
+
+    public CrowdTestProject toCrowdTestProject(){
+        //todo
+
+        return new CrowdTestProject();
+    }
+}

+ 26 - 0
src/main/java/com/mooctest/crowd/domain/data/vo/ReportVO.java

@@ -0,0 +1,26 @@
+package com.mooctest.crowd.domain.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.CrowdTestReport;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:36
+ */
+@Data
+public class ReportVO {
+
+    public ReportVO(CrowdTestReport report){
+        BeanUtils.copyProperties(report, this);
+    }
+
+    public CrowdTestReport toCrowdTestReport(){
+        //todo
+
+        return new CrowdTestReport();
+    }
+}

+ 25 - 0
src/main/java/com/mooctest/crowd/domain/data/vo/TaskVO.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:36
+ */
+@Data
+public class TaskVO {
+
+    public TaskVO(CrowdTestTask task){
+        BeanUtils.copyProperties(task, this);
+    }
+
+    public CrowdTestTask toCrowdTestTask(){
+        //todo
+
+        return new CrowdTestTask();
+    }
+}

+ 25 - 0
src/main/java/com/mooctest/crowd/domain/data/vo/UserVO.java

@@ -0,0 +1,25 @@
+package com.mooctest.crowd.domain.data.vo;
+
+import com.mooctest.crowd.domain.domainobject.User;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.15 20:41
+ */
+@Data
+public class UserVO {
+
+    public UserVO(User user){
+        BeanUtils.copyProperties(user, this);
+    }
+
+    public User toUser(){
+        //todo
+
+        return new User();
+    }
+}

+ 14 - 0
src/main/java/com/mooctest/crowd/domain/mediator/Mediator.java

@@ -0,0 +1,14 @@
+package com.mooctest.crowd.domain.mediator;
+
+import com.mooctest.crowd.domain.command.LoginCommand;
+import com.mooctest.crowd.domain.command.RegisterCommand;
+import com.mooctest.crowd.domain.exception.PasswordErrorException;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.16 20:25
+ */
+public interface Mediator {
+    boolean login(LoginCommand cmd) throws PasswordErrorException;
+    boolean register(RegisterCommand registerCommand);
+}

+ 24 - 0
src/main/java/com/mooctest/crowd/domain/mediator/impl/WebMediatorImpl.java

@@ -0,0 +1,24 @@
+package com.mooctest.crowd.domain.mediator.impl;
+
+import com.mooctest.crowd.domain.command.LoginCommand;
+import com.mooctest.crowd.domain.command.RegisterCommand;
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import com.mooctest.crowd.domain.factory.AccountFactory;
+import com.mooctest.crowd.domain.mediator.Mediator;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.16 20:27
+ */
+public class WebMediatorImpl implements Mediator {
+    @Override
+    public boolean login(LoginCommand cmd) throws PasswordErrorException {
+        return AccountFactory.createAccount().login(cmd);
+    }
+
+    @Override
+    public boolean register(RegisterCommand registerCommand) {
+        return false;
+    }
+}

+ 65 - 0
src/test/java/com/mooctest/crowd/domain/mediator/impl/WebMediatorImplTest.java

@@ -0,0 +1,65 @@
+package com.mooctest.crowd.domain.mediator.impl;
+
+import com.mooctest.crowd.domain.command.LoginCommand;
+import com.mooctest.crowd.domain.command.RegisterCommand;
+import com.mooctest.crowd.domain.domainobject.Account;
+import com.mooctest.crowd.domain.exception.PasswordErrorException;
+import com.mooctest.crowd.domain.factory.AccountFactory;
+import com.mooctest.crowd.domain.mediator.Mediator;
+import com.mooctest.crowd.domain.service.RegisterService;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import static org.junit.Assert.*;
+import static org.mockito.Matchers.any;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.16 20:39
+ */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(AccountFactory.class)
+public class WebMediatorImplTest {
+
+
+    private Mediator mediator;
+    private Account account;
+
+    @Before
+    public void setUp(){
+        account = new Account();
+        account.setPassword("CORRECT_PWD");
+        account.setMobileNum("EXiSTS_MOBILE");
+
+        mediator = new WebMediatorImpl();
+    }
+
+    @Test
+    public void should_return_true_when_login_success() throws PasswordErrorException {
+        //arrange
+        PowerMockito.mockStatic(AccountFactory.class);
+        PowerMockito.when(AccountFactory.createAccount()).thenReturn(account);
+        LoginCommand cmd = new LoginCommand("EXiSTS_MOBILE", "CORRECT_PWD", "CODE");
+        //action
+        boolean success = mediator.login(cmd);
+        //assert
+        assertTrue(success);
+    }
+
+    @Test
+    public void should_return_account_when_register_success() {
+        //arrange
+        RegisterCommand cmd = new RegisterCommand("NEW_MOBILE","CODE","PWD");
+
+        //action
+        Account newAccount = RegisterService.register(cmd);
+
+        //assert
+        assertEquals("NEW_MOBILE", newAccount.getMobileNum());
+    }
+}