keymaker 0.0.9 → 0.1.0

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.
Files changed (54) hide show
  1. data/Rakefile +1 -1
  2. data/keymaker.gemspec +5 -37
  3. data/lib/keymaker.rb +8 -5
  4. data/lib/keymaker/node.rb +69 -45
  5. data/lib/keymaker/parsers/cypher_response_parser.rb +25 -0
  6. data/lib/keymaker/serialization.rb +2 -1
  7. data/lib/keymaker/service.rb +4 -17
  8. data/spec/keymaker/node_spec.rb +92 -0
  9. data/spec/keymaker/requests/add_node_to_index_request_spec.rb +13 -13
  10. data/spec/keymaker/requests/batch_request_spec.rb +3 -56
  11. data/spec/keymaker/requests/create_node_request_spec.rb +15 -9
  12. data/spec/keymaker/requests/create_relationship_request_spec.rb +19 -11
  13. data/spec/keymaker/requests/execute_cypher_request_spec.rb +1 -1
  14. data/spec/keymaker/requests/get_relationship_types_request_spec.rb +3 -4
  15. data/spec/keymaker/requests/update_node_properties_request_spec.rb +1 -1
  16. data/spec/keymaker_spec.rb +38 -8
  17. data/spec/support/active_model_lint.rb +17 -0
  18. data/spec/support/keymaker.rb +1 -1
  19. metadata +8 -73
  20. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_a_201_status_code.yml +0 -203
  21. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_application/json.yml +0 -203
  22. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_the_Neo4j_REST_API_starting_point_response_request.yml +0 -203
  23. data/spec/cassettes/Keymaker_BatchRequest/when_a_resource_is_not_found/raises_BatchRequestError.yml +0 -120
  24. data/spec/cassettes/Keymaker_BatchRequest/when_to_and_method_are_not_set/raises_BatchRequestError.yml +0 -106
  25. data/spec/cassettes/Keymaker_BatchRequest/with_valid_options/returns_a_200_status_code.yml +0 -129
  26. data/spec/cassettes/Keymaker_BatchRequest/with_valid_options/runs_the_commands_and_returns_their_respective_results.yml +0 -129
  27. data/spec/cassettes/Keymaker_CreateNodeRequest/returns_a_201_status_code.yml +0 -112
  28. data/spec/cassettes/Keymaker_CreateNodeRequest/returns_application/json.yml +0 -112
  29. data/spec/cassettes/Keymaker_CreateNodeRequest/with_properties/creates_a_node_with_the_given_properties.yml +0 -112
  30. data/spec/cassettes/Keymaker_CreateNodeRequest/without_properties/creates_an_empty_node.yml +0 -112
  31. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_invalid_options/raises_ClientError.yml +0 -201
  32. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/creates_a_node_with_the_given_properties.yml +0 -233
  33. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_a_201_status_code.yml +0 -196
  34. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_application/json.yml +0 -196
  35. data/spec/cassettes/Keymaker_CreateRelationshipRequest/without_properties/creates_an_empty_relationship_of_type_birthed_.yml +0 -195
  36. data/spec/cassettes/Keymaker_DeleteRelationshipRequest/with_a_non-existent_relationship/raises_ResourceNotFound.yml +0 -191
  37. data/spec/cassettes/Keymaker_DeleteRelationshipRequest/with_an_existing_relationship/deletes_the_relationship.yml +0 -219
  38. data/spec/cassettes/Keymaker_ExecuteCypherRequest/with_a_valid_Cypher_Query/returns_a_200_status_code.yml +0 -111
  39. data/spec/cassettes/Keymaker_ExecuteCypherRequest/with_an_invalid_Cypher_Query/raises_ClientError.yml +0 -108
  40. data/spec/cassettes/Keymaker_ExecuteGremlinRequest/with_a_valid_Gremlin_Script/returns_a_200_status_code.yml +0 -98
  41. data/spec/cassettes/Keymaker_ExecuteGremlinRequest/with_an_invalid_Gremlin_Script/raises_ClientError.yml +0 -107
  42. data/spec/cassettes/Keymaker_GetNodeRequest/with_a_non-existent_node_id/raises_ResourceNotFound.yml +0 -101
  43. data/spec/cassettes/Keymaker_GetNodeRequest/with_an_empty_node_id/raises_ClientError.yml +0 -111
  44. data/spec/cassettes/Keymaker_GetRelationshipTypesRequest/with_existing_relationships/returns_a_unique_array_of_relationship_types.yml +0 -220
  45. data/spec/cassettes/Keymaker_ServiceRootRequest/returns_a_200_status_code.yml +0 -105
  46. data/spec/cassettes/Keymaker_ServiceRootRequest/returns_application/json.yml +0 -105
  47. data/spec/cassettes/Keymaker_ServiceRootRequest/returns_the_Neo4j_REST_API_starting_point_response_request.yml +0 -105
  48. data/spec/cassettes/Keymaker_TraversePathRequest/_traverse_path_properties/with_options/builds_the_query_properties_with_defaults.yml +0 -157
  49. data/spec/cassettes/Keymaker_TraversePathRequest/with_invalid_options/raise_a_ClientError.yml +0 -193
  50. data/spec/cassettes/Keymaker_TraversePathRequest/with_valid_options/returns_status_code_200.yml +0 -269
  51. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/_node_properties/excludes_the_node_id.yml +0 -157
  52. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_invalid_options/raises_a_ClientError.yml +0 -193
  53. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/returns_a_status_of_204.yml +0 -182
  54. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/updates_the_properties.yml +0 -214
@@ -12,21 +12,21 @@ describe Keymaker::AddNodeToIndexRequest, vcr: true do
12
12
  it "returns the Neo4j REST API starting point response request" do
13
13
  add_node_to_index_request.body.should include(
14
14
  {
15
- "indexed" => "#{neo4j_host}/db/data/index/node/users/email/john%40resistance.net/189",
16
- "outgoing_relationships" => "#{neo4j_host}/db/data/node/189/relationships/out",
15
+ "indexed" => "#{neo4j_host}/db/data/index/node/users/email/john%40resistance.net/#{john_node_id}",
16
+ "outgoing_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/out",
17
17
  "data" => {"email" => "john@resistance.net"},
18
- "traverse" => "#{neo4j_host}/db/data/node/189/traverse/{returnType}",
19
- "all_typed_relationships" => "#{neo4j_host}/db/data/node/189/relationships/all/{-list|&|types}",
20
- "property" => "#{neo4j_host}/db/data/node/189/properties/{key}",
21
- "self" => "#{neo4j_host}/db/data/node/189",
22
- "properties" => "#{neo4j_host}/db/data/node/189/properties",
23
- "outgoing_typed_relationships" => "#{neo4j_host}/db/data/node/189/relationships/out/{-list|&|types}",
24
- "incoming_relationships" => "#{neo4j_host}/db/data/node/189/relationships/in",
18
+ "traverse" => "#{neo4j_host}/db/data/node/#{john_node_id}/traverse/{returnType}",
19
+ "all_typed_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/all/{-list|&|types}",
20
+ "property" => "#{neo4j_host}/db/data/node/#{john_node_id}/properties/{key}",
21
+ "self" => "#{neo4j_host}/db/data/node/#{john_node_id}",
22
+ "properties" => "#{neo4j_host}/db/data/node/#{john_node_id}/properties",
23
+ "outgoing_typed_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/out/{-list|&|types}",
24
+ "incoming_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/in",
25
25
  "extensions" => {},
26
- "create_relationship" => "#{neo4j_host}/db/data/node/189/relationships",
27
- "paged_traverse" => "#{neo4j_host}/db/data/node/189/paged/traverse/{returnType}{?pageSize,leaseTime}",
28
- "all_relationships" => "#{neo4j_host}/db/data/node/189/relationships/all",
29
- "incoming_typed_relationships" => "#{neo4j_host}/db/data/node/189/relationships/in/{-list|&|types}"
26
+ "create_relationship" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships",
27
+ "paged_traverse" => "#{neo4j_host}/db/data/node/#{john_node_id}/paged/traverse/{returnType}{?pageSize,leaseTime}",
28
+ "all_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/all",
29
+ "incoming_typed_relationships" => "#{neo4j_host}/db/data/node/#{john_node_id}/relationships/in/{-list|&|types}"
30
30
  }
31
31
  )
32
32
  end
@@ -25,7 +25,7 @@ describe Keymaker::BatchRequest, :vcr => true do
25
25
 
26
26
  context "with valid options" do
27
27
  let(:options) do
28
- [ {
28
+ [{
29
29
  method: "POST",
30
30
  to: "/node",
31
31
  id: 0,
@@ -42,7 +42,7 @@ describe Keymaker::BatchRequest, :vcr => true do
42
42
  }, {
43
43
  method: "POST",
44
44
  to: "{0}/relationships",
45
- id: 3,
45
+ id: 2,
46
46
  body: {
47
47
  to: "{1}",
48
48
  data: {
@@ -50,60 +50,7 @@ describe Keymaker::BatchRequest, :vcr => true do
50
50
  },
51
51
  type: "knows"
52
52
  }
53
- } ]
54
- end
55
-
56
- let(:results) do
57
- [ {"id"=>0,
58
- "location"=>"#{neo4j_host}/db/data/node/26",
59
- "body"=>{"outgoing_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/out",
60
- "data"=>{"name"=>"John Connor"},
61
- "traverse"=>"#{neo4j_host}/db/data/node/26/traverse/{returnType}",
62
- "all_typed_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/all/{-list|&|types}",
63
- "property"=>"#{neo4j_host}/db/data/node/26/properties/{key}",
64
- "self"=>"#{neo4j_host}/db/data/node/26",
65
- "properties"=>"#{neo4j_host}/db/data/node/26/properties",
66
- "outgoing_typed_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/out/{-list|&|types}",
67
- "incoming_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/in",
68
- "extensions"=>{},
69
- "create_relationship"=>"#{neo4j_host}/db/data/node/26/relationships",
70
- "paged_traverse"=>"#{neo4j_host}/db/data/node/26/paged/traverse/{returnType}{?pageSize,leaseTime}",
71
- "all_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/all",
72
- "incoming_typed_relationships"=>"#{neo4j_host}/db/data/node/26/relationships/in/{-list|&|types}"},
73
- "from"=>"/node"},
74
- {"id"=>1,
75
- "location"=>"#{neo4j_host}/db/data/node/27",
76
- "body"=>{"outgoing_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/out",
77
- "data"=>{"name"=>"Sarah Connor"},
78
- "traverse"=>"#{neo4j_host}/db/data/node/27/traverse/{returnType}",
79
- "all_typed_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/all/{-list|&|types}",
80
- "property"=>"#{neo4j_host}/db/data/node/27/properties/{key}",
81
- "self"=>"#{neo4j_host}/db/data/node/27",
82
- "properties"=>"#{neo4j_host}/db/data/node/27/properties",
83
- "outgoing_typed_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/out/{-list|&|types}",
84
- "incoming_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/in",
85
- "extensions"=>{},
86
- "create_relationship"=>"#{neo4j_host}/db/data/node/27/relationships",
87
- "paged_traverse"=>"#{neo4j_host}/db/data/node/27/paged/traverse/{returnType}{?pageSize,leaseTime}",
88
- "all_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/all",
89
- "incoming_typed_relationships"=>"#{neo4j_host}/db/data/node/27/relationships/in/{-list|&|types}"},
90
- "from"=>"/node"},
91
- {"id"=>3,
92
- "location"=>"#{neo4j_host}/db/data/relationship/2",
93
- "body"=>{"start"=>"#{neo4j_host}/db/data/node/26",
94
- "data"=>{"since"=>"1985"},
95
- "self"=>"#{neo4j_host}/db/data/relationship/2",
96
- "property"=>"#{neo4j_host}/db/data/relationship/2/properties/{key}",
97
- "properties"=>"#{neo4j_host}/db/data/relationship/2/properties",
98
- "type"=>"knows",
99
- "extensions"=>{},
100
- "end"=>"#{neo4j_host}/db/data/node/27"},
101
- "from"=>"#{neo4j_host}/db/data/node/26/relationships"}
102
- ]
103
- end
104
-
105
- it "runs the commands and returns their respective results" do
106
- batch_request.body.should == results
53
+ }]
107
54
  end
108
55
 
109
56
  it "returns a 200 status code" do
@@ -3,32 +3,38 @@ require 'keymaker'
3
3
 
4
4
  describe Keymaker::CreateNodeRequest, vcr: true do
5
5
 
6
- let(:create_node_request) { Keymaker::CreateNodeRequest.new(Keymaker.service, options).submit }
6
+ let(:response) { Keymaker::CreateNodeRequest.new(Keymaker.service, options).submit }
7
7
  let(:options) {{}}
8
+ let(:node_id) { response.neo4j_id }
9
+ let(:faraday_response) { response.faraday_response }
10
+ let(:status) { response.status }
11
+ let(:body) { response.body }
8
12
 
9
13
  context "with properties" do
10
14
  let(:options) {{name: "John Connor"}}
11
15
  it "creates a node with the given properties" do
12
- create_node_request.body.should include(
13
- {"self"=>"#{neo4j_host}/db/data/node/40", "data"=>{"name"=>"John Connor"}}
14
- )
16
+ body.should include({
17
+ "self" => "#{neo4j_host}/db/data/node/#{node_id}",
18
+ "data" => {"name"=>"John Connor"}
19
+ })
15
20
  end
16
21
  end
17
22
 
18
23
  context "without properties" do
19
24
  it "creates an empty node" do
20
- create_node_request.body.should include(
21
- {"self"=>"#{neo4j_host}/db/data/node/41", "data"=>{}}
22
- )
25
+ body.should include({
26
+ "self" => "#{neo4j_host}/db/data/node/#{node_id}",
27
+ "data"=>{}
28
+ })
23
29
  end
24
30
  end
25
31
 
26
32
  it "returns a 201 status code" do
27
- create_node_request.status.should == 201
33
+ status.should == 201
28
34
  end
29
35
 
30
36
  it "returns application/json" do
31
- create_node_request.faraday_response.headers["content-type"].should include("application/json")
37
+ faraday_response.headers["content-type"].should include("application/json")
32
38
  end
33
39
 
34
40
  end
@@ -5,7 +5,11 @@ describe Keymaker::CreateRelationshipRequest, vcr: true do
5
5
 
6
6
  include_context "John and Sarah nodes"
7
7
 
8
- let(:create_relationship_request) { Keymaker::CreateRelationshipRequest.new(Keymaker.service, options).submit }
8
+ let(:response) { Keymaker::CreateRelationshipRequest.new(Keymaker.service, options).submit }
9
+ let(:node_id) { response.neo4j_id }
10
+ let(:faraday_response) { response.faraday_response }
11
+ let(:status) { response.status }
12
+ let(:body) { response.body }
9
13
 
10
14
  context "with properties" do
11
15
  let(:options) do
@@ -17,18 +21,20 @@ describe Keymaker::CreateRelationshipRequest, vcr: true do
17
21
  }
18
22
  end
19
23
 
20
- it "creates a node with the given properties" do
21
- create_relationship_request.body.should include(
22
- {"self"=>"#{neo4j_host}/db/data/relationship/18", "data"=>{"location"=>"unknown", "date"=>"1985-02-28"}, "type"=>"birthed"}
23
- )
24
+ it "creates a relationship with the given properties" do
25
+ body.should include({
26
+ "self" => "#{neo4j_host}/db/data/relationship/#{node_id}",
27
+ "data" => {"location"=>"unknown", "date"=>"1985-02-28"},
28
+ "type" => "birthed"
29
+ })
24
30
  end
25
31
 
26
32
  it "returns a 201 status code" do
27
- create_relationship_request.status.should == 201
33
+ status.should == 201
28
34
  end
29
35
 
30
36
  it "returns application/json" do
31
- create_relationship_request.faraday_response.headers["content-type"].should include("application/json")
37
+ faraday_response.headers["content-type"].should include("application/json")
32
38
  end
33
39
 
34
40
  end
@@ -42,16 +48,18 @@ describe Keymaker::CreateRelationshipRequest, vcr: true do
42
48
  }
43
49
  end
44
50
  it "creates an empty relationship of type: 'birthed'" do
45
- create_relationship_request.body.should include(
46
- {"self"=>"#{neo4j_host}/db/data/relationship/21", "data"=>{}, "type"=>"birthed"}
47
- )
51
+ body.should include({
52
+ "self" => "#{neo4j_host}/db/data/relationship/#{node_id}",
53
+ "data"=>{},
54
+ "type"=>"birthed"
55
+ })
48
56
  end
49
57
  end
50
58
 
51
59
  context "with invalid options" do
52
60
  let(:options) {{}}
53
61
  it "raises ClientError" do
54
- expect { create_relationship_request }.to raise_error(Keymaker::ClientError)
62
+ expect { response }.to raise_error(Keymaker::ClientError)
55
63
  end
56
64
  end
57
65
 
@@ -5,7 +5,7 @@ describe Keymaker::ExecuteCypherRequest, vcr: true do
5
5
  let(:execute_cypher_request) { Keymaker::ExecuteCypherRequest.new(Keymaker.service, opts).submit }
6
6
 
7
7
  context "with a valid Cypher Query" do
8
- let(:opts) { {query: "CREATE (n {name : 'John Connor'}) RETURN n;"} }
8
+ let(:opts) { {query: "START a = node(*) return a"} }
9
9
  it "returns a 200 status code" do
10
10
  execute_cypher_request.status.should == 200
11
11
  end
@@ -7,11 +7,10 @@ describe Keymaker::GetRelationshipTypesRequest, vcr: true do
7
7
 
8
8
  context "with existing relationships" do
9
9
  include_context "John and Sarah nodes"
10
- before do
11
- Keymaker.service.create_relationship(:loves, john_node_id, sarah_node_id).neo4j_id
12
- end
13
10
  it "returns a unique array of relationship types" do
14
- get_relationship_types_request.body.should == ["loves", "knows"]
11
+ Keymaker.service.create_relationship(:loves, john_node_id, sarah_node_id)
12
+ get_relationship_types_request.body.should include("loves", "knows")
15
13
  end
16
14
  end
15
+
17
16
  end
@@ -23,7 +23,7 @@ describe Keymaker::UpdateNodePropertiesRequest, vcr: true do
23
23
  let(:options) do
24
24
  {node_id: john_node_id, email: "john.connor@resistance.net"}
25
25
  end
26
- let(:john_node_query) { {query: "START n=node({node_id}) RETURN n.email;", params: {node_id: john_node_id.to_i}} }
26
+ let(:john_node_query) { {query: "START n=node({node_id}) RETURN n.email", params: {node_id: john_node_id.to_i}} }
27
27
  let(:john_node_cypher_request) { Keymaker::ExecuteCypherRequest.new(Keymaker.service, john_node_query).submit }
28
28
  let(:john_node_email) { john_node_cypher_request.body["data"][0][0] }
29
29
 
@@ -150,21 +150,34 @@ describe Keymaker do
150
150
  end
151
151
  end
152
152
 
153
- describe "#execute_query" do
153
+ describe "#execute_cypher" do
154
154
 
155
- def do_it
156
- service.execute_query("START user=node:users(email={email}) RETURN user", email: john_email)
157
- end
155
+ let(:do_it) { service.execute_cypher(cypher_string, {}) }
158
156
 
159
- context "given existing values" do
157
+ before { service.add_node_to_index(:users, :email, john_email, john_node_id) }
160
158
 
161
- before { service.add_node_to_index(:users, :email, john_email, john_node_id) }
162
- let(:query_result) { do_it["data"][0][0]["self"] }
159
+ context "setting key with AS" do
160
+ let(:cypher_string) { "START n=node(*) RETURN n.email AS email" }
163
161
 
164
162
  it "performs the cypher query and responds" do
165
- query_result.should == john_node_url
163
+ do_it.first.email.should == john_email
166
164
  end
165
+ end
167
166
 
167
+ context "not setting the key" do
168
+ let(:cypher_string) { "START n=node(*) RETURN n.email" }
169
+
170
+ it "performs the cypher query and responds" do
171
+ do_it.first.email.should == john_email
172
+ end
173
+ end
174
+
175
+ context "asks for entire object" do
176
+ let(:cypher_string) { "START n=node(*) RETURN n" }
177
+
178
+ it "performs the cypher query and responds" do
179
+ do_it.first.email.should == john_email
180
+ end
168
181
  end
169
182
 
170
183
  end
@@ -208,6 +221,23 @@ describe Keymaker do
208
221
 
209
222
  end
210
223
 
224
+ describe "#delete_relationship" do
225
+
226
+ def do_it
227
+ service.delete_relationship(relationship_id)
228
+ connection.get("/db/data/node/#{john_node_id}/relationships/all").body
229
+ end
230
+
231
+ let(:relationship_id) do
232
+ service.create_relationship(:loves, john_node_id, sarah_node_id).neo4j_id
233
+ end
234
+
235
+ it "deletes the relationship" do
236
+ do_it.should == []
237
+ end
238
+
239
+ end
240
+
211
241
  end
212
242
 
213
243
  end
@@ -0,0 +1,17 @@
1
+ shared_examples_for "ActiveModel" do
2
+ require 'test/unit/assertions'
3
+ require 'active_model/lint'
4
+ include Test::Unit::Assertions
5
+ include ActiveModel::Lint::Tests
6
+
7
+ ActiveModel::Lint::Tests.public_instance_methods.map {|m| m.to_s}.grep(/^test/).each do |method|
8
+ example method.gsub("_", " ") do
9
+ send method
10
+ end
11
+ end
12
+
13
+ def model
14
+ subject
15
+ end
16
+
17
+ end
@@ -79,7 +79,7 @@ shared_context "John and Sarah indexed nodes" do
79
79
  end
80
80
 
81
81
  def neo4j_host
82
- "http://localhost:7477"
82
+ "http://#{Keymaker.configuration.server}:#{Keymaker.configuration.port}"
83
83
  end
84
84
 
85
85
  def clear_graph
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: keymaker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-22 00:00:00.000000000 Z
13
+ date: 2012-10-14 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -209,6 +209,7 @@ files:
209
209
  - lib/keymaker/indexing.rb
210
210
  - lib/keymaker/match_method.rb
211
211
  - lib/keymaker/node.rb
212
+ - lib/keymaker/parsers/cypher_response_parser.rb
212
213
  - lib/keymaker/rails_tasks.rb
213
214
  - lib/keymaker/railtie.rb
214
215
  - lib/keymaker/request.rb
@@ -230,42 +231,8 @@ files:
230
231
  - lib/keymaker/response.rb
231
232
  - lib/keymaker/serialization.rb
232
233
  - lib/keymaker/service.rb
233
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_a_201_status_code.yml
234
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_application/json.yml
235
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_the_Neo4j_REST_API_starting_point_response_request.yml
236
- - spec/cassettes/Keymaker_BatchRequest/when_a_resource_is_not_found/raises_BatchRequestError.yml
237
- - spec/cassettes/Keymaker_BatchRequest/when_to_and_method_are_not_set/raises_BatchRequestError.yml
238
- - spec/cassettes/Keymaker_BatchRequest/with_valid_options/returns_a_200_status_code.yml
239
- - spec/cassettes/Keymaker_BatchRequest/with_valid_options/runs_the_commands_and_returns_their_respective_results.yml
240
- - spec/cassettes/Keymaker_CreateNodeRequest/returns_a_201_status_code.yml
241
- - spec/cassettes/Keymaker_CreateNodeRequest/returns_application/json.yml
242
- - spec/cassettes/Keymaker_CreateNodeRequest/with_properties/creates_a_node_with_the_given_properties.yml
243
- - spec/cassettes/Keymaker_CreateNodeRequest/without_properties/creates_an_empty_node.yml
244
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_invalid_options/raises_ClientError.yml
245
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/creates_a_node_with_the_given_properties.yml
246
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_a_201_status_code.yml
247
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_application/json.yml
248
- - spec/cassettes/Keymaker_CreateRelationshipRequest/without_properties/creates_an_empty_relationship_of_type_birthed_.yml
249
- - spec/cassettes/Keymaker_DeleteRelationshipRequest/with_a_non-existent_relationship/raises_ResourceNotFound.yml
250
- - spec/cassettes/Keymaker_DeleteRelationshipRequest/with_an_existing_relationship/deletes_the_relationship.yml
251
- - spec/cassettes/Keymaker_ExecuteCypherRequest/with_a_valid_Cypher_Query/returns_a_200_status_code.yml
252
- - spec/cassettes/Keymaker_ExecuteCypherRequest/with_an_invalid_Cypher_Query/raises_ClientError.yml
253
- - spec/cassettes/Keymaker_ExecuteGremlinRequest/with_a_valid_Gremlin_Script/returns_a_200_status_code.yml
254
- - spec/cassettes/Keymaker_ExecuteGremlinRequest/with_an_invalid_Gremlin_Script/raises_ClientError.yml
255
- - spec/cassettes/Keymaker_GetNodeRequest/with_a_non-existent_node_id/raises_ResourceNotFound.yml
256
- - spec/cassettes/Keymaker_GetNodeRequest/with_an_empty_node_id/raises_ClientError.yml
257
- - spec/cassettes/Keymaker_GetRelationshipTypesRequest/with_existing_relationships/returns_a_unique_array_of_relationship_types.yml
258
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_a_200_status_code.yml
259
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_application/json.yml
260
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_the_Neo4j_REST_API_starting_point_response_request.yml
261
- - spec/cassettes/Keymaker_TraversePathRequest/_traverse_path_properties/with_options/builds_the_query_properties_with_defaults.yml
262
- - spec/cassettes/Keymaker_TraversePathRequest/with_invalid_options/raise_a_ClientError.yml
263
- - spec/cassettes/Keymaker_TraversePathRequest/with_valid_options/returns_status_code_200.yml
264
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/_node_properties/excludes_the_node_id.yml
265
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_invalid_options/raises_a_ClientError.yml
266
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/returns_a_status_of_204.yml
267
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/updates_the_properties.yml
268
234
  - spec/configuration_spec.rb
235
+ - spec/keymaker/node_spec.rb
269
236
  - spec/keymaker/requests/add_node_to_index_request_spec.rb
270
237
  - spec/keymaker/requests/batch_get_nodes_request_spec.rb
271
238
  - spec/keymaker/requests/batch_request_spec.rb
@@ -284,6 +251,7 @@ files:
284
251
  - spec/keymaker_spec.rb
285
252
  - spec/service_spec.rb
286
253
  - spec/spec_helper.rb
254
+ - spec/support/active_model_lint.rb
287
255
  - spec/support/keymaker.rb
288
256
  - spec/support/vcr.rb
289
257
  homepage: https://github.com/therubymug/keymaker
@@ -300,7 +268,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
300
268
  version: '0'
301
269
  segments:
302
270
  - 0
303
- hash: -174777340731700540
271
+ hash: 3979827781340380936
304
272
  required_rubygems_version: !ruby/object:Gem::Requirement
305
273
  none: false
306
274
  requirements:
@@ -314,42 +282,8 @@ signing_key:
314
282
  specification_version: 2
315
283
  summary: A multi-layer REST API wrapper for neo4j.
316
284
  test_files:
317
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_a_201_status_code.yml
318
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_application/json.yml
319
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/with_valid_options/returns_the_Neo4j_REST_API_starting_point_response_request.yml
320
- - spec/cassettes/Keymaker_BatchRequest/when_a_resource_is_not_found/raises_BatchRequestError.yml
321
- - spec/cassettes/Keymaker_BatchRequest/when_to_and_method_are_not_set/raises_BatchRequestError.yml
322
- - spec/cassettes/Keymaker_BatchRequest/with_valid_options/returns_a_200_status_code.yml
323
- - spec/cassettes/Keymaker_BatchRequest/with_valid_options/runs_the_commands_and_returns_their_respective_results.yml
324
- - spec/cassettes/Keymaker_CreateNodeRequest/returns_a_201_status_code.yml
325
- - spec/cassettes/Keymaker_CreateNodeRequest/returns_application/json.yml
326
- - spec/cassettes/Keymaker_CreateNodeRequest/with_properties/creates_a_node_with_the_given_properties.yml
327
- - spec/cassettes/Keymaker_CreateNodeRequest/without_properties/creates_an_empty_node.yml
328
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_invalid_options/raises_ClientError.yml
329
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/creates_a_node_with_the_given_properties.yml
330
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_a_201_status_code.yml
331
- - spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_application/json.yml
332
- - spec/cassettes/Keymaker_CreateRelationshipRequest/without_properties/creates_an_empty_relationship_of_type_birthed_.yml
333
- - spec/cassettes/Keymaker_DeleteRelationshipRequest/with_a_non-existent_relationship/raises_ResourceNotFound.yml
334
- - spec/cassettes/Keymaker_DeleteRelationshipRequest/with_an_existing_relationship/deletes_the_relationship.yml
335
- - spec/cassettes/Keymaker_ExecuteCypherRequest/with_a_valid_Cypher_Query/returns_a_200_status_code.yml
336
- - spec/cassettes/Keymaker_ExecuteCypherRequest/with_an_invalid_Cypher_Query/raises_ClientError.yml
337
- - spec/cassettes/Keymaker_ExecuteGremlinRequest/with_a_valid_Gremlin_Script/returns_a_200_status_code.yml
338
- - spec/cassettes/Keymaker_ExecuteGremlinRequest/with_an_invalid_Gremlin_Script/raises_ClientError.yml
339
- - spec/cassettes/Keymaker_GetNodeRequest/with_a_non-existent_node_id/raises_ResourceNotFound.yml
340
- - spec/cassettes/Keymaker_GetNodeRequest/with_an_empty_node_id/raises_ClientError.yml
341
- - spec/cassettes/Keymaker_GetRelationshipTypesRequest/with_existing_relationships/returns_a_unique_array_of_relationship_types.yml
342
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_a_200_status_code.yml
343
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_application/json.yml
344
- - spec/cassettes/Keymaker_ServiceRootRequest/returns_the_Neo4j_REST_API_starting_point_response_request.yml
345
- - spec/cassettes/Keymaker_TraversePathRequest/_traverse_path_properties/with_options/builds_the_query_properties_with_defaults.yml
346
- - spec/cassettes/Keymaker_TraversePathRequest/with_invalid_options/raise_a_ClientError.yml
347
- - spec/cassettes/Keymaker_TraversePathRequest/with_valid_options/returns_status_code_200.yml
348
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/_node_properties/excludes_the_node_id.yml
349
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_invalid_options/raises_a_ClientError.yml
350
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/returns_a_status_of_204.yml
351
- - spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/updates_the_properties.yml
352
285
  - spec/configuration_spec.rb
286
+ - spec/keymaker/node_spec.rb
353
287
  - spec/keymaker/requests/add_node_to_index_request_spec.rb
354
288
  - spec/keymaker/requests/batch_get_nodes_request_spec.rb
355
289
  - spec/keymaker/requests/batch_request_spec.rb
@@ -368,5 +302,6 @@ test_files:
368
302
  - spec/keymaker_spec.rb
369
303
  - spec/service_spec.rb
370
304
  - spec/spec_helper.rb
305
+ - spec/support/active_model_lint.rb
371
306
  - spec/support/keymaker.rb
372
307
  - spec/support/vcr.rb