def test_schema_index(graph, make_unique_id): node_matcher = NodeMatcher(graph) label_1 = make_unique_id() label_2 = make_unique_id() munich = Node(name="München", key="09162000") graph.create(munich) munich.clear_labels() munich.update_labels({label_1, label_2}) graph.schema.create_index(label_1, "name") graph.schema.create_index(label_1, "key") graph.schema.create_index(label_2, "name") graph.schema.create_index(label_2, "key") found_borough_via_name = node_matcher.match(label_1, name="München") found_borough_via_key = node_matcher.match(label_1, key="09162000") found_county_via_name = node_matcher.match(label_2, name="München") found_county_via_key = node_matcher.match(label_2, key="09162000") assert list(found_borough_via_name) == list(found_borough_via_key) assert list(found_county_via_name) == list(found_county_via_key) assert list(found_borough_via_name) == list(found_county_via_name) keys = graph.schema.get_indexes(label_1) assert (u"name", ) in keys assert (u"key", ) in keys graph.schema.drop_index(label_1, "name") graph.schema.drop_index(label_1, "key") graph.schema.drop_index(label_2, "name") graph.schema.drop_index(label_2, "key") with raises(Neo4jError) as e: graph.schema.drop_index(label_2, "key") assert e.value.code == "Neo.DatabaseError.Schema.IndexDropFailed" graph.delete(munich)
def _adjust_label_name(self, node: Node) -> str: label_name = list(node.labels)[0] node.clear_labels() if callable(self.config_func_label_name_generator_func): custom_name = self.config_func_label_name_generator_func( label_name) if custom_name is not None: return custom_name label_name_adjusted = label_name if label_name in self.config_dict_json_attr_to_reltype_instead_of_label: label_name_adjusted = self.config_dict_json_attr_to_reltype_instead_of_label[ label_name] if label_name in self.config_dict_label_override: label_name_override_config = self.config_dict_label_override[ label_name] if isinstance(label_name_override_config, str): label_name_adjusted = label_name_override_config elif isinstance(label_name_override_config, dict): label_name_adjusted = list( label_name_override_config.keys())[0] # add extra props as configured by caller extra_props = list(label_name_override_config.values())[0] for extra_prop, extra_val in extra_props.items(): node[extra_prop] = extra_val label_name_adjusted = (label_name_adjusted.capitalize() if self.config_bool_capitalize_labels else label_name_adjusted) node.add_label(label_name_adjusted) node.__primarylabel__ = label_name_adjusted return node
def test_should_push_no_labels_onto_one_label(graph): node = Node("A") graph.create(node) node_id = node.identity assert_has_labels(graph, node_id, {"A"}) node.clear_labels() graph.push(node) assert_has_labels(graph, node_id, {})
def test_should_push_one_label_onto_different_label(graph): node = Node("A") graph.create(node) node_id = node.identity assert_has_labels(graph, node_id, {"A"}) node.clear_labels() node.add_label("B") graph.push(node) assert_has_labels(graph, node_id, {"B"})