def testInstanceLinkSourceFieldMustExist(self): src_ok = entity_instance.EntityInstance( _UPDATE, 'AHU-1', links=[link.Link('CTRL-1', {'run_status': 'run_status'})], etag='123') bad_src_field = entity_instance.EntityInstance( _UPDATE, 'AHU-1', links=[link.Link('CTRL-1', {'nonexistent_status': 'run_status'})], etag='123') self.assertFalse(self.update_validator.Validate(bad_src_field)) self.assertTrue(self.update_validator.Validate(src_ok))
def testGraphOrphanLinkOkOnUpdate(self, mock_universe): target = entity_instance.EntityInstance( _UPDATE, 'AHU-1', links=[link.Link('CTRL-1', {'run_status_1': 'run_status'})], etag='123') validator = entity_instance.GraphValidator(mock_universe, _UPDATE_CFG, {'CTRL-1': target}) self.assertTrue(validator.Validate(target))
def testInstanceLinkSourceFieldValidation(self, mock_fn): field_u = field_lib.FieldUniverse([]) config_u = presubmit_validate_types_lib.ConfigUniverse( None, field_u, None, None, None, None) mock_fn.side_effect = lambda f, ns: f == 'run_status' validator = entity_instance.InstanceValidator(config_u, _UPDATE_CFG) src_ok = entity_instance.EntityInstance( _UPDATE, 'AHU-1', links=[link.Link('CTRL-1', {'run_status': 'run_status'})], etag='123') bad_src_field = entity_instance.EntityInstance( _UPDATE, 'AHU-1', links=[link.Link('CTRL-1', {'nonexistent_status': 'run_status'})], etag='123') self.assertFalse(validator.Validate(bad_src_field)) self.assertTrue(validator.Validate(src_ok))
def testGraphOrphanLinkOkOnUpdate(self): target = entity_instance.EntityInstance( _UPDATE, entity_id='CDM/123456', guid='AHU-1-guid', code='AHU-1', links=[link.Link('CTRL-1-guid', {'run_status_1': 'run_status'})], etag='123') validator = entity_instance.GraphValidator(self.config_universe, _UPDATE_CFG, {'CTRL-1-guid': target}) self.assertTrue(validator.Validate(target))
def _ParseLinks(self, links_body): """Parses YAML defining the links between the fields of this entity and other source entities. Args: links_body: YAML body for the entity links Returns: A set of Link instances """ links = set() for source_entity, field_map in links_body.items(): links.add(link.Link(source_entity, field_map)) return links
def _ParseLinks(links_body: syaml.YAML) -> Set[link.Link]: """Parses YAML defining links between the fields of one entity and another. Links are always defined on the target entity. Args: links_body: YAML body for the entity links Returns: A set of Link instances """ links = set() for source_entity, field_map in links_body.items(): links.add(link.Link(source_entity, field_map)) return links
def _ParseLinks(links_body: List[Tuple[str, Any]]) -> Set[link.Link]: """Parses YAML defining links between the fields of one entity and another. Entities are identified by GUID. Links are always defined on the target entity. Args: links_body: list of tuples with the source entity GUID and field map. Returns: A set of Link instances """ links = set() for source_entity_guid, field_map in links_body: links.add(link.Link(source_entity_guid, field_map)) return links