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 | 39 | import org.thingsboard.server.common.data.rule.RuleNode; |
40 | 40 | import org.thingsboard.server.dao.entity.AbstractEntityService; |
41 | 41 | import org.thingsboard.server.dao.exception.DataValidationException; |
42 | -import org.thingsboard.server.dao.exception.IncorrectParameterException; | |
43 | 42 | import org.thingsboard.server.dao.service.DataValidator; |
44 | 43 | import org.thingsboard.server.dao.service.PaginatedRemover; |
45 | 44 | import org.thingsboard.server.dao.service.Validator; |
... | ... | @@ -52,7 +51,6 @@ import java.util.List; |
52 | 51 | import java.util.Map; |
53 | 52 | import java.util.Set; |
54 | 53 | import java.util.concurrent.ExecutionException; |
55 | -import java.util.stream.Collectors; | |
56 | 54 | |
57 | 55 | /** |
58 | 56 | * Created by igor on 3/12/18. |
... | ... | @@ -217,7 +215,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
217 | 215 | Map<Integer, Set<Integer>> connectionsMap = new HashMap<>(); |
218 | 216 | for (NodeConnectionInfo nodeConnection : connectionInfos) { |
219 | 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 | 220 | connectionsMap |
223 | 221 | .computeIfAbsent(nodeConnection.getFromIndex(), from -> new HashSet<>()) |
... | ... | @@ -232,7 +230,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC |
232 | 230 | } |
233 | 231 | for (Integer to : toList) { |
234 | 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 | 235 | validateCircles(from, connectionsMap.get(to), connectionsMap); |
238 | 236 | } | ... | ... |
... | ... | @@ -317,6 +317,16 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { |
317 | 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 | 330 | private RuleChainMetaData createRuleChainMetadata() throws Exception { |
321 | 331 | RuleChain ruleChain = new RuleChain(); |
322 | 332 | ruleChain.setName("My RuleChain"); |
... | ... | @@ -357,5 +367,85 @@ public abstract class BaseRuleChainServiceTest extends AbstractServiceTest { |
357 | 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 | } | ... | ... |