Commit 8bd617e3b583ae4db532055fef01da83f047b2d1

Authored by YevhenBondarenko
Committed by Andrew Shvayka
1 parent 44a700e8

created tests for rule chain metadata validator

@@ -39,7 +39,6 @@ import org.thingsboard.server.common.data.rule.RuleChainMetaData; @@ -39,7 +39,6 @@ import org.thingsboard.server.common.data.rule.RuleChainMetaData;
39 import org.thingsboard.server.common.data.rule.RuleNode; 39 import org.thingsboard.server.common.data.rule.RuleNode;
40 import org.thingsboard.server.dao.entity.AbstractEntityService; 40 import org.thingsboard.server.dao.entity.AbstractEntityService;
41 import org.thingsboard.server.dao.exception.DataValidationException; 41 import org.thingsboard.server.dao.exception.DataValidationException;
42 -import org.thingsboard.server.dao.exception.IncorrectParameterException;  
43 import org.thingsboard.server.dao.service.DataValidator; 42 import org.thingsboard.server.dao.service.DataValidator;
44 import org.thingsboard.server.dao.service.PaginatedRemover; 43 import org.thingsboard.server.dao.service.PaginatedRemover;
45 import org.thingsboard.server.dao.service.Validator; 44 import org.thingsboard.server.dao.service.Validator;
@@ -52,7 +51,6 @@ import java.util.List; @@ -52,7 +51,6 @@ import java.util.List;
52 import java.util.Map; 51 import java.util.Map;
53 import java.util.Set; 52 import java.util.Set;
54 import java.util.concurrent.ExecutionException; 53 import java.util.concurrent.ExecutionException;
55 -import java.util.stream.Collectors;  
56 54
57 /** 55 /**
58 * Created by igor on 3/12/18. 56 * Created by igor on 3/12/18.
@@ -217,7 +215,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC @@ -217,7 +215,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
217 Map<Integer, Set<Integer>> connectionsMap = new HashMap<>(); 215 Map<Integer, Set<Integer>> connectionsMap = new HashMap<>();
218 for (NodeConnectionInfo nodeConnection : connectionInfos) { 216 for (NodeConnectionInfo nodeConnection : connectionInfos) {
219 if (nodeConnection.getFromIndex() == nodeConnection.getToIndex()) { 217 if (nodeConnection.getFromIndex() == nodeConnection.getToIndex()) {
220 - throw new IncorrectParameterException("Can't create the relation to yourself."); 218 + throw new DataValidationException("Can't create the relation to yourself.");
221 } 219 }
222 connectionsMap 220 connectionsMap
223 .computeIfAbsent(nodeConnection.getFromIndex(), from -> new HashSet<>()) 221 .computeIfAbsent(nodeConnection.getFromIndex(), from -> new HashSet<>())
@@ -232,7 +230,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC @@ -232,7 +230,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
232 } 230 }
233 for (Integer to : toList) { 231 for (Integer to : toList) {
234 if (from == to) { 232 if (from == to) {
235 - throw new IncorrectParameterException("Can't create circling relations in rule chain."); 233 + throw new DataValidationException("Can't create circling relations in rule chain.");
236 } 234 }
237 validateCircles(from, connectionsMap.get(to), connectionsMap); 235 validateCircles(from, connectionsMap.get(to), connectionsMap);
238 } 236 }
@@ -317,6 +317,16 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { @@ -317,6 +317,16 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
317 ruleChainService.deleteRuleChainById(tenantId, savedRuleChainMetaData.getRuleChainId()); 317 ruleChainService.deleteRuleChainById(tenantId, savedRuleChainMetaData.getRuleChainId());
318 } 318 }
319 319
  320 + @Test(expected = DataValidationException.class)
  321 + public void testUpdateRuleChainMetaDataWithCirclingRelation() throws Exception {
  322 + ruleChainService.saveRuleChainMetaData(tenantId, createRuleChainMetadataWithCirclingRelation());
  323 + }
  324 +
  325 + @Test(expected = DataValidationException.class)
  326 + public void testUpdateRuleChainMetaDataWithCirclingRelation2() throws Exception {
  327 + ruleChainService.saveRuleChainMetaData(tenantId, createRuleChainMetadataWithCirclingRelation2());
  328 + }
  329 +
320 private RuleChainMetaData createRuleChainMetadata() throws Exception { 330 private RuleChainMetaData createRuleChainMetadata() throws Exception {
321 RuleChain ruleChain = new RuleChain(); 331 RuleChain ruleChain = new RuleChain();
322 ruleChain.setName("My RuleChain"); 332 ruleChain.setName("My RuleChain");
@@ -357,5 +367,85 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { @@ -357,5 +367,85 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest {
357 return ruleChainService.saveRuleChainMetaData(tenantId, ruleChainMetaData); 367 return ruleChainService.saveRuleChainMetaData(tenantId, ruleChainMetaData);
358 } 368 }
359 369
  370 + private RuleChainMetaData createRuleChainMetadataWithCirclingRelation() throws Exception {
  371 + RuleChain ruleChain = new RuleChain();
  372 + ruleChain.setName("My RuleChain");
  373 + ruleChain.setTenantId(tenantId);
  374 + RuleChain savedRuleChain = ruleChainService.saveRuleChain(ruleChain);
  375 +
  376 + RuleChainMetaData ruleChainMetaData = new RuleChainMetaData();
  377 + ruleChainMetaData.setRuleChainId(savedRuleChain.getId());
  378 +
  379 + ObjectMapper mapper = new ObjectMapper();
  380 +
  381 + RuleNode ruleNode1 = new RuleNode();
  382 + ruleNode1.setName("name1");
  383 + ruleNode1.setType("type1");
  384 + ruleNode1.setConfiguration(mapper.readTree("\"key1\": \"val1\""));
  385 +
  386 + RuleNode ruleNode2 = new RuleNode();
  387 + ruleNode2.setName("name2");
  388 + ruleNode2.setType("type2");
  389 + ruleNode2.setConfiguration(mapper.readTree("\"key2\": \"val2\""));
  390 +
  391 + RuleNode ruleNode3 = new RuleNode();
  392 + ruleNode3.setName("name3");
  393 + ruleNode3.setType("type3");
  394 + ruleNode3.setConfiguration(mapper.readTree("\"key3\": \"val3\""));
  395 +
  396 + List<RuleNode> ruleNodes = new ArrayList<>();
  397 + ruleNodes.add(ruleNode1);
  398 + ruleNodes.add(ruleNode2);
  399 + ruleNodes.add(ruleNode3);
  400 + ruleChainMetaData.setFirstNodeIndex(0);
  401 + ruleChainMetaData.setNodes(ruleNodes);
  402 +
  403 + ruleChainMetaData.addConnectionInfo(0,1,"success");
  404 + ruleChainMetaData.addConnectionInfo(0,2,"fail");
  405 + ruleChainMetaData.addConnectionInfo(1,2,"success");
  406 + ruleChainMetaData.addConnectionInfo(2,2,"success");
  407 +
  408 + return ruleChainMetaData;
  409 + }
  410 +
  411 + private RuleChainMetaData createRuleChainMetadataWithCirclingRelation2() throws Exception {
  412 + RuleChain ruleChain = new RuleChain();
  413 + ruleChain.setName("My RuleChain");
  414 + ruleChain.setTenantId(tenantId);
  415 + RuleChain savedRuleChain = ruleChainService.saveRuleChain(ruleChain);
  416 +
  417 + RuleChainMetaData ruleChainMetaData = new RuleChainMetaData();
  418 + ruleChainMetaData.setRuleChainId(savedRuleChain.getId());
  419 +
  420 + ObjectMapper mapper = new ObjectMapper();
  421 +
  422 + RuleNode ruleNode1 = new RuleNode();
  423 + ruleNode1.setName("name1");
  424 + ruleNode1.setType("type1");
  425 + ruleNode1.setConfiguration(mapper.readTree("\"key1\": \"val1\""));
  426 +
  427 + RuleNode ruleNode2 = new RuleNode();
  428 + ruleNode2.setName("name2");
  429 + ruleNode2.setType("type2");
  430 + ruleNode2.setConfiguration(mapper.readTree("\"key2\": \"val2\""));
  431 +
  432 + RuleNode ruleNode3 = new RuleNode();
  433 + ruleNode3.setName("name3");
  434 + ruleNode3.setType("type3");
  435 + ruleNode3.setConfiguration(mapper.readTree("\"key3\": \"val3\""));
  436 +
  437 + List<RuleNode> ruleNodes = new ArrayList<>();
  438 + ruleNodes.add(ruleNode1);
  439 + ruleNodes.add(ruleNode2);
  440 + ruleNodes.add(ruleNode3);
  441 + ruleChainMetaData.setFirstNodeIndex(0);
  442 + ruleChainMetaData.setNodes(ruleNodes);
  443 +
  444 + ruleChainMetaData.addConnectionInfo(0,1,"success");
  445 + ruleChainMetaData.addConnectionInfo(0,2,"fail");
  446 + ruleChainMetaData.addConnectionInfo(1,2,"success");
  447 + ruleChainMetaData.addConnectionInfo(2,0,"success");
360 448
  449 + return ruleChainMetaData;
  450 + }
361 } 451 }