Пример #1
0
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
Пример #3
0
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, {})
Пример #4
0
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"})