Bladeren bron

初始化Mediator

薛晓波 6 jaren geleden
bovenliggende
commit
297787b01f

+ 11 - 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-->

+ 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;

+ 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;
+}

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

@@ -1,6 +1,10 @@
 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
@@ -8,4 +12,14 @@ import lombok.Data;
  */
 @Data
 public class ProjectVO {
+
+    public ProjectVO(CrowdTestProject project){
+        BeanUtils.copyProperties(project, this);
+    }
+
+    public CrowdTestProject toCrowdTestProject(){
+        //todo
+
+        return new CrowdTestProject();
+    }
 }

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

@@ -1,8 +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();
+    }
 }

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

@@ -1,6 +1,10 @@
 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
@@ -8,4 +12,14 @@ import lombok.Data;
  */
 @Data
 public class TaskVO {
+
+    public TaskVO(CrowdTestTask task){
+        BeanUtils.copyProperties(task, this);
+    }
+
+    public CrowdTestTask toCrowdTestTask(){
+        //todo
+
+        return new CrowdTestTask();
+    }
 }

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

@@ -1,8 +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());
+    }
+}