def test_get_rule(self): r = rule.get_rule(names.ACCESS) self.assertEquals(r.name, rule.RULE_ACCESS) self.assertEquals(type(r.attributes), type(dict())) self.assertEquals(type(r.children), type(list())) self.assertEquals(type(r.content_rules), type(list())) self.assertEquals(type(r.content_enum), type(list()))
def test_child_insert_index(self): eml = Node(names.EML) access = Node(names.ACCESS, parent=eml) eml.add_child(access) additional_metadata = Node(names.ADDITIONALMETADATA, parent=eml) eml.add_child(additional_metadata) r = rule.get_rule(names.EML) dataset = Node(names.DATASET, parent=eml) index = r.child_insert_index(eml, dataset) eml.add_child(dataset, index=index) self.assertIsInstance(index, int)
def create_node(node_name=''): node = None node_names = rule.node_names() required = True if node_name == '': node_name = read_text_with_choices( "Which type of EML node would you like to work on?: ", required, node_names) if node_name in rule.node_mappings: node = Node(node_name) node_rule = rule.get_rule(node_name) print(f"Building a {node_name} node using rule {node_rule.name}.") edit_attributes(node, node_rule) edit_content(node, node_rule) edit_children(node, node_rule) else: print(f"Sorry, I don't know about a {node_name} node.") return node
def node(node: Node) -> None: ''' Validates a given node for rule compliance. Args: node: Node instance to be validated Returns: None Raises: MetapypeRuleError: An unknown type of node for EML 2.1.1 ''' if node.name not in rule.node_mappings: msg = 'Unknown node: {}'.format(node.name) raise MetapypeRuleError(msg) else: node_rule = rule.get_rule(node.name) node_rule.validate_rule(node)
def test_is_allowed_child(self): r = rule.get_rule(names.EML) allowed = r.is_allowed_child(names.ACCESS) self.assertTrue(allowed) allowed = r.is_allowed_child(names.INDIVIDUALNAME) self.assertFalse(allowed)
def test_str_content(self): self.permission_allow.content = 1 r = rule.get_rule(names.PERMISSION) self.assertRaises(MetapypeRuleError, r.validate_rule, self.permission_allow)
def test_non_empty_content(self): self.principal_allow.content = None r = rule.get_rule(names.PRINCIPAL) self.assertRaises(MetapypeRuleError, r.validate_rule, self.principal_allow)
def test_empty_content(self): self.access.content = 'some content' r = rule.get_rule(names.ACCESS) self.assertRaises(MetapypeRuleError, r.validate_rule, self.access)
def test_rule_validation(self): r = rule.get_rule(names.ACCESS) self.assertIsNone(r.validate_rule(self.access))