소스 검색

Merge branch 'add-regionalmanager-testcase' into 'master'

add evaluationAgencyTestCase

See merge request crowd-2019/crowd-test-service-backend!2
薛晓波 6 년 전
부모
커밋
3f1cac7acb
28개의 변경된 파일987개의 추가작업 그리고 268개의 파일을 삭제
  1. 35 0
      src/main/java/com/mooctest/crowd/domain/command/AccountCommand.java
  2. 29 20
      src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java
  3. 73 0
      src/main/java/com/mooctest/crowd/domain/command/CrowdTestReportCommand.java
  4. 5 14
      src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java
  5. 14 10
      src/main/java/com/mooctest/crowd/domain/domainobject/Account.java
  6. 136 6
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java
  7. 4 4
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProjectStatus.java
  8. 14 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReport.java
  9. 11 0
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReportStatus.java
  10. 46 5
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java
  11. 5 4
      src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java
  12. 37 0
      src/main/java/com/mooctest/crowd/domain/domainobject/DistributeType.java
  13. 29 24
      src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java
  14. 19 0
      src/main/java/com/mooctest/crowd/domain/domainobject/GeneralUser.java
  15. 24 94
      src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java
  16. 28 0
      src/main/java/com/mooctest/crowd/domain/domainobject/SystemAdministrator.java
  17. 9 9
      src/main/java/com/mooctest/crowd/domain/domainobject/User.java
  18. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/CrowdTestReportNotExistException.java
  19. 8 0
      src/main/java/com/mooctest/crowd/domain/exception/CrowdTestTaskNoPriceException.java
  20. 43 14
      src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java
  21. 26 13
      src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java
  22. 5 6
      src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java
  23. 0 2
      src/main/java/com/mooctest/crowd/domain/repository/ICrowdTestProjectRepo.java
  24. 118 6
      src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java
  25. 154 0
      src/test/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyTest.java
  26. 20 10
      src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java
  27. 60 27
      src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java
  28. 27 0
      src/test/java/com/mooctest/crowd/domain/domainobject/SystemAdministratorTest.java

+ 35 - 0
src/main/java/com/mooctest/crowd/domain/command/AccountCommand.java

@@ -0,0 +1,35 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 14:24
+ */
+public class AccountCommand {
+    private Long id;
+    private String mobileNum;
+    private String password;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getMobileNum() {
+        return mobileNum;
+    }
+
+    public void setMobileNum(String mobileNum) {
+        this.mobileNum = mobileNum;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+}

+ 29 - 20
src/main/java/com/mooctest/crowd/domain/command/CrowdTestProjectCommand.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.domain.command;
 
 import java.io.File;
-import java.util.Date;
 
 /**
  * @author guochao
@@ -10,14 +9,15 @@ import java.util.Date;
 public class CrowdTestProjectCommand {
     private Long id;
     private String name;
-    private String description;
     private Long ownerId;
+    private Long managerId;
     private Long distributeId;
+    private String description;
     private File projectFile;
     private File requirement;
     private double quotedPrice;
+    private double fixedPrice;
     private String status;
-    private Date creatTime;
 
     public Long getId() {
         return id;
@@ -27,20 +27,12 @@ public class CrowdTestProjectCommand {
         this.id = id;
     }
 
-    public void setName(String name) {
-        this.name = name;
-    }
-
     public String getName() {
         return name;
     }
 
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getDescription() {
-        return description;
+    public void setName(String name) {
+        this.name = name;
     }
 
     public Long getOwnerId() {
@@ -51,6 +43,14 @@ public class CrowdTestProjectCommand {
         this.ownerId = ownerId;
     }
 
+    public Long getManagerId() {
+        return managerId;
+    }
+
+    public void setManagerId(Long managerId) {
+        this.managerId = managerId;
+    }
+
     public Long getDistributeId() {
         return distributeId;
     }
@@ -59,6 +59,14 @@ public class CrowdTestProjectCommand {
         this.distributeId = distributeId;
     }
 
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
     public File getProjectFile() {
         return projectFile;
     }
@@ -83,6 +91,14 @@ public class CrowdTestProjectCommand {
         this.quotedPrice = quotedPrice;
     }
 
+    public double getFixedPrice() {
+        return fixedPrice;
+    }
+
+    public void setFixedPrice(double fixedPrice) {
+        this.fixedPrice = fixedPrice;
+    }
+
     public String getStatus() {
         return status;
     }
@@ -91,11 +107,4 @@ public class CrowdTestProjectCommand {
         this.status = status;
     }
 
-    public Date getCreatTime() {
-        return creatTime;
-    }
-
-    public void setCreatTime(Date creatTime) {
-        this.creatTime = creatTime;
-    }
 }

+ 73 - 0
src/main/java/com/mooctest/crowd/domain/command/CrowdTestReportCommand.java

@@ -0,0 +1,73 @@
+package com.mooctest.crowd.domain.command;
+
+/**
+ * @author guochao
+ * @date 2019/7/11 14:16
+ */
+public class CrowdTestReportCommand {
+
+    private Long id;
+    private Long projectId;
+    private Long taskId;
+    private int type;
+    private String description;
+    private String content;
+    private String status;
+
+    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;
+    }
+
+}

+ 5 - 14
src/main/java/com/mooctest/crowd/domain/command/CrowdTestTaskCommand.java

@@ -1,7 +1,6 @@
 package com.mooctest.crowd.domain.command;
 
 import java.io.File;
-import java.util.Date;
 
 /**
  * @author guochao
@@ -11,13 +10,12 @@ public class CrowdTestTaskCommand {
     private Long id;
     private String name;
     private Long projectId;
-    private Long institutionId;
+    private Long evaluationAgencyId;
     private int type;
     private String description;
     private File requirementFile;
     public Double price;
     private String status;
-    private Date creatTime;
 
     public Long getId() {
         return id;
@@ -43,12 +41,12 @@ public class CrowdTestTaskCommand {
         this.projectId = projectId;
     }
 
-    public Long getInstitutionId() {
-        return institutionId;
+    public Long getEvaluationAgencyId() {
+        return evaluationAgencyId;
     }
 
-    public void setInstitutionId(Long institutionId) {
-        this.institutionId = institutionId;
+    public void setEvaluationAgencyId(Long evaluationAgencyId) {
+        this.evaluationAgencyId = evaluationAgencyId;
     }
 
     public int getType() {
@@ -91,11 +89,4 @@ public class CrowdTestTaskCommand {
         this.status = status;
     }
 
-    public Date getCreatTime() {
-        return creatTime;
-    }
-
-    public void setCreatTime(Date creatTime) {
-        this.creatTime = creatTime;
-    }
 }

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

@@ -14,6 +14,7 @@ import java.util.List;
 
 public class Account {
 
+    private Long id;
     private String mobileNum;
     private String password;
 //    private List<Permission> permission;
@@ -24,8 +25,9 @@ public class Account {
         if (this.getPassword().equals(cmd.getPassword())) {
             return true;
         }
-        else
+        else {
             throw new PasswordErrorException();
+        }
     }
 
     public boolean modifyPassword(ModifyPasswordCommand cmd) throws PasswordErrorException {
@@ -33,8 +35,9 @@ public class Account {
         if(this.getPassword().equals(cmd.getOldPassword())){
             this.setPassword(cmd.getNewPassword());
             return true;
-        }else
+        }else {
             throw new PasswordErrorException();
+        }
     }
 
     public List<Permission> distributePermission(){
@@ -42,7 +45,7 @@ public class Account {
         Permission permission = new Permission();
         permission.setId(1L);
         permission.setName("PERMISSION_ONE");
-        permission.setResource("Resource_ONE");
+        permission.setResource("RESOURCE_ONE");
         permission.setOperation("OPERATION_ONE");
         permissions.add(permission);
         return permissions;
@@ -57,6 +60,14 @@ public class Account {
         return roles;
     }
 
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
     public String getMobileNum() {
         return mobileNum;
     }
@@ -73,11 +84,4 @@ public class Account {
         this.password = password;
     }
 
-//    public void setPermission(Permission permission) {
-//        this.permission = permission;
-//    }
-//
-//    public Permission getPermission() {
-//        return permission;
-//    }
 }

+ 136 - 6
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestProject.java

@@ -1,9 +1,12 @@
 package com.mooctest.crowd.domain.domainobject;
 
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNoPriceException;
+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;
 
@@ -18,7 +21,7 @@ public class CrowdTestProject {
     private String name;
     private Long ownerId;
     private Long managerId;
-    private Long distributeId;
+    private DistributeType distributeType;
     private String description;
     private File projectFile;
     private File requirement;
@@ -69,12 +72,12 @@ public class CrowdTestProject {
         this.managerId = managerId;
     }
 
-    public Long getDistributeId() {
-        return distributeId;
+    public DistributeType getDistributeType() {
+        return distributeType;
     }
 
-    public void setDistributeId(Long distributeId) {
-        this.distributeId = distributeId;
+    public void setDistributeType(DistributeType distributeType) {
+        this.distributeType = distributeType;
     }
 
     public String getDescription() {
@@ -133,4 +136,131 @@ public class CrowdTestProject {
         this.creatTime = creatTime;
     }
 
+    @Override
+    public String toString() {
+        return "CrowdTestProject{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", ownerId=" + ownerId +
+                ", managerId=" + managerId +
+                ", distributeType=" + distributeType +
+                ", description='" + description + '\'' +
+                ", projectFile=" + projectFile +
+                ", requirement=" + requirement +
+                ", quotedPrice=" + quotedPrice +
+                ", fixedPrice=" + fixedPrice +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                ", crowdTestTaskList=" + crowdTestTaskList +
+                '}';
+    }
+
+    public CrowdTestTask getCrowdTestTaskByTaskId(CrowdTestProject crowdTestProject, Long taskId) throws CrowdTestTaskNotExistException {
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+            if (crowdTestTask.getId().equals(taskId)) {
+                return crowdTestTask;
+            }
+        }
+        throw new CrowdTestTaskNotExistException();
+    }
+
+    public CrowdTestProject updateCrowdTestReportStatus(Long projectId, Long taskId, Long reportId, String status) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+        CrowdTestReport crowdTestReport = crowdTestTask.getCrowdTestReportByReportId(crowdTestTask, reportId);
+        crowdTestReport.setStatus(status);
+        return crowdTestProject;
+    }
+
+    // ************* task
+
+    public boolean updateCrowdTestTaskStatus(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+        boolean flag = true;
+        if (crowdTestTask.getPrice() > 0) {
+            crowdTestTask.setStatus(status);
+            return true;
+        } else {
+            throw new CrowdTestTaskNoPriceException();
+        }
+    }
+
+    public boolean modifyCrowdTestTaskStatusToCommit(Long taskId, String status) throws CrowdTestTaskNotExistException {
+        CrowdTestTask crowdTestTask = this.getCrowdTestTaskByTaskId(this, taskId);
+        boolean flag = true;
+        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+        for (CrowdTestReport crowdTestReport : crowdTestReportList) {
+            if (!crowdTestReport.getStatus().equals(CrowdTestReportStatus.COMMITED)) {
+                flag = false;
+            }
+        }
+        if (flag) {
+            crowdTestTask.setStatus(status);
+            return true;
+        } else {
+            return flag;
+        }
+    }
+
+    public boolean updateCrowdTestTaskStatusNoPrice(Long projectId, Long taskId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        if (crowdTestProjectRepo.getByID(projectId) != null) {
+            CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+            CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+            crowdTestTask.setPrice(0.0);
+            if (crowdTestTask.getPrice() > 0) {
+                crowdTestTask.setStatus(status);
+                return true;
+            } else {
+                throw new CrowdTestTaskNoPriceException();
+            }
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
+
+    public List<CrowdTestTask> updateCrowdTestTaskListStatus(Long projectId, String status) throws CrowdTestProjectNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+            crowdTestTask.setStatus(status);
+        }
+        return crowdTestTaskList;
+    }
+
+
+    /** Project */
+    public CrowdTestReport getCrowdTestReportByProjectId(Long projectId, Long taskId, Long reportId) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+        CrowdTestReport crowdTestReport = crowdTestTask.getCrowdTestReportByReportId(crowdTestTask, reportId);
+        return crowdTestReport;
+    }
+
+    public List<CrowdTestReport> getCrowdTestReportListByProjectId(Long projectId, Long taskId) throws CrowdTestTaskNoPriceException, CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestReportNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+        return crowdTestTask.getCrowdTestReportList();
+    }
+
+    public CrowdTestProject updateCrowdTestProjectStatusToFinish(Long projectId, String status) throws CrowdTestProjectNotExistException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
+        for(CrowdTestTask crowdTestTask : crowdTestTaskList){
+            List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+            for(CrowdTestReport crowdTestReport : crowdTestReportList){
+                crowdTestReport.setStatus(status);
+            }
+            crowdTestTask.setStatus(status);
+        }
+        crowdTestProject.setStatus(status);
+        return crowdTestProject;
+    }
 }

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

@@ -5,9 +5,9 @@ package com.mooctest.crowd.domain.domainobject;
  * @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 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";
+    public static final String FINISHED = "HAS_FINISHED";
 }

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

@@ -80,4 +80,18 @@ public class CrowdTestReport {
     public void setCreatTime(Date creatTime) {
         this.creatTime = creatTime;
     }
+
+    @Override
+    public String toString() {
+        return "CrowdTestReport{" +
+                "id=" + id +
+                ", projectId=" + projectId +
+                ", taskId=" + taskId +
+                ", type=" + type +
+                ", description='" + description + '\'' +
+                ", content='" + content + '\'' +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                '}';
+    }
 }

+ 11 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestReportStatus.java

@@ -0,0 +1,11 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/9 14:21
+ */
+public class CrowdTestReportStatus {
+    public static final String CREATED = "HAS_CREATED";
+    public static final String COMMITED = "HAS_COMMITED";
+    public static final String FINISHED = "HAS_FINISHED";
+}

+ 46 - 5
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTask.java

@@ -1,5 +1,8 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+
 import java.io.File;
 import java.util.Date;
 import java.util.List;
@@ -12,7 +15,7 @@ public class CrowdTestTask {
     private Long id;
     private String name;
     private Long projectId;
-    private Long institutionId;
+    private Long evaluationAgencyId;
     private int type;
     private String description;
     private File requirementFile;
@@ -20,6 +23,8 @@ public class CrowdTestTask {
     private String status;
     private Date creatTime;
 
+    private List<CrowdTestReport> crowdTestReportList;
+
     public Long getId() {
         return id;
     }
@@ -44,12 +49,12 @@ public class CrowdTestTask {
         this.projectId = projectId;
     }
 
-    public Long getInstitutionId() {
-        return institutionId;
+    public Long getEvaluationAgencyId() {
+        return evaluationAgencyId;
     }
 
-    public void setInstitutionId(Long institutionId) {
-        this.institutionId = institutionId;
+    public void setEvaluationAgencyId(Long evaluationAgencyId) {
+        this.evaluationAgencyId = evaluationAgencyId;
     }
 
     public int getType() {
@@ -100,4 +105,40 @@ public class CrowdTestTask {
     public void setCreatTime(Date creatTime) {
         this.creatTime = creatTime;
     }
+
+    public List<CrowdTestReport> getCrowdTestReportList() {
+        return crowdTestReportList;
+    }
+
+    public void setCrowdTestReportList(List<CrowdTestReport> crowdTestReportList) {
+        this.crowdTestReportList = crowdTestReportList;
+    }
+
+    @Override
+    public String toString() {
+        return "CrowdTestTask{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", projectId=" + projectId +
+                ", evaluationAgencyId=" + evaluationAgencyId +
+                ", type=" + type +
+                ", description='" + description + '\'' +
+                ", requirementFile=" + requirementFile +
+                ", price=" + price +
+                ", status='" + status + '\'' +
+                ", creatTime=" + creatTime +
+                ", crowdTestReportList=" + crowdTestReportList +
+                '}';
+    }
+
+    public CrowdTestReport getCrowdTestReportByReportId(CrowdTestTask crowdTestTask, Long reportId) throws CrowdTestTaskNotExistException, CrowdTestReportNotExistException {
+        List<CrowdTestReport> crowdTestReportList = crowdTestTask.getCrowdTestReportList();
+        for (CrowdTestReport crowdTestReport : crowdTestReportList) {
+            if (crowdTestReport.getId().equals(reportId)) {
+                return crowdTestReport;
+            }
+        }
+        throw new CrowdTestReportNotExistException();
+    }
+
 }

+ 5 - 4
src/main/java/com/mooctest/crowd/domain/domainobject/CrowdTestTaskStatus.java

@@ -5,8 +5,9 @@ package com.mooctest.crowd.domain.domainobject;
  * @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";
+    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 COMMITED = "HAS_COMMITED";
+    public static final String FINISHED = "HAS_FINISHED";
 }

+ 37 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/DistributeType.java

@@ -0,0 +1,37 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import java.util.Date;
+
+/**
+ * @author guochao
+ * @date 2019/7/15 20:47
+ */
+public class DistributeType {
+    private Long id;
+    private String name;
+    private Date createTime;
+
+    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 Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 29 - 24
src/main/java/com/mooctest/crowd/domain/domainobject/EvaluationAgency.java

@@ -1,27 +1,32 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNoPriceException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
+import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
+
 import java.util.Date;
 
 /**
  * @author guochao
  * @date 2019/7/12 1:32
  */
-public class EvaluationAgency {
+public class EvaluationAgency extends User{
     private Long id;
     private Long userId;
-    private String name;
     private String bankAccount;
     private String address;
-    private String ablilities;
+    private String abilities;
     private String resource;
-    private String photo;
     private Date updateTime;
     private Date expireTime;
 
+    @Override
     public Long getId() {
         return id;
     }
 
+    @Override
     public void setId(Long id) {
         this.id = id;
     }
@@ -34,14 +39,6 @@ public class EvaluationAgency {
         this.userId = userId;
     }
 
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
     public String getBankAccount() {
         return bankAccount;
     }
@@ -58,12 +55,12 @@ public class EvaluationAgency {
         this.address = address;
     }
 
-    public String getAblilities() {
-        return ablilities;
+    public String getAbilities() {
+        return abilities;
     }
 
-    public void setAblilities(String ablilities) {
-        this.ablilities = ablilities;
+    public void setAbilities(String abilities) {
+        this.abilities = abilities;
     }
 
     public String getResource() {
@@ -74,14 +71,6 @@ public class EvaluationAgency {
         this.resource = resource;
     }
 
-    public String getPhoto() {
-        return photo;
-    }
-
-    public void setPhoto(String photo) {
-        this.photo = photo;
-    }
-
     public Date getUpdateTime() {
         return updateTime;
     }
@@ -97,4 +86,20 @@ public class EvaluationAgency {
     public void setExpireTime(Date expireTime) {
         this.expireTime = expireTime;
     }
+
+    public boolean updateCrowdTestTaskStatusByEvaluationAgency(Long projectId, Long taskId, Long evaluationAgencyId, String status) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        if (crowdTestProjectRepo.getByID(projectId) != null) {
+            CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+            CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+            if (crowdTestTask.getPrice() > 0) {
+                crowdTestTask.setEvaluationAgencyId(evaluationAgencyId);
+                crowdTestTask.setStatus(status);
+                return true;
+            } else {
+                throw new CrowdTestTaskNoPriceException();
+            }
+        }
+        throw new CrowdTestProjectNotExistException();
+    }
 }

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

@@ -5,6 +5,25 @@ package com.mooctest.crowd.domain.domainobject;
  * @date 2019/7/6 18:16
  */
 public class GeneralUser extends User{
+    private Long id;
+    private Long userId;
 
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
 
 }

+ 24 - 94
src/main/java/com/mooctest/crowd/domain/domainobject/RegionalManager.java

@@ -4,142 +4,72 @@ 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 {
-
+public class RegionalManager extends User {
     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;
+    private Long userId;
+    private String regional;
 
+    @Override
     public Long getId() {
         return id;
     }
 
+    @Override
     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 Long getUserId() {
+        return userId;
     }
 
-    public void setStatus(String status) {
-        this.status = status;
+    public void setUserId(Long userId) {
+        this.userId = userId;
     }
 
-    public Date getCreatTime() {
-        return creatTime;
+    public String getRegional() {
+        return regional;
     }
 
-    public void setCreatTime(Date creatTime) {
-        this.creatTime = creatTime;
+    public void setRegional(String regional) {
+        this.regional = regional;
     }
 
     public List<CrowdTestTask> splitCrowdTestProjectToCrowdTestTaskList(Long projectId) throws CrowdTestProjectNotExistException {
         CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
-        if(crowdTestProjectRepo.getByID(projectId) != null){
-            return new ArrayList<CrowdTestTask>();
-        }
-        throw new CrowdTestProjectNotExistException();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.splited);
+        List<CrowdTestTask> crowdTestTaskList = new ArrayList<CrowdTestTask>();
+        crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
+        return crowdTestTaskList;
     }
 
     public CrowdTestProject fixedPriceForCrowdTestTask(Long projectId, Long taskId, Double price) throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
         boolean flag = false;
-        if(crowdTestProjectRepo.getByID(projectId) != null){
+        if (crowdTestProjectRepo.getByID(projectId) != null) {
             CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
             List<CrowdTestTask> crowdTestTaskList = crowdTestProject.getCrowdTestTaskList();
-            for (CrowdTestTask crowdTestTask: crowdTestTaskList) {
-                if(crowdTestTask.getId() == taskId){
+            for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+                if (crowdTestTask.getId().equals(taskId)) {
                     crowdTestTask.setPrice(price);
                     flag = true;
                     return crowdTestProject;
                 }
             }
-            if(!flag)
+            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();
     }
+
+
 }

+ 28 - 0
src/main/java/com/mooctest/crowd/domain/domainobject/SystemAdministrator.java

@@ -0,0 +1,28 @@
+package com.mooctest.crowd.domain.domainobject;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 16:11
+ */
+public class SystemAdministrator extends User {
+    private Long id;
+    private Long userId;
+
+    @Override
+    public Long getId() {
+        return id;
+    }
+
+    @Override
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getUserId() {
+        return userId;
+    }
+
+    public void setUserId(Long userId) {
+        this.userId = userId;
+    }
+}

+ 9 - 9
src/main/java/com/mooctest/crowd/domain/domainobject/User.java

@@ -1,6 +1,6 @@
 package com.mooctest.crowd.domain.domainobject;
 
-import java.sql.Timestamp;
+import java.util.Date;
 
 /**
  * @author guochao
@@ -16,9 +16,9 @@ public class User {
     private String province;
     private String city;
     private String photoUrl;
-    private String isAvailabile;
+    private String isAvailable;
     private String isDeleted;
-    private Timestamp createTime;
+    private Date createTime;
 
     public Long getId() {
         return id;
@@ -92,12 +92,12 @@ public class User {
         this.photoUrl = photoUrl;
     }
 
-    public String getIsAvailabile() {
-        return isAvailabile;
+    public String getIsAvailable() {
+        return isAvailable;
     }
 
-    public void setIsAvailabile(String isAvailabile) {
-        this.isAvailabile = isAvailabile;
+    public void setIsAvailable(String isAvailable) {
+        this.isAvailable = isAvailable;
     }
 
     public String getIsDeleted() {
@@ -108,11 +108,11 @@ public class User {
         this.isDeleted = isDeleted;
     }
 
-    public Timestamp getCreateTime() {
+    public Date getCreateTime() {
         return createTime;
     }
 
-    public void setCreateTime(Timestamp createTime) {
+    public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 }

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

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 14:04
+ */
+public class CrowdTestReportNotExistException extends Throwable {
+}

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

@@ -0,0 +1,8 @@
+package com.mooctest.crowd.domain.exception;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 9:23
+ */
+public class CrowdTestTaskNoPriceException extends Throwable {
+}

+ 43 - 14
src/main/java/com/mooctest/crowd/domain/repository/AccountUTRepo.java

@@ -3,6 +3,7 @@ package com.mooctest.crowd.domain.repository;
 import com.mooctest.crowd.domain.domainobject.Account;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -10,8 +11,9 @@ import java.util.List;
  * @Date: 2019.7.5 14:28
  */
 public class AccountUTRepo implements IAccountRepo {
+    @Override
     public Account getByMobileNum(String mobileNum) throws AccountNotExistException {
-        if (mobileNum.equals("EXIST_ACCOUNT")) {
+        if ("EXIST_ACCOUNT".equals(mobileNum)) {
             Account account = new Account();
             account.setMobileNum("EXIST_ACCOUNT");
             account.setPassword("PASSWORD");
@@ -20,27 +22,54 @@ public class AccountUTRepo implements IAccountRepo {
         throw new AccountNotExistException();
     }
 
-    public Account getByID(String id) {
-        return null;
-    }
-
-    public List<Account> getByIDList(String[] ids) {
-        return null;
+    @Override
+    public Account getByID(Long id) throws AccountNotExistException {
+        if (id.equals(123L)) {
+            Account account = new Account();
+            account.setId(id);
+            account.setMobileNum("EXIST_ACCOUNT");
+            account.setPassword("PASSWORD");
+            return account;
+        }
+        throw new AccountNotExistException();
     }
 
-    public void addAccount(Account account) {
+    @Override
+    public List<Account> getByIDList(Long[] ids) throws AccountNotExistException {
 
+        List<Account> accountList = new ArrayList<Account>();
+        for (Long id: ids) {
+            Account account = getByID(id);
+            accountList.add(account);
+        }
+        return accountList;
     }
 
-    public void addAccounts(List<Account> accounts) {
-
+    @Override
+    public boolean addAccount(Account account) throws AccountNotExistException {
+        Account newAccount = this.getByMobileNum(account.getMobileNum());
+        if(newAccount != null){
+            return false;
+        }
+        throw new AccountNotExistException();
     }
 
-    public void removeAccount(Account account) {
-
+    @Override
+    public boolean removeAccount(Account account) throws AccountNotExistException {
+        Account byMobileNum = this.getByMobileNum(account.getMobileNum());
+        if(byMobileNum != null){
+            return true;
+        }
+        throw new AccountNotExistException();
     }
 
-    public void updateAccount(Account account) {
-
+    @Override
+    public Account updateAccount(Account account) throws AccountNotExistException {
+        Account byMobileNum = this.getByMobileNum(account.getMobileNum());
+        if(byMobileNum != null){
+            byMobileNum = account;
+            return byMobileNum;
+        }
+        throw new AccountNotExistException();
     }
 }

+ 26 - 13
src/main/java/com/mooctest/crowd/domain/repository/CrowdTestProjectRepo.java

@@ -1,7 +1,6 @@
 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.domainobject.*;
 import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
 import com.mooctest.crowd.domain.factory.CrowdTestProjectFactory;
 import org.slf4j.Logger;
@@ -21,10 +20,10 @@ import java.util.List;
 @Component
 public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
 
-    private Logger LOG = LoggerFactory.getLogger(CrowdTestProjectRepo.class);
+    private Logger logger = LoggerFactory.getLogger(CrowdTestProjectRepo.class);
 
     public CrowdTestProject getByName(String name) {
-        if(name.equals("PROJECT_ONE")){
+        if("PROJECT_ONE".equals(name)){
             CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
             crowdTestProject.setName("PROJECT_ONE");
             crowdTestProject.setDescription("DESCRIPTION");
@@ -33,26 +32,42 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
             crowdTestProject.setQuotedPrice(200.00);
             crowdTestProject.setCreatTime(new Date());
             return crowdTestProject;
-        }else
+        }else {
             return null;
+        }
     }
 
+    @Override
     public CrowdTestProject getByID(Long id) throws CrowdTestProjectNotExistException {
         if(id == 1L){
+            // project
             CrowdTestProject crowdTestProject = CrowdTestProjectFactory.createCrowdTestProject();
             crowdTestProject.setId(id);
             crowdTestProject.setName("PROJECT_ONE");
-            crowdTestProject.setDistributeId(123L);
+            DistributeType distributeType = new DistributeType();
+            distributeType.setId(123L);
+            crowdTestProject.setDistributeType(distributeType);
             crowdTestProject.setDescription("DESCRIPTION");
             crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
             crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
             crowdTestProject.setQuotedPrice(200.00);
             crowdTestProject.setCreatTime(new Date());
 
+            // report
+            List<CrowdTestReport> crowdTestReportList = new ArrayList<CrowdTestReport>();
+            CrowdTestReport crowdTestReport = new CrowdTestReport();
+            crowdTestReport.setId(1001L);
+            crowdTestReport.setTaskId(101L);
+            crowdTestReport.setStatus(CrowdTestReportStatus.CREATED);
+            crowdTestReportList.add(crowdTestReport);
+
+            // task
             List<CrowdTestTask> crowdTestTaskList = new ArrayList<CrowdTestTask>();
             CrowdTestTask crowdTestTask = new CrowdTestTask();
             crowdTestTask.setId(101L);
+            crowdTestTask.setProjectId(1L);
             crowdTestTask.setPrice(100.00);
+            crowdTestTask.setCrowdTestReportList(crowdTestReportList);
             crowdTestTaskList.add(crowdTestTask);
             crowdTestProject.setCrowdTestTaskList(crowdTestTaskList);
 
@@ -61,19 +76,19 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         throw new CrowdTestProjectNotExistException();
     }
 
+    @Override
     public List<CrowdTestProject> getByIDList(String[] ids) {
         return null;
     }
 
 
+    @Override
     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;
         }
 
@@ -83,13 +98,10 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         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) {
-
+        logger.error("用户{}创建项目失败,失败时间:{},失败原因:{}",new Object[]{testProjectName,df.format(date), reason});
     }
 
+    @Override
     public boolean removeCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
         if(crowdTestProject.getId().equals(1L)){
             return true;
@@ -97,6 +109,7 @@ public class CrowdTestProjectRepo implements ICrowdTestProjectRepo {
         throw new CrowdTestProjectNotExistException();
     }
 
+    @Override
     public CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException {
         CrowdTestProject oldCrowdTestProject = getByID(crowdTestProject.getId());
         if(oldCrowdTestProject.getId().equals(crowdTestProject.getId())){

+ 5 - 6
src/main/java/com/mooctest/crowd/domain/repository/IAccountRepo.java

@@ -11,12 +11,11 @@ import java.util.List;
  */
 public interface IAccountRepo {
     Account getByMobileNum(String mobileNum) throws AccountNotExistException;
-    Account getByID(String id);
-    List<Account> getByIDList(String[] ids);
+    Account getByID(Long id) throws AccountNotExistException;
+    List<Account> getByIDList(Long[] ids) throws AccountNotExistException;
 
-    void addAccount(Account account);
-    void addAccounts(List<Account> accounts);
+    boolean addAccount(Account account) throws AccountNotExistException;
 
-    void removeAccount(Account account);
-    void updateAccount(Account account);
+    boolean removeAccount(Account account) throws AccountNotExistException;
+    Account updateAccount(Account account) throws AccountNotExistException;
 }

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

@@ -16,8 +16,6 @@ public interface ICrowdTestProjectRepo {
 
     CrowdTestProject addCrowdTestProject(CrowdTestProject testProject) throws CrowdTestProjectNotExistException;
 
-    void addCrowdTestProjects(List<CrowdTestProject> crowdTestProjects);
-
     boolean removeCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException;
 
     CrowdTestProject updateCrowdTestProject(CrowdTestProject crowdTestProject) throws CrowdTestProjectNotExistException;

+ 118 - 6
src/test/java/com/mooctest/crowd/domain/domainobject/AccountTest.java

@@ -1,5 +1,6 @@
 package com.mooctest.crowd.domain.domainobject;
 
+import com.mooctest.crowd.domain.command.AccountCommand;
 import com.mooctest.crowd.domain.command.LoginCommand;
 import com.mooctest.crowd.domain.command.ModifyPasswordCommand;
 import com.mooctest.crowd.domain.exception.AccountNotExistException;
@@ -18,7 +19,8 @@ import static org.junit.Assert.*;
  */
 public class AccountTest {
 
-
+    private AccountUTRepo accountUTRepo = new AccountUTRepo();
+    
     @Test
     public void should_return_true_when_login_success() throws AccountNotExistException, PasswordErrorException {
         // arrange
@@ -30,7 +32,6 @@ public class AccountTest {
         assertTrue(success);
     }
 
-
     @Test(expected = AccountNotExistException.class)
     public void should_throw_when_account_not_exist() throws AccountNotExistException {
         // arrange
@@ -59,9 +60,8 @@ public class AccountTest {
         modifyPasswordCommand.setMobileNum("EXIST_ACCOUNT");
         modifyPasswordCommand.setOldPassword("PASSWORD");
         modifyPasswordCommand.setNewPassword("654321");
-        AccountUTRepo accountUTRepo = new AccountUTRepo();
+        
         Account account = accountUTRepo.getByMobileNum(modifyPasswordCommand.getMobileNum());
-//        Account account1 = this.getSuccessAccount();
         // action
         boolean result = account.modifyPassword(modifyPasswordCommand);
         // assert
@@ -71,7 +71,6 @@ public class AccountTest {
     @Test
     public void should_return_permissions_when_account_login_success() throws AccountNotExistException {
         // arrange
-//        LoginCommand loginCommand = this.getSuccessLoginCommand();
         Account account = this.getSuccessAccount();
         // action
         List<Permission> permissions = account.distributePermission();
@@ -82,7 +81,6 @@ public class AccountTest {
     @Test
     public void should_return_roles_when_account_login_success() throws AccountNotExistException {
         // arrange
-//        LoginCommand loginCommand = this.getSuccessLoginCommand();
         Account account = this.getSuccessAccount();
         // action
         List<Role> roles = account.distributeRole();
@@ -90,6 +88,100 @@ public class AccountTest {
         assertEquals(roles.get(0).getId(), new Long(1));
     }
 
+    @Test
+    public void should_return_account_when_view_by_account_id() throws AccountNotExistException {
+        // arrange
+        AccountCommand accountCommand = new AccountCommand();
+        accountCommand.setId(123L);
+        
+        // action
+        Account accountUTRepoByID = accountUTRepo.getByID(accountCommand.getId());
+        // assert
+        assertEquals(accountUTRepoByID.getId(), accountCommand.getId());
+    }
+
+    @Test(expected = AccountNotExistException.class)
+    public void should_throw_when_view_account_not_exist_by_account_id() throws AccountNotExistException {
+        // arrange
+        AccountCommand accountCommand = new AccountCommand();
+        accountCommand.setId(111L);
+        // action
+        accountUTRepo.getByID(accountCommand.getId());
+    }
+
+    @Test
+    public void should_return_account_list_when_view_by_account_ids() throws AccountNotExistException {
+        // arrange
+        Long[] ids = {123L};
+        // action
+        List<Account> accountList = accountUTRepo.getByIDList(ids);
+        // assert
+        assertEquals(accountList.get(0).getId(), ids[0]);
+    }
+
+    @Test(expected = AccountNotExistException.class)
+    public void should_throw_when_view_not_exist_account_by_account_ids() throws AccountNotExistException {
+        // arrange
+        Long[] ids = {123L,111L};
+        
+        // action
+        accountUTRepo.getByIDList(ids);
+    }
+
+    @Test
+    public void should_return_false_when_add_exist_account() throws AccountNotExistException {
+        // arrange
+        Account account = this.createCorrectAccount();
+        // action
+        boolean result = accountUTRepo.addAccount(account);
+        // assert
+        assertFalse(result);
+    }
+
+    @Test(expected = AccountNotExistException.class)
+    public void should_throw_when_add_account_success() throws AccountNotExistException {
+        // arrange
+        Account account = this.createDiscorrectAccount();
+        // action
+        accountUTRepo.addAccount(account);
+    }
+    @Test
+    public void should_return_true_when_remove_account_success() throws AccountNotExistException {
+        // arrange
+        Account account = this.createCorrectAccount();
+        // action
+        boolean result = accountUTRepo.removeAccount(account);
+        // assert
+        assertTrue(result);
+    }
+
+    @Test(expected = AccountNotExistException.class)
+    public void should_throw_when_remove_not_exist_account() throws AccountNotExistException {
+        // arrange
+        Account account = this.createDiscorrectAccount();
+        // action
+        accountUTRepo.removeAccount(account);
+    }
+
+    @Test
+    public void should_return_true_when_update_account_success() throws AccountNotExistException {
+        // arrange
+        Account account = this.createCorrectAccount();
+        account.setPassword("UPDATE_PASSWORD");
+        // action
+        Account updateAccount = accountUTRepo.updateAccount(account);
+        // assert
+        assertEquals(updateAccount.getPassword(),account.getPassword());
+    }
+
+    @Test(expected = AccountNotExistException.class)
+    public void should_throw_when_update_not_exist_account() throws AccountNotExistException {
+        // arrange
+        Account account = this.createDiscorrectAccount();
+        // action
+        accountUTRepo.updateAccount(account);
+    }
+
     private LoginCommand getSuccessLoginCommand() {
         LoginCommand loginCommand = new LoginCommand();
         loginCommand.setMobileNum("EXIST_ACCOUNT");
@@ -103,4 +195,24 @@ public class AccountTest {
         IAccountRepo IAccountRepo = new AccountUTRepo();
         return IAccountRepo.getByMobileNum(loginCommand.getMobileNum());
     }
+    
+    private Account createCorrectAccount(){
+        AccountCommand accountCommand = new AccountCommand();
+        accountCommand.setMobileNum("EXIST_ACCOUNT");
+        accountCommand.setPassword("PASSWORD");
+        Account account = new Account();
+        account.setMobileNum(accountCommand.getMobileNum());
+        account.setPassword(accountCommand.getPassword());
+        return account;
+    }
+
+    private Account createDiscorrectAccount(){
+        AccountCommand accountCommand = new AccountCommand();
+        accountCommand.setMobileNum("NOT_EXIST_ACCOUNT");
+        accountCommand.setPassword("PASSWORD");
+        Account account = new Account();
+        account.setMobileNum(accountCommand.getMobileNum());
+        account.setPassword(accountCommand.getPassword());
+        return account;
+    }
 }

+ 154 - 0
src/test/java/com/mooctest/crowd/domain/domainobject/EvaluationAgencyTest.java

@@ -0,0 +1,154 @@
+package com.mooctest.crowd.domain.domainobject;
+
+import com.mooctest.crowd.domain.command.CrowdTestReportCommand;
+import com.mooctest.crowd.domain.command.CrowdTestTaskCommand;
+import com.mooctest.crowd.domain.exception.CrowdTestProjectNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestReportNotExistException;
+import com.mooctest.crowd.domain.exception.CrowdTestTaskNoPriceException;
+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/16 10:18
+ */
+public class EvaluationAgencyTest {
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+    private CrowdTestTaskCommand crowdTestTaskCommand = new CrowdTestTaskCommand();
+    private CrowdTestReportCommand crowdTestReportCommand = new CrowdTestReportCommand();
+    private EvaluationAgency evaluationAgency = new EvaluationAgency();
+    @Test
+    public void should_modify_crowd_test_task_status_when_evaluation_agency_receive_task() throws CrowdTestTaskNotExistException, CrowdTestProjectNotExistException, CrowdTestTaskNoPriceException {
+        // arrange
+        evaluationAgency.setId(4444L);
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        Long evaluationAgencyId = evaluationAgency.getId();
+        // action
+        boolean result = evaluationAgency.updateCrowdTestTaskStatusByEvaluationAgency(projectId, taskId, evaluationAgencyId, CrowdTestTaskStatus.RELEASED);
+        // assert
+        assertTrue(result);
+    }
+
+    @Test
+    public void should_return_true_when_view_crowd_test_task_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        // action
+        CrowdTestTask crowdTestTask = crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+        // assert
+        assertEquals(crowdTestTask.getId(), taskId);
+    }
+
+    @Test(expected = CrowdTestTaskNotExistException.class)
+    public void should_throw_when_view_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestTaskCommand.setId(102L);
+        crowdTestTaskCommand.setProjectId(1L);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        // action
+        crowdTestProject.getCrowdTestTaskByTaskId(crowdTestProject, taskId);
+    }
+
+    @Test
+    public void should_modify_status_when_commit_crowd_test_report_success() throws CrowdTestTaskNoPriceException, CrowdTestReportNotExistException, CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestReportCommand.setId(1001L);
+        crowdTestReportCommand.setTaskId(101L);
+        crowdTestReportCommand.setProjectId(1L);
+        Long projectId = crowdTestReportCommand.getProjectId();
+        Long taskId = crowdTestReportCommand.getTaskId();
+        Long reportId = crowdTestReportCommand.getId();
+        // action
+        CrowdTestProject newCrowdTestProject = crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, reportId, CrowdTestReportStatus.COMMITED);
+        // assert
+        CrowdTestTask crowdTestTask = newCrowdTestProject.getCrowdTestTaskByTaskId(newCrowdTestProject, taskId);
+        CrowdTestReport crowdTestReport = crowdTestTask.getCrowdTestReportByReportId(crowdTestTask, reportId);
+        assertEquals(crowdTestReport.getStatus(), CrowdTestReportStatus.COMMITED);
+    }
+
+    @Test(expected = CrowdTestReportNotExistException.class)
+    public void should_throw_when_commit_crowd_test_report_not_exist() throws CrowdTestTaskNoPriceException, CrowdTestReportNotExistException, CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+        // arrange
+        crowdTestReportCommand.setId(1002L);
+        crowdTestReportCommand.setTaskId(101L);
+        crowdTestReportCommand.setProjectId(1L);
+        Long projectId = crowdTestReportCommand.getProjectId();
+        Long taskId = crowdTestReportCommand.getTaskId();
+        Long reportId = crowdTestReportCommand.getId();
+        // action
+        crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, reportId, CrowdTestReportStatus.COMMITED);
+    }
+
+    @Test
+    public void should_modify_crowd_test_task_status_commited_when_commit_crowd_test_task() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
+        // arrange
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setId(101L);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        CrowdTestProject newCrowdTestProject = crowdTestProject.updateCrowdTestReportStatus(projectId, taskId, 1001L, CrowdTestReportStatus.COMMITED);
+        // action
+        boolean result = newCrowdTestProject.modifyCrowdTestTaskStatusToCommit(taskId, CrowdTestTaskStatus.COMMITED);
+        // assert
+        assertTrue(result);
+    }
+
+    @Test
+    public void should_throw_when_commit_crowd_test_task_has_no_commit_crowd_test_report() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
+        // arrange
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setId(101L);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+        CrowdTestProject crowdTestProject = crowdTestProjectRepo.getByID(projectId);
+        // action
+        boolean result = crowdTestProject.modifyCrowdTestTaskStatusToCommit(taskId, CrowdTestTaskStatus.COMMITED);
+        // assert
+        assertFalse(result);
+    }
+
+    @Test
+    public void should_return_true_when_view_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
+        // arrange
+        crowdTestReportCommand.setId(1001L);
+        crowdTestReportCommand.setTaskId(101L);
+        crowdTestReportCommand.setProjectId(1L);
+        Long projectId = crowdTestReportCommand.getProjectId();
+        Long taskId = crowdTestReportCommand.getTaskId();
+        Long reportId = crowdTestReportCommand.getId();
+        // action
+        CrowdTestReport crowdTestReport = crowdTestProject.getCrowdTestReportByProjectId(projectId, taskId, reportId);
+        // assert
+        assertEquals(crowdTestReport.getId(), reportId);
+    }
+
+    @Test
+    public void should_return_true_when_view_crowd_test_project_list_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException, CrowdTestReportNotExistException {
+        // arrange
+        crowdTestReportCommand.setProjectId(1L);
+        crowdTestReportCommand.setTaskId(101L);
+        Long projectId = crowdTestReportCommand.getProjectId();
+        Long taskId = crowdTestReportCommand.getTaskId();
+        // action
+        List<CrowdTestReport> crowdTestReportList = crowdTestProject.getCrowdTestReportListByProjectId(projectId, taskId);
+        // assert
+
+        assertEquals(crowdTestReportList.get(0).getTaskId(), taskId);
+    }
+}

+ 20 - 10
src/test/java/com/mooctest/crowd/domain/domainobject/GeneralUserTest.java

@@ -52,19 +52,19 @@ public class GeneralUserTest {
         crowdTestProjectCommand.setName("PROJECT_TWO");
         crowdTestProjectCommand.setDescription("DESCRIPTION");
         crowdTestProjectCommand.setDistributeId(123L);
-        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.created);
+        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());
+        DistributeType distributeType = new DistributeType();
+        distributeType.setId(crowdTestProjectCommand.getDistributeId());
+        crowdTestProject2.setDistributeType(distributeType);
         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();
@@ -164,12 +164,14 @@ public class GeneralUserTest {
         crowdTestProject.setId(2L);
         crowdTestProject.setName("PROJECT_TWO");
         crowdTestProject.setDescription("DESCRIPTION");
-        crowdTestProject.setDistributeId(123L);
+        DistributeType distributeType = new DistributeType();
+        distributeType.setId(123L);
+        crowdTestProject.setDistributeType(distributeType);
         crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
         crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
         crowdTestProject.setQuotedPrice(200.00);
         crowdTestProject.setCreatTime(new Date());
-        crowdTestProject.setStatus(CrowdTestProjectStatus.created);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.CREATED);
         crowdTestProjects.add(crowdTestProject);
         CrowdTestProjectRepo testProjectRepo = new CrowdTestProjectRepo();
 
@@ -201,9 +203,15 @@ public class GeneralUserTest {
         boolean result = testProjectRepo.updateCrowdTestProjectList(crowdTestProjects);
     }
 
+    // 2.4
     @Test
-    public void show_return_status_when_release_crowd_test_project() {
-
+    public void should_modify_status_released_when_release_crowd_test_project() {
+        // arrange
+        CrowdTestProject crowdTestProject = this.createCrowdTestProject();
+        // action
+        crowdTestProject.setStatus(CrowdTestProjectStatus.RELEASED);
+        // assert
+        assertEquals(crowdTestProject.getStatus(),"HAS_RELEASED");
     }
 
     private CrowdTestProject createCrowdTestProject() {
@@ -211,11 +219,13 @@ public class GeneralUserTest {
         crowdTestProject.setId(1L);
         crowdTestProject.setName("PROJECT_ONE");
         crowdTestProject.setDescription("DESCRIPTION");
-        crowdTestProject.setDistributeId(123L);
+        DistributeType distributeType = new DistributeType();
+        distributeType.setId(123L);
+        crowdTestProject.setDistributeType(distributeType);
         crowdTestProject.setProjectFile(new File("PROJECTFILE.TXT"));
         crowdTestProject.setRequirement(new File("REQUIREMENT.TXT"));
         crowdTestProject.setQuotedPrice(200.00);
-        crowdTestProject.setStatus(CrowdTestProjectStatus.created);
+        crowdTestProject.setStatus(CrowdTestProjectStatus.CREATED);
         crowdTestProject.setCreatTime(new Date());
         return crowdTestProject;
     }

+ 60 - 27
src/test/java/com/mooctest/crowd/domain/domainobject/RegionalManagerTest.java

@@ -3,6 +3,7 @@ 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.CrowdTestTaskNoPriceException;
 import com.mooctest.crowd.domain.exception.CrowdTestTaskNotExistException;
 import com.mooctest.crowd.domain.repository.CrowdTestProjectRepo;
 import org.junit.Test;
@@ -18,16 +19,17 @@ import static org.junit.Assert.*;
 public class RegionalManagerTest {
 
     private CrowdTestProject crowdTestProject = new CrowdTestProject();
-    private CrowdTestProjectRepo crowdTestProjectRepo =  new CrowdTestProjectRepo();
+    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);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.RECEIVED);
         // action
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
         // assert
@@ -38,7 +40,7 @@ public class RegionalManagerTest {
     public void should_throw_when_receive_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
         // arrange
         crowdTestProjectCommand.setId(2L);
-        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.received);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.RECEIVED);
         // action
         crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
     }
@@ -57,7 +59,6 @@ public class RegionalManagerTest {
     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
@@ -74,7 +75,7 @@ public class RegionalManagerTest {
     }
 
     @Test
-    public void should_return_ture_when_make_a_price_for_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+    public void should_return_true_when_make_a_price_for_crowd_test_project_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
         // arrange
         crowdTestTaskCommand.setId(101L);
         crowdTestTaskCommand.setProjectId(1L);
@@ -83,13 +84,13 @@ public class RegionalManagerTest {
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
-        CrowdTestProject crowdTestProject = regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+        CrowdTestProject crowdTestProject = regionalManager.fixedPriceForCrowdTestTask(projectId, id, price);
         List<CrowdTestTask> crowdTestTaskList = crowdTestProjectRepo.getByID(crowdTestProject.getId()).getCrowdTestTaskList();
         for (CrowdTestTask crowdTestTask : crowdTestTaskList
-             ) {
-            if(crowdTestTask.getId().equals(id)){
+        ) {
+            if (crowdTestTask.getId().equals(id)) {
                 // assert
-                assertEquals(price,crowdTestTask.getPrice());
+                assertEquals(price, crowdTestTask.getPrice());
             }
         }
     }
@@ -104,7 +105,7 @@ public class RegionalManagerTest {
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
-        regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+        regionalManager.fixedPriceForCrowdTestTask(projectId, id, price);
     }
 
     @Test(expected = CrowdTestTaskNotExistException.class)
@@ -117,56 +118,88 @@ public class RegionalManagerTest {
         Long id = crowdTestTaskCommand.getId();
         Double price = crowdTestTaskCommand.getPrice();
         // action
-        regionalManager.fixedPriceForCrowdTestTask(projectId,id,price);
+        regionalManager.fixedPriceForCrowdTestTask(projectId, id, price);
     }
 
     @Test
-    public void should_retrun_true_when_distribute_crowd_test_task_to_evaluation_agency_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+    public void should_return_true_when_distribute_crowd_test_task_to_evaluation_agency_success() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(101L);
         crowdTestTaskCommand.setProjectId(1L);
-        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
         Long projectId = crowdTestTaskCommand.getProjectId();
-        Long id = crowdTestTaskCommand.getId();
+        Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
-        boolean resule = regionalManager.distributeCrowdTestTask(projectId, id, status);
+        boolean result = crowdTestProject.updateCrowdTestTaskStatus(projectId, taskId, status);
 
         // assert
-        assertTrue(resule);
+        assertTrue(result);
     }
 
     @Test(expected = CrowdTestProjectNotExistException.class)
-    public void should_throw_when_distribute_crowd_test_task_to_evaluation_agency_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+    public void should_throw_when_distribute_crowd_test_task_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(101L);
         crowdTestTaskCommand.setProjectId(2L);
-        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
         Long projectId = crowdTestTaskCommand.getProjectId();
-        Long id = crowdTestTaskCommand.getId();
+        Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
-        regionalManager.distributeCrowdTestTask(projectId, id, status);
+        crowdTestProject.updateCrowdTestTaskStatus(projectId, taskId, status);
     }
 
     @Test(expected = CrowdTestTaskNotExistException.class)
-    public void should_throw_when_distribute_crowd_test_task_to_evaluation_agency_tesk_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException {
+    public void should_throw_when_distribute_crowd_test_task_crowd_test_task_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
         // arrange
         crowdTestTaskCommand.setId(103L);
         crowdTestTaskCommand.setProjectId(1L);
-        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.released);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
         Long projectId = crowdTestTaskCommand.getProjectId();
-        Long id = crowdTestTaskCommand.getId();
+        Long taskId = crowdTestTaskCommand.getId();
         String status = crowdTestProjectCommand.getStatus();
         // action
-        regionalManager.distributeCrowdTestTask(projectId, id, status);
+        crowdTestProject.updateCrowdTestTaskStatus(projectId, taskId, status);
+    }
+
+    @Test(expected = CrowdTestTaskNoPriceException.class)
+    public void should_throw_when_distribute_crowd_test_task_price_not_exist() throws CrowdTestProjectNotExistException, CrowdTestTaskNotExistException, CrowdTestTaskNoPriceException {
+        // arrange
+        crowdTestTaskCommand.setId(101L);
+        crowdTestTaskCommand.setProjectId(1L);
+        crowdTestTaskCommand.setStatus(CrowdTestTaskStatus.RELEASED);
+        Long projectId = crowdTestTaskCommand.getProjectId();
+        Long taskId = crowdTestTaskCommand.getId();
+        String status = crowdTestProjectCommand.getStatus();
+        // action
+        crowdTestProject.updateCrowdTestTaskStatusNoPrice(projectId, taskId, status);
+    }
+
+    @Test
+    public void should_modify_all_task_status_finished_when_aggregation_task() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(1L);
+        Long projectId = crowdTestProjectCommand.getId();
+        // action
+        List<CrowdTestTask> crowdTestTaskList = crowdTestProject.updateCrowdTestTaskListStatus(projectId, CrowdTestTaskStatus.FINISHED);
+        // assert
+        boolean result = true;
+        for (CrowdTestTask crowdTestTask : crowdTestTaskList) {
+            if (crowdTestTask.getStatus().equals("HAS_FINISHED")){
+                continue;
+            }else{
+                result = false;
+            }
+        }
+        assertTrue(result);
     }
 
     @Test
-    public void should_modify_status_finished_when_submit_crowd_test_project_success() throws CrowdTestProjectNotExistException {
+    public void should_modify_project_status_finished_when_submit_crowd_test_project_success() throws CrowdTestProjectNotExistException {
         // arrange
         crowdTestProjectCommand.setId(1L);
-        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.finished);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.FINISHED);
         // action
         CrowdTestProject crowdTestProject = crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
         // assert
@@ -177,7 +210,7 @@ public class RegionalManagerTest {
     public void should_throw_when_submit_crowd_test_project_not_exist() throws CrowdTestProjectNotExistException {
         // arrange
         crowdTestProjectCommand.setId(2L);
-        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.finished);
+        crowdTestProjectCommand.setStatus(CrowdTestProjectStatus.FINISHED);
         // action
         crowdTestProjectRepo.updateCrowdTestProjectStatus(crowdTestProjectCommand.getId(), crowdTestProjectCommand.getStatus());
     }

+ 27 - 0
src/test/java/com/mooctest/crowd/domain/domainobject/SystemAdministratorTest.java

@@ -0,0 +1,27 @@
+package com.mooctest.crowd.domain.domainobject;
+
+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 static org.junit.Assert.*;
+
+/**
+ * @author guochao
+ * @date 2019/7/16 16:12
+ */
+public class SystemAdministratorTest {
+    private CrowdTestProjectRepo crowdTestProjectRepo = new CrowdTestProjectRepo();
+    private CrowdTestProject crowdTestProject = new CrowdTestProject();
+    private CrowdTestProjectCommand crowdTestProjectCommand = new CrowdTestProjectCommand();
+    @Test
+    public void should_modify_crowd_test_project_status_when_finished_crowd_test_project() throws CrowdTestProjectNotExistException {
+        // arrange
+        crowdTestProjectCommand.setId(1L);
+        // action
+        CrowdTestProject crowdTestProject = this.crowdTestProject.updateCrowdTestProjectStatusToFinish(crowdTestProjectCommand.getId(), CrowdTestProjectStatus.FINISHED);
+        // assert
+        assertEquals(crowdTestProject.getStatus(), CrowdTestProjectStatus.FINISHED);
+    }
+}