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