test/graph_queries_test.rb in redgraph-0.1.1 vs test/graph_queries_test.rb in redgraph-0.1.2
- old
+ new
@@ -60,10 +60,21 @@
assert_equal(2, dramas.size)
assert_includes(dramas, scarface)
assert_includes(dramas, casino)
end
+ def test_count_nodes
+ quick_add_node(label: 'film', properties: {name: "Scarface", genre: "drama"})
+ quick_add_node(label: 'film', properties: {name: "Casino", genre: "drama"})
+ quick_add_node(label: 'film', properties: {name: "Mamma Mia", genre: "musical"})
+
+
+ assert_equal(5, @graph.count_nodes)
+ assert_equal(3, @graph.count_nodes(label: 'film'))
+ assert_equal(2, @graph.count_nodes(properties: {genre: "drama"}))
+ end
+
def test_limit_nodes
10.times do |i|
quick_add_node(label: 'token', properties: {number: i})
end
@@ -80,11 +91,75 @@
items = @graph.nodes(label: 'token', limit: 3, skip: 3)
assert_equal(3, items.size)
assert_equal([3,4,5], items.map{|item| item.properties["number"]})
end
+ def test_find_edge
+ quick_add_edge(type: 'FRIEND_OF', src: @al, dest: @john, properties: {since: 1980})
+ edge = @graph.edges.first
+
+ assert_equal('FRIEND_OF', edge.type)
+ assert_equal(1980, edge.properties["since"])
+ assert_equal(@al, edge.src)
+ assert_equal(@john, edge.dest)
+
+ end
+
+ def test_find_all_edges
+ marlon = quick_add_node(label: 'actor', properties: {name: "Marlon Brando"})
+ film = quick_add_node(label: 'film', properties: {name: "The Godfather"})
+ quick_add_edge(type: 'ACTOR_IN', src: marlon, dest: film, properties: {role: 'Don Vito'})
+ quick_add_edge(type: 'ACTOR_IN', src: @al, dest: film, properties: {role: 'Michael'})
+
+ edges = @graph.edges
+ assert_equal(2, edges.size)
+ end
+
+ def test_filter_edges
+ marlon = quick_add_node(label: 'actor', properties: {name: "Marlon Brando"})
+ film = quick_add_node(label: 'film', properties: {name: "The Godfather"})
+ other_film = quick_add_node(label: 'film', properties: {name: "Carlito's Way"})
+ e_donvito = quick_add_edge(type: 'ACTOR_IN', src: marlon, dest: film, properties: {role: 'Don Vito'})
+ e_michael = quick_add_edge(type: 'ACTOR_IN', src: @al, dest: film, properties: {role: 'Michael'})
+ e_carlito = quick_add_edge(type: 'ACTOR_IN', src: @al, dest: other_film, properties: {role: 'Carlito'})
+ quick_add_edge(type: 'FRIEND_OF', src: @al, dest: marlon, properties: {since: 1980})
+
+ edges = @graph.edges(type: "FRIEND_OF")
+ assert_equal(1, edges.size)
+
+ edges = @graph.edges(type: "ACTOR_IN")
+ assert_equal(3, edges.size)
+
+ edges = @graph.edges(type: "ACTOR_IN", limit: 2)
+ assert_equal(2, edges.size)
+
+ edges = @graph.edges(type: "ACTOR_IN", skip: 2, limit: 10)
+ assert_equal(1, edges.size)
+
+ edges = @graph.edges(properties: {role: "Carlito"})
+ assert_equal([e_carlito], edges)
+
+ edges = @graph.edges(src: marlon)
+ assert_equal([e_donvito], edges)
+
+ edges = @graph.edges(type: 'ACTOR_IN', dest: film)
+ assert_equal(2, edges.size)
+ assert_includes(edges, e_donvito)
+ assert_includes(edges, e_michael)
+
+ edges = @graph.edges(src: @al, dest: marlon)
+ assert_equal(1, edges.size)
+ edge = edges[0]
+ assert_equal('FRIEND_OF', edge.type)
+ assert_equal(1980, edge.properties["since"])
+ end
+
private
def quick_add_node(label:, properties:)
@graph.add_node(Redgraph::Node.new(label: label, properties: properties))
+ end
+
+ def quick_add_edge(type:, src:, dest:, properties:)
+ @graph.add_edge(Redgraph::Edge.new(type: type, src: src, dest: dest, properties: properties))
end
end