提交 edf256f5 authored 作者: mry's avatar mry

fix(base/web): 修改了entity,以及testng

上级 ff6d8e2d
package org.matrix.database.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestData;
import java.util.List;
/**
* @author mry
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Accessors(chain = true)
public class TestCaseData {
private TestCase testCase;
private List<TestData> testData;
}
package org.matrix.testNg; package org.matrix.testNg;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.matrix.BaseBootApplication; import org.matrix.BaseBootApplication;
import org.matrix.actuators.checkpoint.CheckPointActuator; import org.matrix.actuators.checkpoint.CheckPointActuator;
import org.matrix.actuators.checkpoint.CheckPointResult; import org.matrix.actuators.checkpoint.CheckPointResult;
...@@ -7,7 +8,10 @@ import org.matrix.actuators.httpclient.HttpClientActuator; ...@@ -7,7 +8,10 @@ import org.matrix.actuators.httpclient.HttpClientActuator;
import org.matrix.actuators.usecase.CaseActuator; import org.matrix.actuators.usecase.CaseActuator;
import org.matrix.actuators.usecase.TestCaseExecuteResult; import org.matrix.actuators.usecase.TestCaseExecuteResult;
import org.matrix.database.entity.TestCase; import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestCaseBTO;
import org.matrix.database.entity.TestData;
import org.matrix.database.service.ITestCaseService; import org.matrix.database.service.ITestCaseService;
import org.matrix.database.service.ITestDataService;
import org.matrix.exception.GlobalException; import org.matrix.exception.GlobalException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
...@@ -19,6 +23,7 @@ import org.testng.Reporter; ...@@ -19,6 +23,7 @@ import org.testng.Reporter;
import org.testng.annotations.*; import org.testng.annotations.*;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
...@@ -47,6 +52,9 @@ public class TestPigeon extends AbstractTestNGSpringContextTests { ...@@ -47,6 +52,9 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
@Autowired @Autowired
private ITestCaseService caseService; private ITestCaseService caseService;
@Autowired
private ITestDataService dataService;
@Autowired @Autowired
private CheckPointActuator checkPointActuator; private CheckPointActuator checkPointActuator;
...@@ -69,18 +77,24 @@ public class TestPigeon extends AbstractTestNGSpringContextTests { ...@@ -69,18 +77,24 @@ public class TestPigeon extends AbstractTestNGSpringContextTests {
return new DataProviderForDb(driver, url, username, password, sql); return new DataProviderForDb(driver, url, username, password, sql);
} }
@Test(dataProvider = "testData") @Test(dataProvider = "testData")
public void test(Map<String, String> data) { public void test(Map<String, String> data) {
long caseId = Long.parseLong(data.get("id")); long caseId = Long.parseLong(data.get("id"));
CaseActuator caseActuator = new CaseActuator(checkPointActuator, httpClientActuator); CaseActuator caseActuator = new CaseActuator(checkPointActuator, httpClientActuator);
TestCase testCase = java.util.Optional.of(caseService.getById(caseId)) TestCase testCase = java.util.Optional.of(caseService.getById(caseId))
.orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId))); .orElseThrow(() -> new GlobalException(String.format("没有找到id = %d 的TestCase", caseId)));
//todo 苗润雨 将这个NULL填一下,里面放testData List<TestData> testDataList = java.util.Optional.of(dataService.list(Wrappers.lambdaQuery(TestData.class)
TestCaseExecuteResult testCaseExecuteResult = caseActuator.executeTestCase(null, envId, projectId); .eq(TestData::getTestCaseId, caseId)))
.orElseThrow(()->new GlobalException(String.format("没有找到testCaseId = %d 的TestData", caseId)));
TestCaseBTO testCaseBTO = new TestCaseBTO();
testCaseBTO.setTestCase(testCase);
for (TestData testData : testDataList){
testCaseBTO.setTestData(testData);
TestCaseExecuteResult testCaseExecuteResult = caseActuator.executeTestCase(testCaseBTO,envId, projectId);
CheckPointResult checkPointResult = testCaseExecuteResult.getCheckPointResult(); CheckPointResult checkPointResult = testCaseExecuteResult.getCheckPointResult();
Reporter.log(checkPointResult.toString()); Reporter.log(checkPointResult.toString());
} }
}
@AfterMethod @AfterMethod
public void afterMethod(ITestResult result, Object[] objs) { public void afterMethod(ITestResult result, Object[] objs) {
......
...@@ -126,7 +126,7 @@ public class MoveController { ...@@ -126,7 +126,7 @@ public class MoveController {
@ApiOperation(value = "修改行为以及动作") @ApiOperation(value = "修改行为以及动作")
@PutMapping @PutMapping
public ResponseEntity<CommonResultObj<MoveAction>> updateMoveAction(@RequestBody MoveAction moveAction) { public ResponseEntity<CommonResultObj<MoveAction>> updateMoveAction(@RequestBody MoveAction moveAction) {
Boolean moveBoolean = Optional.of(moveService.updateById(moveAction.getMove())) Boolean update = Optional.of(moveService.updateById(moveAction.getMove()))
.orElseThrow(GlobalException::new); .orElseThrow(GlobalException::new);
Boolean delete = Optional.of(actionService.remove(Wrappers.lambdaQuery(Action.class) Boolean delete = Optional.of(actionService.remove(Wrappers.lambdaQuery(Action.class)
.eq(Action::getMoveId, moveAction.getMove().getId()))) .eq(Action::getMoveId, moveAction.getMove().getId())))
...@@ -137,7 +137,7 @@ public class MoveController { ...@@ -137,7 +137,7 @@ public class MoveController {
); );
Boolean saveOrUpdate = Optional.of(actionService.saveOrUpdateBatch(moveAction.getAction())) Boolean saveOrUpdate = Optional.of(actionService.saveOrUpdateBatch(moveAction.getAction()))
.orElseThrow(() -> new GlobalException("修改失败")); .orElseThrow(() -> new GlobalException("修改失败"));
return moveBoolean && saveOrUpdate && delete return update && saveOrUpdate && delete
? CommonResult.success(moveAction, "修改成功") ? CommonResult.success(moveAction, "修改成功")
: CommonResult.failed(moveAction, "修改失败"); : CommonResult.failed(moveAction, "修改失败");
} }
......
...@@ -5,15 +5,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -5,15 +5,24 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.matrix.database.entity.TestCase; import org.matrix.database.entity.TestCase;
import org.matrix.database.entity.TestData;
import org.matrix.database.service.ITestCaseService; import org.matrix.database.service.ITestCaseService;
import org.matrix.database.service.ITestDataService;
import org.matrix.database.vo.CommonResult; import org.matrix.database.vo.CommonResult;
import org.matrix.database.vo.CommonResultObj; import org.matrix.database.vo.CommonResultObj;
import org.matrix.database.vo.MoveAction;
import org.matrix.database.vo.TestCaseData;
import org.matrix.exception.GlobalException;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import static java.util.Optional.ofNullable;
/** /**
* <p> * <p>
* 前端控制器 * 前端控制器
...@@ -28,10 +37,13 @@ import java.util.Optional; ...@@ -28,10 +37,13 @@ import java.util.Optional;
@Api(tags = "对用例test_case的基本操作") @Api(tags = "对用例test_case的基本操作")
public class TestCaseController { public class TestCaseController {
private final ITestDataService testDataService;
private final ITestCaseService testCaseService; private final ITestCaseService testCaseService;
public TestCaseController(ITestCaseService testCaseService) { public TestCaseController(ITestCaseService testCaseService, ITestDataService testDataService) {
this.testCaseService = testCaseService; this.testCaseService = testCaseService;
this.testDataService = testDataService;
} }
/** /**
...@@ -39,7 +51,7 @@ public class TestCaseController { ...@@ -39,7 +51,7 @@ public class TestCaseController {
* *
* @param pageSize 每页多少条数据 * @param pageSize 每页多少条数据
* @param pageNum 当前第几页 * @param pageNum 当前第几页
* @param name 用例名称 * @param name 行为名称
* @param projectId 项目id * @param projectId 项目id
* @return 分页查询的结果, 用例 * @return 分页查询的结果, 用例
*/ */
...@@ -59,42 +71,95 @@ public class TestCaseController { ...@@ -59,42 +71,95 @@ public class TestCaseController {
} }
/** /**
* 添加用例 * 输入用例主键id,查询出用例以及用例下包含的所有数据组
* *
* @param testCase 用例对象 * @param testCaseId 用例id
* @return 添加的用例, 以及是否添加成功的提示信息 * @return {@link TestCaseData}
*/ */
@ApiOperation(value = "添加用例") @ApiOperation(value = "根据用例id查,用例以及,用例下的数据组")
@GetMapping("/testCase/{testCaseId}")
public ResponseEntity<CommonResultObj<TestCaseData>> findByIdMoveAction(@PathVariable Long testCaseId) {
TestCase byId = testCaseService.getById(testCaseId);
if (byId == null) {
throw new GlobalException("不存在用例");
}
TestCase testCase = ofNullable(testCaseService.getById(testCaseId))
.orElseThrow(() -> new GlobalException(String.format("没有查到指定的用例,你提供的行为id是%d", testCaseId)));
List<TestData> testDataList = ofNullable(testDataService.list(Wrappers.lambdaQuery(TestData.class)
.eq(TestData::getTestCaseId, testCaseId)))
.orElse(new ArrayList<>());
TestCaseData ma = new TestCaseData(testCase, testDataList);
return CommonResult.success(ma, "查询成功");
}
/**
* 添加用例和数据组(可以单独添加用例)
*
* @param testCaseData 用例以及用例下的数据组
* @return 添加的用例和数据组, 以及是否添加成功的提示信息
*/
@ApiOperation(value = "添加用例和数据组")
@PostMapping @PostMapping
public ResponseEntity<CommonResultObj<TestCase>> insertTestCase(@RequestBody TestCase testCase) { public ResponseEntity<CommonResultObj<TestCaseData>> insertMoveAction(@RequestBody TestCaseData testCaseData) {
return CommonResult.pred(testCaseService::save, testCase Boolean testCaseBoolean = Optional.of(testCaseService.save(testCaseData.getTestCase()))
, "添加成功", "添加失败"); .orElseThrow(GlobalException::new);
Long id = testCaseData.getTestCase().getId();
if (testCaseData.getTestData().size() != 0) {
for (TestData testData : testCaseData.getTestData()) {
testData.setTestCaseId(id);
}
}
boolean testDataBoolean = testDataService.saveBatch(testCaseData.getTestData());
if (testCaseData.getTestData().size() == 0) {
testDataBoolean = true;
}
return testCaseBoolean && testDataBoolean
? CommonResult.success(testCaseData, "添加成功")
: CommonResult.failed("添加失败");
} }
/** /**
* 修改用例 * 修改用例,根据用例id修改数据组
* *
* @param testCase 用例对象 * @param testCaseData 用例以及用例下的数据组
* @return 修改后的用例, 以及是否修改成功的提示信息 * @return {@link TestCaseData}
*/ */
@ApiOperation(value = "修改用例") @ApiOperation(value = "修改用例以及数据组")
@PutMapping @PutMapping
public ResponseEntity<CommonResultObj<TestCase>> updateTestCase(@RequestBody TestCase testCase) { public ResponseEntity<CommonResultObj<TestCaseData>> updateMoveAction(@RequestBody TestCaseData testCaseData) {
return CommonResult.pred(testCaseService::updateById, testCase Boolean update = Optional.of(testCaseService.updateById(testCaseData.getTestCase()))
, "修改成功", "修改失败"); .orElseThrow(GlobalException::new);
Boolean delete = Optional.of(testDataService.remove(Wrappers.lambdaQuery(TestData.class)
.eq(TestData::getTestCaseId, testCaseData.getTestCase().getId())))
.orElseThrow(() -> new GlobalException("删除失败"));
Long id = testCaseData.getTestCase().getId();
testCaseData.getTestData().forEach(
action -> action.setTestCaseId(id)
);
Boolean saveOrUpdate = Optional.of(testDataService.saveOrUpdateBatch(testCaseData.getTestData()))
.orElseThrow(() -> new GlobalException("修改失败"));
return update && saveOrUpdate && delete
? CommonResult.success(testCaseData, "修改成功")
: CommonResult.failed(testCaseData, "修改失败");
} }
/** /**
* 删除用例 * 删除用例和数据组
* *
* @param id 用例id * @param testCaseId 用例id
* @return 删除的用例id, 以及是否删除成功的提示信息 * @return 是否删除成功
*/ */
@ApiOperation(value = "根据主键id删除用例") @ApiOperation(value = "删除行用例和数据组")
@DeleteMapping("/{id}") @DeleteMapping("/{testCaseId}")
public ResponseEntity<CommonResultObj<Long>> deleteTestCase(@PathVariable Long id) { public ResponseEntity<CommonResultObj<MoveAction>> deleteMoveAction(@PathVariable Long testCaseId) {
return CommonResult.pred(testCaseService::removeById, id Boolean testCaseBoolean = Optional.of(testCaseService.removeById(testCaseId))
, "删除成功", "删除失败或id不存在"); .orElseThrow(() -> new GlobalException(String.format("没有查到指定的用例,你提供的用例id是%d", testCaseId)));
Boolean testDataBoolean = Optional.of(testDataService.remove(Wrappers.lambdaQuery(TestData.class)
.eq(TestData::getTestCaseId, testCaseId)))
.orElseThrow(() -> new GlobalException(String.format("没有查到指定的用例,你提供的用例id是%id", testCaseId)));
return testCaseBoolean && testDataBoolean
? CommonResult.success("删除成功")
: CommonResult.failed("删除失败或不存在");
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论