test/graph_queries_test.rb in redgraph-0.1.0 vs test/graph_queries_test.rb in redgraph-0.1.1

- old
+ new

@@ -3,56 +3,88 @@ require "test_helper" class GraphQueriesTest < Minitest::Test def setup @graph = Redgraph::Graph.new("movies", url: $REDIS_URL) - @actor = Redgraph::Node.new(label: 'actor', properties: {name: "Al Pacino"}) - @graph.add_node(@actor) - @other_actor = Redgraph::Node.new(label: 'actor', properties: {name: "John Travolta"}) - refute_nil(@actor.id) + @al = quick_add_node(label: 'actor', properties: {name: "Al Pacino"}) + @john = quick_add_node(label: 'actor', properties: {name: "John Travolta"}) end def teardown @graph.delete end def test_find_node_by_id - node = @graph.find_node_by_id(@actor.id) + node = @graph.find_node_by_id(@al.id) refute_nil(node) assert_equal("actor", node.label) assert_equal("Al Pacino", node.properties["name"]) - assert_equal(@actor.id, node.id) + assert_equal(@al.id, node.id) end - def test_get_all_nodes - @graph.add_node(@other_actor) + def test_find_node_by_wrong_id + node = @graph.find_node_by_id("-1") + assert_nil(node) + end + + def test_find_all_nodes actors = @graph.nodes assert_equal(2, actors.size) - assert_includes(actors, @actor) - assert_includes(actors, @other_actor) + assert_includes(actors, @al) + assert_includes(actors, @john) end - def test_get_all_nodes_by_label - @graph.add_node(@other_actor) - film = Redgraph::Node.new(label: 'film', properties: {name: "Scarface"}) - @graph.add_node(film) + def test_find_all_nodes_by_label + film = quick_add_node(label: 'film', properties: {name: "Scarface"}) actors = @graph.nodes(label: 'actor') assert_equal(2, actors.size) - assert_includes(actors, @actor) - assert_includes(actors, @other_actor) + assert_includes(actors, @al) + assert_includes(actors, @john) films = @graph.nodes(label: 'film') assert_equal(1, films.size) assert_includes(films, film) end - def test_find_node_by_wrong_id - node = @graph.find_node_by_id("-1") + def test_find_all_nodes_by_property + scarface = quick_add_node(label: 'film', properties: {name: "Scarface", genre: "drama"}) + casino = quick_add_node(label: 'film', properties: {name: "Casino", genre: "drama"}) + mamma_mia = quick_add_node(label: 'film', properties: {name: "Mamma Mia", genre: "musical"}) - assert_nil(node) + dramas = @graph.nodes(properties: {genre: "drama"}) + + assert_equal(2, dramas.size) + assert_includes(dramas, scarface) + assert_includes(dramas, casino) + end + + def test_limit_nodes + 10.times do |i| + quick_add_node(label: 'token', properties: {number: i}) + end + + items = @graph.nodes(label: 'token', limit: 5) + assert_equal(5, items.size) + assert_equal([0,1,2,3,4], items.map{|item| item.properties["number"]}) + end + + def test_skip_nodes + 10.times do |i| + quick_add_node(label: 'token', properties: {number: i}) + end + + 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 + + private + + def quick_add_node(label:, properties:) + @graph.add_node(Redgraph::Node.new(label: label, properties: properties)) end end