feat(): 新增测试内容

1、增加引擎版本页面,可以进行数据作用域的查看
2、增加引擎测试页面,可以基于作用域进行引擎测试内容
3、增加点击测试返回实例值内容
master
DongZeLiang 2024-05-08 22:48:33 +08:00
parent 43c3e6a010
commit 771ac40c75
2 changed files with 215 additions and 96 deletions

View File

@ -327,7 +327,7 @@ export default {
"description": "<p>根据字段组合匹配等,进行不同数据集合的校验</p>",
"remark": "-",
"code": "only",
"level": "data-field"
"level": "data-record"
},
{
"id": 3,
@ -338,7 +338,7 @@ export default {
"description": "<p>根据接口不同进行远程API调用匹配是否数据完整</p>",
"remark": "-",
"code": "remote",
"level": "data-field"
"level": "data-set"
},
]
}

View File

@ -216,22 +216,50 @@
</el-select>
</el-card>
</el-col>
<el-col :span="24">
<el-card class="box-card" v-if="assets != null">
<el-col :span="24" v-if="assets != null">
<el-card class="box-card" v-if="this.ruleEngineInfo.level === 'data-field'">
<div slot="header" class="clearfix">
<span>选择资产模型</span>
<el-button style="float: right; padding: 3px 0" type="text" @click="dataModelRandom"></el-button>
</div>
<el-descriptions direction="vertical" :column="3" border>
<el-descriptions-item v-for="_dataModel in dataModelList"
:label='_dataModel.name + "("+_dataModel.comment+")"'>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMap[_dataModel.name]}}</el-radio>
<el-radio v-model="dataMode" :label="_dataModel.name" :value="_dataModel.id">{{dataModeMapList[dataModeMapIndex][_dataModel.name]}}</el-radio>
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="box-card" v-if="this.ruleEngineInfo.level !== 'data-field'">
<div slot="header" class="clearfix">
<span>{{this.ruleEngineInfo.level === "data-set" ? "选择资产集" : "选择资产记录"}}</span>
</div>
<el-table :data="dataModeMapList" max-height="200px"
@selection-change="changeDataRow">
<el-table-column type="selection" width="55" v-if="this.ruleEngineInfo.level === 'data-set'"/>
<el-table-column v-for="dataModel in dataModelList" :label="dataModel.comment" :prop="dataModel.name"/>
<el-table-column label="操作" v-if="this.ruleEngineInfo.level !== 'data-set'">
<template slot-scope="scope">
<el-button type="text" @click="dataRecordSelect(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<el-descriptions title="选择行数据" direction="vertical" :column="3" border style="margin-top: 20px" v-if="dataRecordSelectData != null">
<el-descriptions-item v-for="(val, key) in dataRecordSelectData"
:label='key'>
<el-checkbox v-model="dataRecordSelectKeyList" :label="key" :value="key">{{val}}</el-checkbox>
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="选择模型" :column="3" border style="margin-top: 20px" v-if="changeDataList.length !== 0">
<el-descriptions-item v-for="_dataModel in dataModelList"
:label='_dataModel.comment'>
<el-checkbox v-model="dataRecordSelectKeyList" :label="_dataModel.name" :value="_dataModel.id"></el-checkbox>
</el-descriptions-item>
</el-descriptions>
</el-card>
</el-col>
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null">
<el-button>测试</el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" />
<el-col :span="24" style="margin-top: 10px" v-if="dataMode != null || dataRecordSelectKeyList.length > 0">
<el-button @click="dataTest"></el-button>
<el-input style="margin-top: 10px" v-model="testResult" type="textarea" placeholder="请点击测试" disabled/>
</el-col>
</el-col>
</el-row>
@ -250,6 +278,41 @@ export default {
data() {
return {
ruleEngineId: this.$route.params && this.$route.params.ruleEngineId,
ruleEngineInfoList: [
{
"id": 1,
"name": "邮箱规则",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>",
"remark": "-",
"code": "email",
"level": "data-field"
},
{
"id": 2,
"name": "唯一性校验",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据字段组合匹配等,进行不同数据集合的校验</p>",
"remark": "-",
"code": "only",
"level": "data-record"
},
{
"id": 3,
"name": "远程接口校验",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据接口不同进行远程API调用匹配是否数据完整</p>",
"remark": "-",
"code": "remote",
"level": "data-set"
},
],
ruleEngineInfo: {
"id": 1,
"name": "邮箱规则",
@ -403,14 +466,64 @@ export default {
}, ],
//
dataMode: null,
//
dataModeMap: {
id: 1,
name: "张三",
sex: 1,
price: "653.69",
create_time: "2024-5-7 16:37:16",
},
//
dataModeMapList : [
{
id: 1,
name: "张三",
sex: 1,
price: "264.69",
create_time: "2024-5-7 16:37:16",
},
{
id: 2,
name: "李四",
sex: 2,
price: "362.69",
create_time: "2023-1-7 41:22:08",
},
{
id: 3,
name: "王五",
sex: 0,
price: "485.69",
create_time: "1996-4-7 02:14:36",
},
{
id: 4,
name: "赵六",
sex: 0,
price: "485.69",
create_time: "2004-4-7 02:14:36",
},
{
id: 5,
name: "猪八戒",
sex: 0,
price: "485.69",
create_time: "1969-4-7 02:14:36",
},
{
id: 6,
name: "孙悟空",
sex: 1,
price: "485.44",
create_time: "2015-4-7 02:14:36",
},
{
id: 7,
name: "唐三",
sex: 0,
price: "635.69",
create_time: "2003-5-7 16:37:16",
},
],
dataModeMapIndex: 0,
dataRecordSelectData: null,
// key
dataRecordSelectKeyList: [],
// List
changeDataList: [],
testResult: ""
}
},
@ -418,7 +531,30 @@ export default {
this.initRuleEngine();
},
methods: {
//
dataTest(){
let number = Math.floor(Math.random()*3);
if (number === 0){
this.testResult = "测试正常,无异常数据返回";
}else if (number === 1){
this.testResult = "测试失败:触发*****异常条例,数据发生动作【移除/忽略/记录】";
}else if (number === 2){
this.testResult = "程序异常:*******异常";
}
},
//
changeDataRow(val){
this.changeDataList = val;
},
//
dataRecordSelect(row){
this.dataRecordSelectKeyList = [];
this.dataRecordSelectData = row;
},
//
dataModelRandom(){
this.dataModeMapIndex = Math.floor(Math.random()*this.dataModeMapList.length);
},
saveCoding(){
this.$message.success('编码保存成功');
},
@ -504,89 +640,72 @@ export default {
}
},
initRuleEngine(){
let response = {
"code": 200,
"msg": "查询成功",
"data": {
"id": 1,
"name": "邮箱规则",
"type": "rule-custom",
"isActivate": "no-activate",
"status": "0",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>",
"remark": "-",
"code": "email",
"engineCode": "engine_custom_email",
"level": "data-field",
"ruleEngineVersionList": [
{
"name": "163剔除", "code": "IAW3S02", "status": "0", "isTest": "0",
"versionCode": "engine_custom_email_IAW3S02", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
"\n" +
"import com.muyu.engine.action.ActionDiscard;\n" +
"import com.muyu.engine.scope.DataModelEngine;\n" +
"\n" +
"/**\n" +
" * @Author: DongZeLiang\n" +
" * @date: 2024/5/6\n" +
" * @Description: ce-IAW3S02\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class engine_custom_email_IAW3S02 extends DataModelEngine {\n" +
" @Override\n" +
" public void execution () {\n" +
" Object value = getValue();\n" +
"\n" +
" if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
" throw new ActionDiscard();\n" +
" }\n" +
" }\n" +
"}"
},
{
"name": "筛选不合规邮箱", "code": "JISID8S", "status": "2", "isTest": "1",
"versionCode": "engine_custom_email_JISID8S", "isActivate": "activated",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
"\n" +
"import com.muyu.engine.action.ActionDiscard;\n" +
"import com.muyu.engine.scope.DataModelEngine;\n" +
"\n" +
"/**\n" +
" * @Author: DongZeLiang\n" +
" * @date: 2024/5/6\n" +
" * @Description: ce-JISID8S\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class engine_custom_email_JISID8S extends DataModelEngine {\n" +
" @Override\n" +
" public void execution () {\n" +
" Object value = getValue();\n" +
"\n" +
" if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
" throw new ActionDiscard();\n" +
" }\n" +
" }\n" +
"}"
},
{
"name": "剔除自定义邮箱", "code": "DJ8S9EA", "status": "2", "isTest": "2",
"versionCode": "engine_custom_email_DJ8S9EA", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>"
},
{
"name": "邮箱默认值操作", "code": "XJS9E0S", "status": "1", "isTest": "0",
"versionCode": "engine_custom_email_XJS9E0S", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>"
}
]
}
this.ruleEngineInfo = this.ruleEngineInfoList.findLast(ruleInfo => ruleInfo.id == this.ruleEngineId)
this.ruleEngineInfo.ruleEngineVersionList = [
{
"name": "163剔除", "code": "IAW3S02", "status": "0", "isTest": "0",
"versionCode": "engine_custom_email_IAW3S02", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
"\n" +
"import com.muyu.engine.action.ActionDiscard;\n" +
"import com.muyu.engine.scope.DataModelEngine;\n" +
"\n" +
"/**\n" +
" * @Author: DongZeLiang\n" +
" * @date: 2024/5/6\n" +
" * @Description: ce-IAW3S02\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class engine_custom_email_IAW3S02 extends DataModelEngine {\n" +
" @Override\n" +
" public void execution () {\n" +
" Object value = getValue();\n" +
"\n" +
" if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
" throw new ActionDiscard();\n" +
" }\n" +
" }\n" +
"}"
},
{
"name": "筛选不合规邮箱", "code": "JISID8S", "status": "2", "isTest": "1",
"versionCode": "engine_custom_email_JISID8S", "isActivate": "activated",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>","codeIng": "package com.muyu.rule.engine.custom;\n" +
"\n" +
"import com.muyu.engine.action.ActionDiscard;\n" +
"import com.muyu.engine.scope.DataModelEngine;\n" +
"\n" +
"/**\n" +
" * @Author: DongZeLiang\n" +
" * @date: 2024/5/6\n" +
" * @Description: ce-JISID8S\n" +
" * @Version: 1.0\n" +
" */\n" +
"public class engine_custom_email_JISID8S extends DataModelEngine {\n" +
" @Override\n" +
" public void execution () {\n" +
" Object value = getValue();\n" +
"\n" +
" if (value == null || \"\".equals(value) || \"null\".equals(value)) {\n" +
" throw new ActionDiscard();\n" +
" }\n" +
" }\n" +
"}"
},
{
"name": "剔除自定义邮箱", "code": "DJ8S9EA", "status": "2", "isTest": "2",
"versionCode": "engine_custom_email_DJ8S9EA", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>"
},
{
"name": "邮箱默认值操作", "code": "XJS9E0S", "status": "1", "isTest": "0",
"versionCode": "engine_custom_email_XJS9E0S", "isActivate": "no-activate",
"description": "<p>根据邮箱规则进行数据校验,内包含所有邮箱校验规则</p>"
}
this.ruleEngineInfo = response.data
]
},
//
getCodeIng(){
let packageName = "com.muyu.rule.engine";
let customName = "custom";
let templateName = "template";