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