neography 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,34 +7,43 @@ module Neography
7
7
 
8
8
  def add_to_index(index, key, value)
9
9
  if self.is_a? Neography::Node
10
- neo_server.add_node_to_index(index, key, value, self.neo_id)
10
+ self.neo_server.add_node_to_index(index, key, value, self.neo_id)
11
11
  else
12
- neo_server.add_relationship_to_index(index, key, value, self.neo_id)
12
+ self.neo_server.add_relationship_to_index(index, key, value, self.neo_id)
13
13
  end
14
14
  end
15
15
 
16
16
  def remove_from_index(*args)
17
17
  if self.is_a? Neography::Node
18
- neo_server.remove_node_from_index(*args)
18
+ self.neo_server.remove_node_from_index(*args)
19
19
  else
20
- neo_server.remove_relationship_from_index(*args)
20
+ self.neo_server.remove_relationship_from_index(*args)
21
21
  end
22
22
  end
23
23
 
24
24
  module ClassMethods
25
25
  def find(*args)
26
- if name == "Neography::Node"
27
- if args.size > 1
28
- neo_server.find_node_index(*args)
29
- else
30
- neo_server.get_node_index(*args)
26
+ db = args[3] ? args.pop : Neography::Rest.new
27
+
28
+ if self.inspect == "Neography::Node"
29
+ nodes = []
30
+ results = db.find_node_index(*args)
31
+ return nil unless results
32
+ results.each do |r|
33
+ node = self.new(r)
34
+ node.neo_server = db
35
+ nodes << node
31
36
  end
37
+ nodes.size > 1 ? nodes : nodes.first
32
38
  else
33
- if args.size > 1
34
- neo_server.find_relationship_index(*args)
35
- else
36
- neo_server.get_relationship_index(*args)
39
+ rels = []
40
+ results = db.find_relationship_index(*args)
41
+ return nil unless results
42
+ results.each do |r|
43
+ rel = self.new(r, db)
44
+ rels << rel
37
45
  end
46
+ rels.size > 1 ? rels : rels.first
38
47
  end
39
48
  end
40
49
  end
@@ -29,6 +29,11 @@ module Neography
29
29
  end
30
30
 
31
31
  #alias_method :new, :create
32
+ end
33
+
34
+ def find(*args)
35
+ node = self.new
36
+ node.find(args)
32
37
  end
33
38
 
34
39
  def del
@@ -121,7 +121,7 @@ module Neography
121
121
  options["depth"] = @depth unless @depth.nil?
122
122
 
123
123
  if @relationships[0]["type"].empty?
124
- rels = @from.neo_server.get_node_relationships(@from, @relationships[0]["direction"])
124
+ rels = @from.neo_server.get_node_relationships(@from, @relationships[0]["direction"]) || []
125
125
  case @relationships[0]["direction"]
126
126
  when "in"
127
127
  rels.collect { |r| @from.neo_server.get_node(r["start"]) } #.uniq
@@ -1,3 +1,3 @@
1
1
  module Neography
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -18,4 +18,38 @@ describe Neography::Index do
18
18
  r.add_to_index("relationship_test_index", key, value)
19
19
  end
20
20
 
21
+ it "can find a node in an index" do
22
+ value = generate_text
23
+ new_node = Neography::Node.create("name" => value)
24
+ new_node.add_to_index("node_test_index", "name", value)
25
+ existing_node = Neography::Node.find("node_test_index", "name", value)
26
+ existing_node.name.should == value
27
+ end
28
+
29
+ it "can find a relationship in an index" do
30
+ value = generate_text
31
+ node1 = Neography::Node.create
32
+ node2 = Neography::Node.create
33
+ r = Neography::Relationship.create(:friends, node1, node2, {"name" => value})
34
+ r.add_to_index("relationship_test_index", "name", value)
35
+ existing_r = Neography::Relationship.find("relationship_test_index", "name", value)
36
+ existing_r.name.should == value
37
+ end
38
+
39
+ it "can find multiple nodes in an index" do
40
+ value1 = generate_text
41
+ value2 = generate_text
42
+ value3 = generate_text
43
+ node1 = Neography::Node.create("first_name" => value1, "last_name" => value2)
44
+ node1.add_to_index("node_test_index", "first_name", value1)
45
+ node2 = Neography::Node.create("first_name" => value1, "last_name" => value3)
46
+ node2.add_to_index("node_test_index", "first_name", value1)
47
+
48
+ existing_nodes = Neography::Node.find("node_test_index", "first_name", value1)
49
+ existing_nodes.size.should == 2
50
+ existing_nodes.first.last_name.should == value2
51
+ existing_nodes.last.last_name.should == value3
52
+ end
53
+
54
+
21
55
  end
@@ -157,6 +157,11 @@ describe Neography::NodeRelationship do
157
157
  b.outgoing.should include(c)
158
158
  end
159
159
 
160
+ it "#both returns an empty array for unconnected nodes" do
161
+ a = Neography::Node.create
162
+ a.both.size.should == 0
163
+ end
164
+
160
165
  it "#both(type) should return both incoming and outgoing nodes of the given type of depth one" do
161
166
  a,b,c,d,e,f = create_nodes
162
167
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neography
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000 Z
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec