Graph API Tests¶
There are 18 tests covering Pythonic wrappers (Document, Vertex, Edge classes) and their methods.
Overview¶
Tests validate:
- Vertex/Document/Edge wrapper creation via
db.new_vertex(),db.new_document(), andvertex.new_edge() - Fluent interface (chaining
.set()calls) - Property access via
.get()and.set() - Edge creation between vertices with kwargs
- Query result conversion to wrappers (
.get_vertex(),.get_edge(),.get_element()) - Edge direction helpers:
.get_out_edges(),.get_in_edges(),.get_both_edges()with optional label filters - Wrapper methods:
.save(),.modify(),.delete(),.to_dict(),.has_property(),.get_property_names(),.get_identity(),.get_type_name() - Lookups via
db.lookup_by_key()anddb.lookup_by_rid(), plusDocument.wrap() - Immutable vs mutable behavior (query results vs direct creation)
- Delete semantics: vertex delete cascades to edges; edge delete leaves vertices intact
Test Cases¶
Wrapper Creation¶
- vertex_wrapper_creation: Creates vertex via
db.new_vertex(), chains.set(), verifies properties and isinstance Vertex - document_wrapper_creation: Creates document via
db.new_document(), chains.set(), verifies properties and isinstance Document - new_edge_pythonic_method: Creates edge via vertex method
.new_edge(type, target, **kwargs), verifies Edge instance and properties
Query Result Conversion¶
- get_vertex_from_query_results: Queries vertex, calls
.get_vertex()for wrapper, tests.modify()for mutation, verifies update - get_edge_from_query_results: Queries edge, calls
.get_edge()for wrapper, verifies Edge instance and properties - get_element_generic_wrapper: Tests
.get_element()returns appropriate wrapper type (Vertex for a vertex, Document for a document) - document_wrap_static_method: Uses
Document.wrap()on a raw Java element and verifies it auto-detects Vertex vs Document
Edges & Traversal¶
- edge_direction_helpers: Uses
.get_out_edges(),.get_in_edges(),.get_both_edges()with label filters and validates connected endpoints via.get_in()/.get_out()
Lookups & Introspection¶
- lookup_by_key_returns_wrapper: Uses
db.lookup_by_key()to find a vertex by indexed key; returns a Vertex wrapper, and returnsNonefor a missing key - wrapper_identity_methods: Tests
.get_identity()and.get_type_name()on a Vertex wrapper - wrapper_property_methods: Tests
.has_property(),.get_property_names(), and.to_dict()on a Document wrapper
Mutation¶
- wrapper_modify_method: Uses
.modify()to obtain a mutable copy of a query result, updates it, and verifies the change persists - no_bidirectional_parameter: Confirms
new_edge()works without abidirectionalparameter and that the parameter is absent from its signature
Deletion¶
- wrapper_delete_method: Creates a node then deletes it via SQL
DELETE, verifying it is gone - vertex_delete_cascade: Deletes a vertex via
.delete()(afterlookup_by_rid) and verifies its edge cascade-deletes - edge_delete_leaves_vertices: Deletes an edge via
.delete()and verifies both endpoint vertices remain - document_delete_sql: Deletes a document using SQL
DELETEand verifies removal - delete_via_wrapper_on_fresh_lookup: Verifies
.delete()works on an object returned fromdb.lookup_by_rid()
Pattern¶
# Create and chain
vertex = db.new_vertex("Person")
vertex.set("name", "Alice").set("age", 30).save()
# Query and convert
results = db.query("sql", "SELECT FROM Person")
person = list(results)[0].get_vertex()
# Edge direction helpers
out_edges = person.get_out_edges("Knows")
targets = {e.get_in().get("name") for e in out_edges}
# Modify
mutable = person.modify()
mutable.set("age", 31).save()
# Delete (looked up by RID)
node = db.lookup_by_rid(rid)
node.delete()
Key Methods¶
- Creation:
db.new_vertex(type),db.new_document(type),vertex.new_edge(type, target, **kwargs) - Query conversion:
.get_vertex(),.get_edge(),.get_element(),Document.wrap() - Lookups:
db.lookup_by_key(type, keys, values),db.lookup_by_rid(rid) - Property access:
.get(key),.set(key, value),.has_property(key),.get_property_names() - Persistence:
.save(),.delete(),.modify() - Edge helpers:
.get_out_edges(),.get_in_edges(),.get_both_edges(),.get_in(),.get_out() - Introspection:
.get_identity(),.get_type_name(),.to_dict()