Commit 8bd617e3b583ae4db532055fef01da83f047b2d1
Committed by
Andrew Shvayka
1 parent
44a700e8
created tests for rule chain metadata validator
Showing
2 changed files
with
92 additions
and
4 deletions
@@ -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 | } |