created tests for rule chain metadata validator
This commit is contained in:
parent
44a700e89a
commit
8bd617e3b5
@ -39,7 +39,6 @@ import org.thingsboard.server.common.data.rule.RuleChainMetaData;
|
||||
import org.thingsboard.server.common.data.rule.RuleNode;
|
||||
import org.thingsboard.server.dao.entity.AbstractEntityService;
|
||||
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||
import org.thingsboard.server.dao.exception.IncorrectParameterException;
|
||||
import org.thingsboard.server.dao.service.DataValidator;
|
||||
import org.thingsboard.server.dao.service.PaginatedRemover;
|
||||
import org.thingsboard.server.dao.service.Validator;
|
||||
@ -52,7 +51,6 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Created by igor on 3/12/18.
|
||||
@ -217,7 +215,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
||||
Map<Integer, Set<Integer>> connectionsMap = new HashMap<>();
|
||||
for (NodeConnectionInfo nodeConnection : connectionInfos) {
|
||||
if (nodeConnection.getFromIndex() == nodeConnection.getToIndex()) {
|
||||
throw new IncorrectParameterException("Can't create the relation to yourself.");
|
||||
throw new DataValidationException("Can't create the relation to yourself.");
|
||||
}
|
||||
connectionsMap
|
||||
.computeIfAbsent(nodeConnection.getFromIndex(), from -> new HashSet<>())
|
||||
@ -232,7 +230,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
|
||||
}
|
||||
for (Integer to : toList) {
|
||||
if (from == to) {
|
||||
throw new IncorrectParameterException("Can't create circling relations in rule chain.");
|
||||
throw new DataValidationException("Can't create circling relations in rule chain.");
|
||||
}
|
||||
validateCircles(from, connectionsMap.get(to), connectionsMap);
|
||||
}
|
||||
|
||||
@ -317,6 +317,16 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
|
||||
ruleChainService.deleteRuleChainById(tenantId, savedRuleChainMetaData.getRuleChainId());
|
||||
}
|
||||
|
||||
@Test(expected = DataValidationException.class)
|
||||
public void testUpdateRuleChainMetaDataWithCirclingRelation() throws Exception {
|
||||
ruleChainService.saveRuleChainMetaData(tenantId, createRuleChainMetadataWithCirclingRelation());
|
||||
}
|
||||
|
||||
@Test(expected = DataValidationException.class)
|
||||
public void testUpdateRuleChainMetaDataWithCirclingRelation2() throws Exception {
|
||||
ruleChainService.saveRuleChainMetaData(tenantId, createRuleChainMetadataWithCirclingRelation2());
|
||||
}
|
||||
|
||||
private RuleChainMetaData createRuleChainMetadata() throws Exception {
|
||||
RuleChain ruleChain = new RuleChain();
|
||||
ruleChain.setName("My RuleChain");
|
||||
@ -357,5 +367,85 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
|
||||
return ruleChainService.saveRuleChainMetaData(tenantId, ruleChainMetaData);
|
||||
}
|
||||
|
||||
private RuleChainMetaData createRuleChainMetadataWithCirclingRelation() throws Exception {
|
||||
RuleChain ruleChain = new RuleChain();
|
||||
ruleChain.setName("My RuleChain");
|
||||
ruleChain.setTenantId(tenantId);
|
||||
RuleChain savedRuleChain = ruleChainService.saveRuleChain(ruleChain);
|
||||
|
||||
RuleChainMetaData ruleChainMetaData = new RuleChainMetaData();
|
||||
ruleChainMetaData.setRuleChainId(savedRuleChain.getId());
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
RuleNode ruleNode1 = new RuleNode();
|
||||
ruleNode1.setName("name1");
|
||||
ruleNode1.setType("type1");
|
||||
ruleNode1.setConfiguration(mapper.readTree("\"key1\": \"val1\""));
|
||||
|
||||
RuleNode ruleNode2 = new RuleNode();
|
||||
ruleNode2.setName("name2");
|
||||
ruleNode2.setType("type2");
|
||||
ruleNode2.setConfiguration(mapper.readTree("\"key2\": \"val2\""));
|
||||
|
||||
RuleNode ruleNode3 = new RuleNode();
|
||||
ruleNode3.setName("name3");
|
||||
ruleNode3.setType("type3");
|
||||
ruleNode3.setConfiguration(mapper.readTree("\"key3\": \"val3\""));
|
||||
|
||||
List<RuleNode> ruleNodes = new ArrayList<>();
|
||||
ruleNodes.add(ruleNode1);
|
||||
ruleNodes.add(ruleNode2);
|
||||
ruleNodes.add(ruleNode3);
|
||||
ruleChainMetaData.setFirstNodeIndex(0);
|
||||
ruleChainMetaData.setNodes(ruleNodes);
|
||||
|
||||
ruleChainMetaData.addConnectionInfo(0,1,"success");
|
||||
ruleChainMetaData.addConnectionInfo(0,2,"fail");
|
||||
ruleChainMetaData.addConnectionInfo(1,2,"success");
|
||||
ruleChainMetaData.addConnectionInfo(2,2,"success");
|
||||
|
||||
return ruleChainMetaData;
|
||||
}
|
||||
|
||||
private RuleChainMetaData createRuleChainMetadataWithCirclingRelation2() throws Exception {
|
||||
RuleChain ruleChain = new RuleChain();
|
||||
ruleChain.setName("My RuleChain");
|
||||
ruleChain.setTenantId(tenantId);
|
||||
RuleChain savedRuleChain = ruleChainService.saveRuleChain(ruleChain);
|
||||
|
||||
RuleChainMetaData ruleChainMetaData = new RuleChainMetaData();
|
||||
ruleChainMetaData.setRuleChainId(savedRuleChain.getId());
|
||||
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
|
||||
RuleNode ruleNode1 = new RuleNode();
|
||||
ruleNode1.setName("name1");
|
||||
ruleNode1.setType("type1");
|
||||
ruleNode1.setConfiguration(mapper.readTree("\"key1\": \"val1\""));
|
||||
|
||||
RuleNode ruleNode2 = new RuleNode();
|
||||
ruleNode2.setName("name2");
|
||||
ruleNode2.setType("type2");
|
||||
ruleNode2.setConfiguration(mapper.readTree("\"key2\": \"val2\""));
|
||||
|
||||
RuleNode ruleNode3 = new RuleNode();
|
||||
ruleNode3.setName("name3");
|
||||
ruleNode3.setType("type3");
|
||||
ruleNode3.setConfiguration(mapper.readTree("\"key3\": \"val3\""));
|
||||
|
||||
List<RuleNode> ruleNodes = new ArrayList<>();
|
||||
ruleNodes.add(ruleNode1);
|
||||
ruleNodes.add(ruleNode2);
|
||||
ruleNodes.add(ruleNode3);
|
||||
ruleChainMetaData.setFirstNodeIndex(0);
|
||||
ruleChainMetaData.setNodes(ruleNodes);
|
||||
|
||||
ruleChainMetaData.addConnectionInfo(0,1,"success");
|
||||
ruleChainMetaData.addConnectionInfo(0,2,"fail");
|
||||
ruleChainMetaData.addConnectionInfo(1,2,"success");
|
||||
ruleChainMetaData.addConnectionInfo(2,0,"success");
|
||||
|
||||
return ruleChainMetaData;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user