Browse Source

add-regionalmanager-testcase

guochao 6 years ago
parent
commit
3eac33d005
23 changed files with 1147 additions and 227 deletions
  1. 43 0
      pom.xml
  2. 10 1
      src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java
  3. 101 0
      src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java
  4. 2 2
      src/main/java/com/mooctest/crowd/domain/domainobject/Account.java
  5. 22 6
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  6. 13 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectStatus.java
  7. 83 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java
  8. 103 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  9. 12 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java
  10. 100 0
      src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  11. 1 0
      src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java
  12. 145 0
      src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java
  13. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/CrowdTestProjectNotExistException.java
  14. 1 1
      src/main/java/com/mooctest/crowd/domain/exception/CrowdTestTaskNotExistException.java
  15. 16 0
      src/main/java/com/mooctest/crowd/domain/factory/CrowdTestProjectFactory.java
  16. 0 13
      src/main/java/com/mooctest/crowd/domain/factory/TestProjectFactory.java
  17. 131 0
      src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  18. 27 0
      src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java
  19. 0 25
      src/main/java/com/mooctest/crowd/domain/repository/ITestProjectRepo.java
  20. 0 88
      src/main/java/com/mooctest/crowd/domain/repository/TestProjectRepo.java
  21. 3 2
      src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java
  22. 142 89
      src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java
  23. 184 0
      src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java

+ 43 - 0
pom.xml

@@ -14,5 +14,48 @@
             <artifactId>junit</artifactId>
             <version>4.12</version>
         </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-all</artifactId>
+            <version>1.8.5</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!--dubbo-service-api-->
+        <!--dubbo-dependency-->
+        <!-- https://mvnrepository.com/artifact/io.dubbo.springboot/spring-boot-starter-dubbo -->
+        <dependency>
+            <groupId>io.dubbo.springboot</groupId>
+            <artifactId>spring-boot-starter-dubbo</artifactId>
+            <version>1.0.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.javassist</groupId>
+                    <artifactId>javassist</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-log4j12</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <version>3.7.0</version>
+                <configuration>
+                    <source>1.8</source>
+                    <target>1.8</target>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.surefire</groupId>
+                <artifactId>surefire-junit4</artifactId>
+                <version>2.18.1</version>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 10 - 1
src/main/java/com/mooctest/crowd/domain/command/TestProjectCommand.java → src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java

@@ -7,7 +7,7 @@ import java.util.Date;
  * @author guochao
  * @date 2019/7/6 18:50
  */
-public class TestProjectCommand {
+public class CrowdTestProjectCommand {
     private Long id;
     private String name;
     private String description;
@@ -16,6 +16,7 @@ public class TestProjectCommand {
     private File projectFile;
     private File requirement;
     private double quotedPrice;
+    private String status;
     private Date creatTime;
 
     public Long getId() {
@@ -82,6 +83,14 @@ public class TestProjectCommand {
         this.quotedPrice = quotedPrice;
     }
 
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
     public Date getCreatTime() {
         return creatTime;
     }

+ 101 - 0
src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java

@@ -0,0 +1,101 @@
+package com.mooctest.crowd.domain.command;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:14
+ */
+public class CrowdTestTaskCommand {
+    private Long id;
+    private String name;
+    private Long projectId;
+    private Long institutionId;
+    private int type;
+    private String description;
+    private File requirementFile;
+    public Double price;
+    private String status;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
+
+    public Long getInstitutionId() {
+        return institutionId;
+    }
+
+    public void setInstitutionId(Long institutionId) {
+        this.institutionId = institutionId;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public File getRequirementFile() {
+        return requirementFile;
+    }
+
+    public void setRequirementFile(File requirementFile) {
+        this.requirementFile = requirementFile;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+}

+ 2 - 2
src/main/java/com/mooctest/crowd/domain/domainobject/Account.java

@@ -40,7 +40,7 @@ public class Account {
     public List<Permission> distributePermission(){
         List<Permission> permissions = new ArrayList<Permission>();
         Permission permission = new Permission();
-        permission.setId(new Long(10001));
+        permission.setId(1L);
         permission.setName("PERMISSION_ONE");
         permission.setResource("Resource_ONE");
         permission.setOperation("OPERATION_ONE");
@@ -51,7 +51,7 @@ public class Account {
     public List<Role> distributeRole() {
         List<Role> roles = new ArrayList<Role>();
         Role role = new Role();
-        role.setId(new Long(10001));
+        role.setId(1L);
         role.setName("GeneralUser");
         roles.add(role);
         return roles;

+ 22 - 6
src/main/java/com/mooctest/crowd/domain/domainobject/TestProject.java → src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -1,13 +1,18 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @author guochao
  * @date 2019/7/6 18:27
  */
-public class TestProject {
+
+public class CrowdTestProject {
 
     private Long id;
     private String name;
@@ -19,9 +24,19 @@ public class TestProject {
     private File requirement;
     private double quotedPrice;
     private double fixedPrice;
-    private String state;
+    private String status;
     private Date creatTime;
 
+    private List<CrowdTestTask> crowdTestTaskList;
+
+    public List<CrowdTestTask> getCrowdTestTaskList() {
+        return crowdTestTaskList;
+    }
+
+    public void setCrowdTestTaskList(List<CrowdTestTask> crowdTestTaskList) {
+        this.crowdTestTaskList = crowdTestTaskList;
+    }
+
     public Long getId() {
         return id;
     }
@@ -102,12 +117,12 @@ public class TestProject {
         this.fixedPrice = fixedPrice;
     }
 
-    public String getState() {
-        return state;
+    public String getStatus() {
+        return status;
     }
 
-    public void setState(String state) {
-        this.state = state;
+    public void setStatus(String status) {
+        this.status = status;
     }
 
     public Date getCreatTime() {
@@ -117,4 +132,5 @@ public class TestProject {
     public void setCreatTime(Date creatTime) {
         this.creatTime = creatTime;
     }
+
 }

+ 13 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectStatus.java

@@ -0,0 +1,13 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestProjectStatus {
+    public static final String created = "HAS_CREATED";
+    public static final String released = "HAS_RELEASED";
+    public static final String received = "HAS_RECEIVED";
+    public static final String splited = "HAS_SPLITED";
+    public static final String finished = "HAS_FINISHED";
+}

+ 83 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java

@@ -0,0 +1,83 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:16
+ */
+public class CrowdTestReport {
+
+    private Long id;
+    private Long projectId;
+    private Long taskId;
+    private int type;
+    private String description;
+    private String content;
+    private String status;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
+
+    public Long getTaskId() {
+        return taskId;
+    }
+
+    public void setTaskId(Long taskId) {
+        this.taskId = taskId;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+}

+ 103 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -0,0 +1,103 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:14
+ */
+public class CrowdTestTask {
+    private Long id;
+    private String name;
+    private Long projectId;
+    private Long institutionId;
+    private int type;
+    private String description;
+    private File requirementFile;
+    private Double price;
+    private String status;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
+
+    public Long getInstitutionId() {
+        return institutionId;
+    }
+
+    public void setInstitutionId(Long institutionId) {
+        this.institutionId = institutionId;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public File getRequirementFile() {
+        return requirementFile;
+    }
+
+    public void setRequirementFile(File requirementFile) {
+        this.requirementFile = requirementFile;
+    }
+
+
+    public String getStatus() {
+        return status;
+    }
+
+    public Double getPrice() {
+        return price;
+    }
+
+    public void setPrice(Double price) {
+        this.price = price;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+}

+ 12 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java

@@ -0,0 +1,12 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestTaskStatus {
+    public static final String created = "HAS_CREATED";
+    public static final String released = "HAS_RELEASED";
+    public static final String received = "HAS_RECEIVED";
+    public static final String finished = "HAS_FINISHED";
+}

+ 100 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -0,0 +1,100 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/12 1:32
+ */
+public class EvaluationAgency {
+    private Long id;
+    private Long userId;
+    private String name;
+    private String bankAccount;
+    private String address;
+    private String ablilities;
+    private String resource;
+    private String photo;
+    private Date updateTime;
+    private Date expireTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getBankAccount() {
+        return bankAccount;
+    }
+
+    public void setBankAccount(String bankAccount) {
+        this.bankAccount = bankAccount;
+    }
+
+    public String getAddress() {
+        return address;
+    }
+
+    public void setAddress(String address) {
+        this.address = address;
+    }
+
+    public String getAblilities() {
+        return ablilities;
+    }
+
+    public void setAblilities(String ablilities) {
+        this.ablilities = ablilities;
+    }
+
+    public String getResource() {
+        return resource;
+    }
+
+    public void setResource(String resource) {
+        this.resource = resource;
+    }
+
+    public String getPhoto() {
+        return photo;
+    }
+
+    public void setPhoto(String photo) {
+        this.photo = photo;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Date getExpireTime() {
+        return expireTime;
+    }
+
+    public void setExpireTime(Date expireTime) {
+        this.expireTime = expireTime;
+    }
+}

+ 1 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java

@@ -6,4 +6,5 @@ package com.mooctest.crowd.domain.domainobject;
  */
 public class GeneralUser extends User{
 
+
 }

+ 145 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java

@@ -0,0 +1,145 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:16
+ */
+public class RegionalManager {
+
+    private Long id;
+    private String name;
+    private Long projectId;
+    private Long institutionId;
+    private int type;
+    private String description;
+    private File requirementFile;
+    private String status;
+    private Date creatTime;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Long getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(Long projectId) {
+        this.projectId = projectId;
+    }
+
+    public Long getInstitutionId() {
+        return institutionId;
+    }
+
+    public void setInstitutionId(Long institutionId) {
+        this.institutionId = institutionId;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public void setType(int type) {
+        this.type = type;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public File getRequirementFile() {
+        return requirementFile;
+    }
+
+    public void setRequirementFile(File requirementFile) {
+        this.requirementFile = requirementFile;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Date getCreatTime() {
+        return creatTime;
+    }
+
+    public void setCreatTime(Date creatTime) {
+        this.creatTime = creatTime;
+    }
+
+    public List<CrowdTestTask> splitCrowdTestProjectToCrowdTestTaskList(Long projectId) throws CrowdTestProjectNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        if(crowdTestProjectRepo.getByID(projectId) != null){
+            return new ArrayList<CrowdTestTask>();
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public CrowdTestProject fixedPriceForCrowdTestTask(Long projectId, Long taskId, Double price) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        boolean flag = false;
+        if(crowdTestProjectRepo.getByID(projectId) != null){
+            CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+            List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+            for (CrowdTestTask crowdTestTask: crowdTestTaskList) {
+                if(crowdTestTask.getId() == taskId){
+                    crowdTestTask.setPrice(price);
+                    flag = true;
+                    return crowdTestProject;
+                }
+            }
+            if(!flag)
+                throw new CrowdTestTaskNotExistException();
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public boolean distributeCrowdTestTask(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        boolean flag = false;
+        if(crowdTestProjectRepo.getByID(projectId) != null){
+            CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+            List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+            for (CrowdTestTask crowdTestTask: crowdTestTaskList) {
+                if(crowdTestTask.getId() == taskId){
+                    crowdTestTask.setStatus(status);
+                    flag = true;
+                    return true;
+                }
+            }
+            if(!flag)
+                throw new CrowdTestTaskNotExistException();
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+}

+ 8 - 0
src/main/java/com/mooctest/crowd/domain/exception/CrowdTestProjectNotExistException.java

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 22:10
+ */
+public class CrowdTestProjectNotExistException extends Throwable {
+}

+ 1 - 1
src/main/java/com/mooctest/crowd/domain/exception/TestProjectNotExistException.java → src/main/java/com/mooctest/crowd/domain/exception/CrowdTestTaskNotExistException.java

@@ -4,5 +4,5 @@ package com.mooctest.crowd.domain.exception;
  * @author guochao
  * @date 2019/7/6 22:10
  */
-public class TestProjectNotExistException extends Throwable {
+public class CrowdTestTaskNotExistException extends Throwable {
 }

+ 16 - 0
src/main/java/com/mooctest/crowd/domain/factory/CrowdTestProjectFactory.java

@@ -0,0 +1,16 @@
+package com.mooctest.crowd.domain.factory;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 21:43
+ */
+@Component
+public class CrowdTestProjectFactory {
+
+    public static CrowdTestProject createCrowdTestProject() {
+        return new CrowdTestProject();
+    }
+}

+ 0 - 13
src/main/java/com/mooctest/crowd/domain/factory/TestProjectFactory.java

@@ -1,13 +0,0 @@
-package com.mooctest.crowd.domain.factory;
-
-import com.mooctest.crowd.domain.domainobject.TestProject;
-
-/**
- * @author guochao
- * @date 2019/7/6 21:43
- */
-public class TestProjectFactory {
-    public static TestProject createTestProject() {
-        return new TestProject();
-    }
-}

+ 131 - 0
src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -0,0 +1,131 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.domainobject.CrowdTestTask;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+import java.io.File;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 19:09
+ */
+@Component
+public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
+
+    private Logger LOG = LoggerFactory.getLogger(CrowdTestProjectRepo.class);
+
+    public CrowdTestProject getByName(String name) {
+        if(name.equals("PROJECT_ONE")){
+            CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
+            crowdTestProject.setName("PROJECT_ONE");
+            crowdTestProject.setDescription("DESCRIPTION");
+            crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
+            crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+            crowdTestProject.setQuotedPrice(200.00);
+            crowdTestProject.setCreatTime(new Date());
+            return crowdTestProject;
+        }else
+            return null;
+    }
+
+    public CrowdTestProject getByID(Long id) throws CrowdTestProjectNotExistException {
+        if(id == 1L){
+            CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
+            crowdTestProject.setId(id);
+            crowdTestProject.setName("PROJECT_ONE");
+            crowdTestProject.setDistributeId(123L);
+            crowdTestProject.setDescription("DESCRIPTION");
+            crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
+            crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+            crowdTestProject.setQuotedPrice(200.00);
+            crowdTestProject.setCreatTime(new Date());
+
+            List<CrowdTestTask> crowdTestTaskList = new ArrayList<CrowdTestTask>();
+            CrowdTestTask crowdTestTask = new CrowdTestTask();
+            crowdTestTask.setId(101L);
+            crowdTestTask.setPrice(100.00);
+            crowdTestTaskList.add(crowdTestTask);
+            crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+
+            return crowdTestProject;
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public List<CrowdTestProject> getByIDList(String[] ids) {
+        return null;
+    }
+
+
+    public CrowdTestProject addCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
+        if(this.getByName(crowdTestProject.getName()) != null){
+            String reason = "测试项目已存在";
+//            System.out.println("reason = " + reason);
+            createLogForCreateTestProject(crowdTestProject, reason);
+            return null;
+        }else {
+//            System.out.println("测试项目不存在");
+            return crowdTestProject;
+        }
+
+    }
+
+    private void createLogForCreateTestProject(CrowdTestProject crowdTestProject, String reason) {
+        Object testProjectName = crowdTestProject.getName();
+        Date date = new Date();
+        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        LOG.error("用户{}创建项目失败,失败时间:{},失败原因:{}",new Object[]{testProjectName,df.format(date), reason});
+    }
+
+    public void addCrowdTestProjects(List<CrowdTestProject> crowdTestProjects) {
+
+    }
+
+    public boolean removeCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
+        if(crowdTestProject.getId().equals(1L)){
+            return true;
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
+        CrowdTestProject oldCrowdTestProject = getByID(crowdTestProject.getId());
+        if(oldCrowdTestProject.getId().equals(crowdTestProject.getId())){
+            oldCrowdTestProject = crowdTestProject;
+            return oldCrowdTestProject;
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    @Override
+    public CrowdTestProject updateCrowdTestProjectStatus(Long id, String status) throws CrowdTestProjectNotExistException {
+        if (this.getByID(id).getId().equals(id)){
+            CrowdTestProject crowdTestProject = this.getByID(id);
+            crowdTestProject.setStatus(status);
+            return crowdTestProject;
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public boolean updateCrowdTestProjectList(List<CrowdTestProject> crowdTestProjects) throws CrowdTestProjectNotExistException {
+        List<CrowdTestProject> oldCrowdTestProjects = new ArrayList<CrowdTestProject>();
+        for (CrowdTestProject crowdTestProject : crowdTestProjects){
+            if (crowdTestProject.getId().equals(1L) || crowdTestProject.getId().equals(2L)){
+                oldCrowdTestProjects.add(crowdTestProject);
+            }else{
+                throw new CrowdTestProjectNotExistException();
+            }
+        }
+        return true;
+
+    }
+}

+ 27 - 0
src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.domain.repository;
+
+import com.mooctest.crowd.domain.domainobject.CrowdTestProject;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+
+import java.util.List;
+
+/**
+ * @author guochao
+ * @date 2019/7/6 19:10
+ */
+public interface ICrowdTestProjectRepo {
+    CrowdTestProject getByID(Long id) throws CrowdTestProjectNotExistException;
+
+    List<CrowdTestProject> getByIDList(String[] ids);
+
+    CrowdTestProject addCrowdTestProject(CrowdTestProject testProject) throws CrowdTestProjectNotExistException;
+
+    void addCrowdTestProjects(List<CrowdTestProject> crowdTestProjects);
+
+    boolean removeCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException;
+
+    CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException;
+
+    CrowdTestProject updateCrowdTestProjectStatus(Long id, String status) throws CrowdTestProjectNotExistException;
+
+}

+ 0 - 25
src/main/java/com/mooctest/crowd/domain/repository/ITestProjectRepo.java

@@ -1,25 +0,0 @@
-package com.mooctest.crowd.domain.repository;
-
-import com.mooctest.crowd.domain.command.TestProjectCommand;
-import com.mooctest.crowd.domain.domainobject.TestProject;
-import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
-
-import java.util.List;
-
-/**
- * @author guochao
- * @date 2019/7/6 19:10
- */
-public interface ITestProjectRepo {
-    TestProject getByID(Long id) throws TestProjectNotExistException;
-
-    List<TestProject> getByIDList(String[] ids);
-
-    TestProject addTestProject(TestProjectCommand cmd);
-
-    void addTestProjects(List<TestProject> testProjects);
-
-    boolean removeTestProject(TestProject testProject) throws TestProjectNotExistException;
-
-    boolean updateTestProject(TestProject testProject) throws TestProjectNotExistException;
-}

+ 0 - 88
src/main/java/com/mooctest/crowd/domain/repository/TestProjectRepo.java

@@ -1,88 +0,0 @@
-package com.mooctest.crowd.domain.repository;
-
-import com.mooctest.crowd.domain.command.TestProjectCommand;
-import com.mooctest.crowd.domain.domainobject.TestProject;
-import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
-import com.mooctest.crowd.domain.factory.TestProjectFactory;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-/**
- * @author guochao
- * @date 2019/7/6 19:09
- */
-public class TestProjectRepo implements ITestProjectRepo{
-
-    public TestProject getByID(Long id) throws TestProjectNotExistException {
-        if(id.equals(new Long(10001))){
-            TestProject testProject = new TestProject();
-            testProject.setId(id);
-            testProject.setName("PROJECT_ONE");
-            testProject.setDescription("DESCRIPTION");
-            testProject.setProjectFile(new File("PROJECTFILE.TXT"));
-            testProject.setRequirement(new File("REQUIREMENT.TXT"));
-            testProject.setQuotedPrice(200.00);
-            testProject.setCreatTime(new Date());
-            return testProject;
-        }
-        throw new TestProjectNotExistException();
-    }
-
-    public List<TestProject> getByIDList(String[] ids) {
-        return null;
-    }
-
-    public TestProject addTestProject(TestProjectCommand cmd) {
-        TestProject testProject = TestProjectFactory.createTestProject();
-        testProject.setId(new Long(10001));
-        testProject.setName(cmd.getName());
-        testProject.setDescription(cmd.getDescription());
-        testProject.setProjectFile(cmd.getProjectFile());
-        testProject.setRequirement(cmd.getRequirement());
-        testProject.setCreatTime(cmd.getCreatTime());
-        testProject.setQuotedPrice(cmd.getQuotedPrice());
-        return testProject;
-    }
-
-    public void addTestProjects(List<TestProject> testProjects) {
-
-    }
-
-    public boolean removeTestProject(TestProject testProject) throws TestProjectNotExistException {
-        if(testProject.getId().equals(new Long(10001))){
-            return true;
-        }
-        throw new TestProjectNotExistException();
-    }
-
-    public boolean updateTestProject(TestProject testProject) throws TestProjectNotExistException {
-        TestProject oldTestProject = new TestProject();
-        oldTestProject.setId(new Long(10001));
-        if(oldTestProject.getId().equals(testProject.getId())){
-            oldTestProject = testProject;
-            return true;
-        }
-        throw new TestProjectNotExistException();
-    }
-    public boolean updateTestProjectList(List<TestProject> testProjects) throws TestProjectNotExistException {
-        List<TestProject> oldTestProjects = new ArrayList<TestProject>();
-//        TestProject testProject1 = new TestProject();
-//        testProject1.setId(new Long(10001));
-//        TestProject testProject2 = new TestProject();
-//        testProject2.setId(new Long(10002));
-//        oldTestProjects.add(testProject1);
-//        oldTestProjects.add(testProject2);
-        for (TestProject testProject : testProjects){
-            if (testProject.getId().equals(new Long(10001)) || testProject.getId().equals(new Long(10002))){
-                oldTestProjects.add(testProject);
-            }else{
-                throw new TestProjectNotExistException();
-            }
-        }
-        return true;
-
-    }
-}

+ 3 - 2
src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java

@@ -18,6 +18,7 @@ import static org.junit.Assert.*;
  */
 public class AccountTest {
 
+
     @Test
     public void should_return_true_when_login_success() throws AccountNotExistException, PasswordErrorException {
         // arrange
@@ -75,7 +76,7 @@ public class AccountTest {
         // action
         List<Permission> permissions = account.distributePermission();
         // assert
-        assertEquals(permissions.get(0).getId(),new Long(10001));
+        assertEquals(permissions.get(0).getId(), new Long(1));
     }
 
     @Test
@@ -86,7 +87,7 @@ public class AccountTest {
         // action
         List<Role> roles = account.distributeRole();
         // assert
-        assertEquals(roles.get(0).getId(),new Long(10001));
+        assertEquals(roles.get(0).getId(), new Long(1));
     }
 
     private LoginCommand getSuccessLoginCommand() {

+ 142 - 89
src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java

@@ -1,9 +1,11 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import com.mooctest.crowd.domain.command.TestProjectCommand;
-import com.mooctest.crowd.domain.exception.TestProjectNotExistException;
-import com.mooctest.crowd.domain.repository.TestProjectRepo;
+import com.mooctest.crowd.domain.command.CrowdTestProjectCommand;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.runners.MockitoJUnitRunner;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -16,154 +18,205 @@ import static org.junit.Assert.*;
  * @author guochao
  * @date 2019/7/6 18:17
  */
+@RunWith(MockitoJUnitRunner.class)
 public class GeneralUserTest {
+//    @InjectMocks
+//    private  GeneralUser generalUser = new GeneralUser();
+//
+//    @Mock
+//    private CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
+//
+////    @Mock
+//    private CrowdTestProject testProject = new CrowdTestProject();
+//
+//    @Before
+//    public void setUp() throws CrowdTestProjectNotExistException {
+//        MockitoAnnotations.initMocks(this);
+//
+//        testProject.setId(1L);
+//        testProject.setName("PROJECT_ONE");
+//        testProject.setDescription("DESCRIPTION");
+//        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
+//        testProject.setRequirement(new File("REQUIREMENT.TXT"));
+//        testProject.setQuotedPrice(200.00);
+//        testProject.setCreatTime(new Date());
+//
+//        when(testProjectRepo.getByID(1L)).thenReturn(testProject);
+//    }
+
 
     @Test
-    public void should_return_success_when_create_test_project_success(){
+    public void should_return_true_when_create_crowd_test_project_success() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProjectCommand testProjectCommand = new TestProjectCommand();
-        testProjectCommand.setName("PROJECT_ONE");
-        testProjectCommand.setDescription("DESCRIPTION");
-        testProjectCommand.setProjectFile(new File("PROJECTFILE.TXT"));
-        testProjectCommand.setRequirement(new File("REQUIREMENT.TXT"));
-        testProjectCommand.setQuotedPrice(200.00);
-        testProjectCommand.setCreatTime(new Date());
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
+        crowdTestProjectCommand.setName("PROJECT_TWO");
+        crowdTestProjectCommand.setDescription("DESCRIPTION");
+        crowdTestProjectCommand.setDistributeId(123L);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.created);
+        crowdTestProjectCommand.setProjectFile(new File("PROJECTFILE.TXT"));
+        crowdTestProjectCommand.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProjectCommand.setQuotedPrice(200.00);
+        crowdTestProjectCommand.setCreatTime(new Date());
+
+        CrowdTestProject crowdTestProject2 = new CrowdTestProject();
+        crowdTestProject2.setName(crowdTestProjectCommand.getName());
+        crowdTestProject2.setDistributeId(crowdTestProjectCommand.getDistributeId());
+        crowdTestProject2.setDescription(crowdTestProjectCommand.getDescription());
+        crowdTestProject2.setProjectFile(crowdTestProjectCommand.getProjectFile());
+        crowdTestProject2.setRequirement(crowdTestProjectCommand.getRequirement());
+        crowdTestProject2.setCreatTime(crowdTestProjectCommand.getCreatTime());
+        crowdTestProject2.setQuotedPrice(crowdTestProjectCommand.getQuotedPrice());
+        crowdTestProject2.setStatus(crowdTestProjectCommand.getStatus());
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        TestProject testProject = testProjectRepo.addTestProject(testProjectCommand);
+        CrowdTestProject crowdTestProject = testProjectRepo.addCrowdTestProject(crowdTestProject2);
 
         // assert
-        assertNotNull(testProject);
-        assertEquals(testProject.getName(),testProjectCommand.getName());
+        assertEquals(crowdTestProject, crowdTestProject2);
     }
 
     @Test
-    public void should_return_test_project_when_test_project_exist() throws TestProjectNotExistException {
+    public void should_return_crowd_test_project_when_view_exist_crowd_test_project() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProjectCommand testProjectCommand = new TestProjectCommand();
-        testProjectCommand.setId(new Long(10001));
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
+        crowdTestProjectCommand.setId(1L);
+        crowdTestProjectCommand.setName("PROJECT_ONE");
+//        CrowdTestProject testProject = this.createCrowdTestProject();
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
         // action
-        TestProject testProject = testProjectRepo.getByID(testProjectCommand.getId());
+        CrowdTestProject crowdTestProject = testProjectRepo.getByID(crowdTestProjectCommand.getId());
 
         // assert
-        assertNotNull(testProject);
+        assertEquals(crowdTestProject.getName(), crowdTestProjectCommand.getName());
     }
 
-    @Test(expected = TestProjectNotExistException.class)
-    public void should_throw_when_test_project_not_exist() throws TestProjectNotExistException {
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_view__not_exist_crowd_test_project() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProjectCommand testProjectCommand = new TestProjectCommand();
-        testProjectCommand.setId(new Long(10002));
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
+        crowdTestProjectCommand.setId(2L);
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
         // action
-        TestProject testProject = testProjectRepo.getByID(testProjectCommand.getId());
+        CrowdTestProject crowdTestProject = testProjectRepo.getByID(crowdTestProjectCommand.getId());
     }
 
     @Test
-    public void should_return_true_when_remove_test_project_success() throws TestProjectNotExistException {
+    public void should_return_true_when_remove_crowd_test_project_success() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProject testProject = createTestProject();
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        CrowdTestProject crowdTestProject = createCrowdTestProject();
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        boolean result = testProjectRepo.removeTestProject(testProject);
+        boolean result = testProjectRepo.removeCrowdTestProject(crowdTestProject);
 
         // assert
         assertTrue(result);
     }
 
-    @Test(expected = TestProjectNotExistException.class)
-    public void should_throw_when_remove_not_exist_test_project() throws TestProjectNotExistException {
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_remove_not_exist_crowd_test_project() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProject testProject = new TestProject();
-        testProject.setId(new Long(10002));
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+//        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        crowdTestProject.setId(2L);
+
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        boolean result = testProjectRepo.removeTestProject(testProject);
+        boolean result = testProjectRepo.removeCrowdTestProject(crowdTestProject);
     }
 
     @Test
-    public void should_return_true_when_update_test_project_success() throws TestProjectNotExistException {
+    public void should_return_true_when_update_crowd_test_project_success() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProject testProject = createTestProject();
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        CrowdTestProject crowdTestProject = createCrowdTestProject();
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        boolean result = testProjectRepo.updateTestProject(testProject);
+        CrowdTestProject updateCrowdTestProject = testProjectRepo.updateCrowdTestProject(crowdTestProject);
 
         // assert
-        assertTrue(result);
+        assertEquals(updateCrowdTestProject.getName(), crowdTestProject.getName());
     }
 
-    @Test(expected = TestProjectNotExistException.class)
-    public void should_throw_when_update_test_project_not_exist() throws TestProjectNotExistException {
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_update_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
         // arrange
-        TestProject testProject = new TestProject();
-        testProject.setId(new Long(10002));
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+//        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+
+        crowdTestProject.setId(2L);
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        testProjectRepo.updateTestProject(testProject);
+        testProjectRepo.updateCrowdTestProject(crowdTestProject);
     }
 
     @Test
-    public void should_return_ture_when_update_test_project_list_success() throws TestProjectNotExistException {
+    public void should_return_ture_when_update_crowd_test_project_list_success() throws CrowdTestProjectNotExistException {
         // arrange
-        List<TestProject> testProjects = new ArrayList<TestProject>();
-        TestProject testProject1 = createTestProject();
-        testProjects.add(testProject1);
-        TestProject testProject = new TestProject();
-        testProject.setId(new Long(10002));
-        testProject.setName("PROJECT_TWO");
-        testProject.setDescription("DESCRIPTION");
-        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        testProject.setRequirement(new File("REQUIREMENT.TXT"));
-        testProject.setQuotedPrice(200.00);
-        testProject.setCreatTime(new Date());
-        testProjects.add(testProject);
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        List<CrowdTestProject> crowdTestProjects = new ArrayList<CrowdTestProject>();
+        CrowdTestProject crowdTestProject1 = createCrowdTestProject();
+        crowdTestProjects.add(crowdTestProject1);
+//        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        crowdTestProject.setId(2L);
+        crowdTestProject.setName("PROJECT_TWO");
+        crowdTestProject.setDescription("DESCRIPTION");
+        crowdTestProject.setDistributeId(123L);
+        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProject.setQuotedPrice(200.00);
+        crowdTestProject.setCreatTime(new Date());
+        crowdTestProject.setStatus(CrowdTestProjectStatus.created);
+        crowdTestProjects.add(crowdTestProject);
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        boolean result = testProjectRepo.updateTestProjectList(testProjects);
+        boolean result = testProjectRepo.updateCrowdTestProjectList(crowdTestProjects);
 
         // assert
         assertTrue(result);
     }
 
-    @Test(expected = TestProjectNotExistException.class)
-    public void should_throw_when_update_test_project_list_not_exist() throws TestProjectNotExistException {
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_update_crowd_test_project_list_not_exist() throws CrowdTestProjectNotExistException {
         // arrange
-        List<TestProject> testProjects = new ArrayList<TestProject>();
-        TestProject testProject1 = createTestProject();
-        testProjects.add(testProject1);
-        TestProject testProject = new TestProject();
-        testProject.setId(new Long(10003));
-        testProject.setName("PROJECT_TWO");
-        testProject.setDescription("DESCRIPTION");
-        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        testProject.setRequirement(new File("REQUIREMENT.TXT"));
-        testProject.setQuotedPrice(200.00);
-        testProject.setCreatTime(new Date());
-        testProjects.add(testProject);
-        TestProjectRepo testProjectRepo = new TestProjectRepo();
+        List<CrowdTestProject> crowdTestProjects = new ArrayList<CrowdTestProject>();
+        CrowdTestProject crowdTestProject1 = createCrowdTestProject();
+        crowdTestProjects.add(crowdTestProject1);
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        crowdTestProject.setId(3L);
+        crowdTestProject.setName("PROJECT_TWO");
+        crowdTestProject.setDescription("DESCRIPTION");
+        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProject.setQuotedPrice(200.00);
+        crowdTestProject.setCreatTime(new Date());
+        crowdTestProjects.add(crowdTestProject);
+        CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
         // action
-        boolean result = testProjectRepo.updateTestProjectList(testProjects);
+        boolean result = testProjectRepo.updateCrowdTestProjectList(crowdTestProjects);
     }
 
-    private TestProject createTestProject(){
-        TestProject testProject = new TestProject();
-        testProject.setId(new Long(10001));
-        testProject.setName("PROJECT_ONE");
-        testProject.setDescription("DESCRIPTION");
-        testProject.setProjectFile(new File("PROJECTFILE.TXT"));
-        testProject.setRequirement(new File("REQUIREMENT.TXT"));
-        testProject.setQuotedPrice(200.00);
-        testProject.setCreatTime(new Date());
-        return testProject;
+    @Test
+    public void show_return_status_when_release_crowd_test_project() {
+
     }
 
+    private CrowdTestProject createCrowdTestProject() {
+        CrowdTestProject crowdTestProject = new CrowdTestProject();
+        crowdTestProject.setId(1L);
+        crowdTestProject.setName("PROJECT_ONE");
+        crowdTestProject.setDescription("DESCRIPTION");
+        crowdTestProject.setDistributeId(123L);
+        crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
+        crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
+        crowdTestProject.setQuotedPrice(200.00);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.created);
+        crowdTestProject.setCreatTime(new Date());
+        return crowdTestProject;
+    }
 }

+ 184 - 0
src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java

@@ -0,0 +1,184 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.command.CrowdTestProjectCommand;
+import com.mooctest.crowd.domain.command.CrowdTestTaskCommand;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:20
+ */
+public class RegionalManagerTest {
+
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestProjectRepo crowdTestProjectRepo =  new CrowdTestProjectRepo();
+    private CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
+    private CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
+    private GeneralUserTest generalUserTest = new GeneralUserTest();
+    private RegionalManager regionalManager = new RegionalManager();
+    @Test
+    public void should_modify_status_received_when_receive_crowd_test_project() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(1L);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.received);
+        // action
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
+        // assert
+        assertEquals(crowdTestProject.getStatus(), crowdTestProjectCommand.getStatus());
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_receive_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(2L);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.received);
+        // action
+        crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
+    }
+
+    @Test
+    public void should_return_crowd_test_project_when_general_user_view_exist_crowd_test_project() throws CrowdTestProjectNotExistException {
+        generalUserTest.should_return_crowd_test_project_when_view_exist_crowd_test_project();
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_general_user_view__not_exist_crowd_test_project() throws CrowdTestProjectNotExistException {
+        generalUserTest.should_throw_when_view__not_exist_crowd_test_project();
+    }
+
+    @Test
+    public void should_return_crowd_test_task_list_when_split_crowd_test_project_success() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(1L);
+        GeneralUser generalUser = new GeneralUser();
+        // action
+        List<CrowdTestTask> crowdTestTasks = regionalManager.splitCrowdTestProjectToCrowdTestTaskList(crowdTestProjectCommand.getId());
+        // assert
+        assertNotNull(crowdTestTasks);
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_split_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(2L);
+
+        // action
+        regionalManager.splitCrowdTestProjectToCrowdTestTaskList(crowdTestProjectCommand.getId());
+    }
+
+    @Test
+    public void should_return_ture_when_make_a_price_for_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setPrice(100.00);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        Double price = crowdTestTaskCommand.getPrice();
+        // action
+        CrowdTestProject crowdTestProject = regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProjectRepo.getByID(crowdTestProject.getId()).getCrowdTestTaskList();
+        for (CrowdTestTask crowdTestTask : crowdTestTaskList
+             ) {
+            if(crowdTestTask.getId().equals(id)){
+                // assert
+                assertEquals(price,crowdTestTask.getPrice());
+            }
+        }
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_make_a_price_for_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(2L);
+        crowdTestTaskCommand.setPrice(100.00);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        Double price = crowdTestTaskCommand.getPrice();
+        // action
+        regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+    }
+
+    @Test(expected = CrowdTestTaskNotExistException.class)
+    public void should_throw_when_make_a_price_for_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(103L);
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setPrice(100.00);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        Double price = crowdTestTaskCommand.getPrice();
+        // action
+        regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+    }
+
+    @Test
+    public void should_retrun_true_when_distribute_crowd_test_task_to_evaluation_agency_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        String status = crowdTestProjectCommand.getStatus();
+        // action
+        boolean resule = regionalManager.distributeCrowdTestTask(projectId, id, status);
+
+        // assert
+        assertTrue(resule);
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_distribute_crowd_test_task_to_evaluation_agency_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(2L);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        String status = crowdTestProjectCommand.getStatus();
+        // action
+        regionalManager.distributeCrowdTestTask(projectId, id, status);
+    }
+
+    @Test(expected = CrowdTestTaskNotExistException.class)
+    public void should_throw_when_distribute_crowd_test_task_to_evaluation_agency_tesk_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(103L);
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long id = crowdTestTaskCommand.getId();
+        String status = crowdTestProjectCommand.getStatus();
+        // action
+        regionalManager.distributeCrowdTestTask(projectId, id, status);
+    }
+
+    @Test
+    public void should_modify_status_finished_when_submit_crowd_test_project_success() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(1L);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.finished);
+        // action
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
+        // assert
+        assertEquals(crowdTestProject.getStatus(), crowdTestProjectCommand.getStatus());
+    }
+
+    @Test(expected = CrowdTestProjectNotExistException.class)
+    public void should_throw_when_submit_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(2L);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.finished);
+        // action
+        crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
+    }
+}