keymaker 0.0.8 → 0.0.9

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 (57) hide show
  1. data/README.md +36 -10
  2. data/keymaker.gemspec +37 -33
  3. data/lib/keymaker.rb +3 -2
  4. data/lib/keymaker/configuration.rb +14 -24
  5. data/lib/keymaker/node.rb +1 -1
  6. data/lib/keymaker/request.rb +0 -2
  7. data/lib/keymaker/requests/add_node_to_index_request.rb +10 -1
  8. data/lib/keymaker/requests/create_relationship_request.rb +8 -1
  9. data/lib/keymaker/requests/delete_relationship_request.rb +10 -1
  10. data/lib/keymaker/requests/execute_cypher_request.rb +8 -3
  11. data/lib/keymaker/requests/execute_gremlin_request.rb +8 -3
  12. data/lib/keymaker/requests/remove_node_from_index_request.rb +0 -2
  13. data/lib/keymaker/requests/service_root_request.rb +1 -1
  14. data/lib/keymaker/requests/{path_traverse_request.rb → traverse_path_request.rb} +16 -4
  15. data/lib/keymaker/requests/update_node_properties_request.rb +8 -1
  16. data/lib/keymaker/response.rb +1 -0
  17. data/lib/keymaker/service.rb +16 -4
  18. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/{returns_a_201_status_code.yml → with_valid_options/returns_a_201_status_code.yml} +54 -55
  19. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/{returns_application → with_valid_options/returns_application}/json.yml +54 -55
  20. data/spec/cassettes/Keymaker_AddNodeToIndexRequest/{returns_the_Neo4j_REST_API_starting_point_response_request.yml → with_valid_options/returns_the_Neo4j_REST_API_starting_point_response_request.yml} +54 -55
  21. data/spec/cassettes/Keymaker_CreateNodeRequest/returns_a_201_status_code.yml +112 -0
  22. data/spec/cassettes/Keymaker_CreateNodeRequest/returns_application/json.yml +112 -0
  23. data/spec/cassettes/Keymaker_CreateNodeRequest/with_properties/creates_a_node_with_the_given_properties.yml +112 -0
  24. data/spec/cassettes/Keymaker_CreateNodeRequest/without_properties/creates_an_empty_node.yml +112 -0
  25. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_invalid_options/raises_ClientError.yml +201 -0
  26. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/creates_a_node_with_the_given_properties.yml +233 -0
  27. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_a_201_status_code.yml +196 -0
  28. data/spec/cassettes/Keymaker_CreateRelationshipRequest/with_properties/returns_application/json.yml +196 -0
  29. data/spec/cassettes/Keymaker_CreateRelationshipRequest/without_properties/creates_an_empty_relationship_of_type_birthed_.yml +195 -0
  30. data/spec/cassettes/Keymaker_DeleteRelationshipRequest/with_a_non-existent_relationship/raises_ResourceNotFound.yml +191 -0
  31. data/spec/cassettes/Keymaker_DeleteRelationshipRequest/with_an_existing_relationship/deletes_the_relationship.yml +219 -0
  32. data/spec/cassettes/Keymaker_ExecuteCypherRequest/with_a_valid_Cypher_Query/returns_a_200_status_code.yml +111 -0
  33. data/spec/cassettes/Keymaker_ExecuteCypherRequest/with_an_invalid_Cypher_Query/raises_ClientError.yml +108 -0
  34. data/spec/cassettes/Keymaker_ExecuteGremlinRequest/with_a_valid_Gremlin_Script/returns_a_200_status_code.yml +98 -0
  35. data/spec/cassettes/Keymaker_ExecuteGremlinRequest/with_an_invalid_Gremlin_Script/raises_ClientError.yml +107 -0
  36. data/spec/cassettes/Keymaker_TraversePathRequest/_traverse_path_properties/with_options/builds_the_query_properties_with_defaults.yml +157 -0
  37. data/spec/cassettes/Keymaker_TraversePathRequest/with_invalid_options/raise_a_ClientError.yml +193 -0
  38. data/spec/cassettes/Keymaker_TraversePathRequest/with_valid_options/returns_status_code_200.yml +269 -0
  39. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/_node_properties/excludes_the_node_id.yml +157 -0
  40. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_invalid_options/raises_a_ClientError.yml +193 -0
  41. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/returns_a_status_of_204.yml +182 -0
  42. data/spec/cassettes/Keymaker_UpdateNodePropertiesRequest/with_valid_options/updates_the_properties.yml +214 -0
  43. data/spec/keymaker/requests/add_node_to_index_request_spec.rb +30 -28
  44. data/spec/keymaker/requests/batch_get_nodes_request_spec.rb +4 -4
  45. data/spec/keymaker/requests/batch_request_spec.rb +33 -33
  46. data/spec/keymaker/requests/create_node_request_spec.rb +34 -0
  47. data/spec/keymaker/requests/create_relationship_request_spec.rb +58 -0
  48. data/spec/keymaker/requests/delete_relationship_request_spec.rb +28 -0
  49. data/spec/keymaker/requests/execute_cypher_request_spec.rb +23 -0
  50. data/spec/keymaker/requests/execute_gremlin_request_spec.rb +23 -0
  51. data/spec/keymaker/requests/service_root_request_spec.rb +9 -9
  52. data/spec/keymaker/requests/traverse_path_request_spec.rb +50 -0
  53. data/spec/keymaker/requests/update_node_properties_request_spec.rb +50 -0
  54. data/spec/keymaker/service_spec.rb +31 -0
  55. data/spec/keymaker_spec.rb +26 -2
  56. data/spec/support/keymaker.rb +10 -4
  57. metadata +86 -10
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keymaker::DeleteRelationshipRequest, vcr: true do
4
+
5
+ include_context "John and Sarah nodes"
6
+
7
+ let(:delete_relationship_request) { Keymaker::DeleteRelationshipRequest.new(Keymaker.service, options).submit }
8
+
9
+ context "with an existing relationship" do
10
+ let(:relationship_id) { Keymaker::CreateRelationshipRequest.new(Keymaker.service, rel_opts).submit.neo4j_id }
11
+ let(:rel_opts) { { node_id: sarah_node_id, end_node_id: john_node_id, rel_type: "birthed", data: {location: "unknown", date: "1985-02-28"} } }
12
+
13
+ let(:options) { {relationship_id: relationship_id} }
14
+ it "deletes the relationship" do
15
+ delete_relationship_request.status.should == 204
16
+ end
17
+ end
18
+
19
+ context "with a non-existent relationship" do
20
+ let(:options) { {relationship_id: 9000000009} }
21
+ it "raises ResourceNotFound" do
22
+ expect {
23
+ delete_relationship_request
24
+ }.to raise_error(Keymaker::ResourceNotFound)
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keymaker::ExecuteCypherRequest, vcr: true do
4
+
5
+ let(:execute_cypher_request) { Keymaker::ExecuteCypherRequest.new(Keymaker.service, opts).submit }
6
+
7
+ context "with a valid Cypher Query" do
8
+ let(:opts) { {query: "CREATE (n {name : 'John Connor'}) RETURN n;"} }
9
+ it "returns a 200 status code" do
10
+ execute_cypher_request.status.should == 200
11
+ end
12
+ end
13
+
14
+ context "with an invalid Cypher Query" do
15
+ let(:opts) { {query: "START ME UP"} }
16
+ it "raises ClientError" do
17
+ expect {
18
+ execute_cypher_request
19
+ }.to raise_error(Keymaker::ClientError)
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keymaker::ExecuteGremlinRequest, vcr: true do
4
+
5
+ let(:execute_gremlin_request) { Keymaker::ExecuteGremlinRequest.new(Keymaker.service, opts).submit }
6
+
7
+ context "with a valid Gremlin Script" do
8
+ let(:opts) { {script: "g.V();"} }
9
+ it "returns a 200 status code" do
10
+ execute_gremlin_request.status.should == 200
11
+ end
12
+ end
13
+
14
+ context "with an invalid Gremlin Script" do
15
+ let(:opts) { {script: "START ME UP"} }
16
+ it "raises ClientError" do
17
+ expect {
18
+ execute_gremlin_request
19
+ }.to raise_error(Keymaker::ClientError)
20
+ end
21
+ end
22
+
23
+ end
@@ -8,17 +8,17 @@ describe Keymaker::ServiceRootRequest, vcr: true do
8
8
  it "returns the Neo4j REST API starting point response request" do
9
9
  service_root_request.body.should include(
10
10
  {
11
- "cypher" => "http://localhost:7477/db/data/cypher",
12
- "relationship_index" => "http://localhost:7477/db/data/index/relationship",
13
- "node" => "http://localhost:7477/db/data/node",
14
- "relationship_types" => "http://localhost:7477/db/data/relationship/types",
15
- "batch" => "http://localhost:7477/db/data/batch",
16
- "extensions_info" => "http://localhost:7477/db/data/ext",
17
- "node_index" => "http://localhost:7477/db/data/index/node",
11
+ "cypher" => "#{neo4j_host}/db/data/cypher",
12
+ "relationship_index" => "#{neo4j_host}/db/data/index/relationship",
13
+ "node" => "#{neo4j_host}/db/data/node",
14
+ "relationship_types" => "#{neo4j_host}/db/data/relationship/types",
15
+ "batch" => "#{neo4j_host}/db/data/batch",
16
+ "extensions_info" => "#{neo4j_host}/db/data/ext",
17
+ "node_index" => "#{neo4j_host}/db/data/index/node",
18
18
  "extensions" =>
19
19
  {
20
- "CypherPlugin" => {"execute_query" => "http://localhost:7477/db/data/ext/CypherPlugin/graphdb/execute_query"},
21
- "GremlinPlugin" => {"execute_script" => "http://localhost:7477/db/data/ext/GremlinPlugin/graphdb/execute_script"}
20
+ "CypherPlugin" => {"execute_query" => "#{neo4j_host}/db/data/ext/CypherPlugin/graphdb/execute_query"},
21
+ "GremlinPlugin" => {"execute_script" => "#{neo4j_host}/db/data/ext/GremlinPlugin/graphdb/execute_script"}
22
22
  }
23
23
  }
24
24
  )
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keymaker::TraversePathRequest, vcr: true do
4
+
5
+ include_context "John and Sarah nodes"
6
+
7
+ let(:traverse_path_request) { Keymaker::TraversePathRequest.new(Keymaker.service, options) }
8
+
9
+ def do_it
10
+ traverse_path_request.submit
11
+ end
12
+
13
+ describe "#traverse_path_properties" do
14
+ context "with options" do
15
+ let(:options) { {order: "depth_first", relationships: "out"} }
16
+ it "builds the query properties with defaults" do
17
+ traverse_path_request.traverse_path_properties.should include(
18
+ order: "depth_first",
19
+ relationships: "out",
20
+ uniqueness: "relationship_global"
21
+ )
22
+ end
23
+ end
24
+ end
25
+
26
+ context "with valid options" do
27
+ before do
28
+ Keymaker.service.create_relationship("birthed", sarah_node_id, john_node_id)
29
+ end
30
+ let(:options) do
31
+ { max_depth: 1,
32
+ node_id: john_node_id,
33
+ order: "breadth_first",
34
+ relationships: [{"direction" => "all", "type" => "birthed"}],
35
+ return_filter: {"language" => "builtin", "name" => "all"},
36
+ uniqueness: "relationship_global" }
37
+ end
38
+ it "returns status code 200" do
39
+ do_it.status.should == 200
40
+ end
41
+ end
42
+
43
+ context "with invalid options" do
44
+ let(:options) {{node_id: -11111111111111}}
45
+ it "raise a ClientError" do
46
+ expect { do_it }.to raise_error(Keymaker::ClientError)
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+
3
+ describe Keymaker::UpdateNodePropertiesRequest, vcr: true do
4
+
5
+ include_context "John and Sarah nodes"
6
+
7
+ let(:update_node_properties_request) { Keymaker::UpdateNodePropertiesRequest.new(Keymaker.service, options) }
8
+
9
+ describe "#node_properties" do
10
+ let(:options) do
11
+ {node_id: john_node_id, email: "john.connor@resistance.net"}
12
+ end
13
+ it "excludes the node_id" do
14
+ update_node_properties_request.node_properties.should_not include({node_id: john_node_id})
15
+ end
16
+ end
17
+
18
+ def do_it
19
+ update_node_properties_request.submit
20
+ end
21
+
22
+ context "with valid options" do
23
+ let(:options) do
24
+ {node_id: john_node_id, email: "john.connor@resistance.net"}
25
+ end
26
+ let(:john_node_query) { {query: "START n=node({node_id}) RETURN n.email;", params: {node_id: john_node_id.to_i}} }
27
+ let(:john_node_cypher_request) { Keymaker::ExecuteCypherRequest.new(Keymaker.service, john_node_query).submit }
28
+ let(:john_node_email) { john_node_cypher_request.body["data"][0][0] }
29
+
30
+ it "returns a status of 204" do
31
+ do_it.status.should == 204
32
+ end
33
+
34
+ it "updates the properties" do
35
+ do_it
36
+ john_node_email.should == "john.connor@resistance.net"
37
+ end
38
+
39
+ end
40
+
41
+ context "with invalid options" do
42
+ let(:options) { {node_id: -1} }
43
+ it "raises a ClientError" do
44
+ expect {
45
+ do_it
46
+ }.to raise_error(Keymaker::ClientError)
47
+ end
48
+ end
49
+
50
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+ require 'keymaker'
3
+
4
+ describe Keymaker::Service do
5
+
6
+ include_context "John and Sarah nodes"
7
+
8
+ let(:node_id) { john_node_id }
9
+ let(:get_node) { Keymaker.service.get_node(node_id) }
10
+
11
+ describe "#get_node" do
12
+ context "with an existing node" do
13
+ context "with properties" do
14
+ it "responds to the node's properties" do
15
+ get_node.should respond_to(:email)
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ describe "#delete_node" do
22
+ let(:delete_node) { Keymaker.service.delete_node(node_id) }
23
+ context "with an existing node" do
24
+ it "deletes the node" do
25
+ delete_node
26
+ expect { get_node }.to raise_error(Keymaker::ResourceNotFound)
27
+ end
28
+ end
29
+ end
30
+
31
+ end
@@ -6,6 +6,30 @@ describe Keymaker do
6
6
 
7
7
  include_context "John and Sarah nodes"
8
8
 
9
+ describe "get_node" do
10
+
11
+ def do_it
12
+ service.get_node(node_id)
13
+ end
14
+
15
+ context "given a valid node id" do
16
+ let(:node_id) { john_node_id }
17
+
18
+ it "returns the node" do
19
+ do_it.email.should == john_email
20
+ end
21
+ end
22
+
23
+ context "given an invalid node id" do
24
+ let(:node_id) { nil }
25
+
26
+ it "raises an error" do
27
+ expect { do_it }.to raise_error
28
+ end
29
+ end
30
+
31
+ end
32
+
9
33
  context "indices" do
10
34
  include_context "John and Sarah indexed nodes"
11
35
 
@@ -77,8 +101,8 @@ describe Keymaker do
77
101
  let(:email) { john_email }
78
102
  let(:node_id) { -22 }
79
103
 
80
- it "returns a 500 status" do
81
- do_it.status.should == 500
104
+ it "raises ServerError" do
105
+ expect { do_it }.to raise_error(Keymaker::ServerError)
82
106
  end
83
107
 
84
108
  end
@@ -7,9 +7,10 @@ end
7
7
 
8
8
  shared_context "Keymaker connections" do
9
9
  let(:connection) do
10
- Faraday.new({url: "http://localhost:7477"}) do |conn|
10
+ Faraday.new({url: neo4j_host}) do |conn|
11
+ conn.use FaradayMiddleware::Mashify
11
12
  conn.request :json
12
- conn.use FaradayMiddleware::ParseJson, content_type: /\bjson$/
13
+ conn.response :json, :content_type => /\bjson$/
13
14
  conn.adapter :net_http
14
15
  end
15
16
  end
@@ -18,6 +19,7 @@ shared_context "Keymaker connections" do
18
19
  end
19
20
  let(:test_connection) do
20
21
  Faraday.new do |conn|
22
+ conn.use FaradayMiddleware::Mashify
21
23
  conn.adapter :test, faraday_stubs
22
24
  end
23
25
  end
@@ -76,16 +78,20 @@ shared_context "John and Sarah indexed nodes" do
76
78
 
77
79
  end
78
80
 
81
+ def neo4j_host
82
+ "http://localhost:7477"
83
+ end
84
+
79
85
  def clear_graph
80
86
  raw_connection.post("/db/data/ext/GremlinPlugin/graphdb/execute_script", {script: "g.clear()\;g.V()"})
81
87
  end
82
88
 
83
89
  def clear_users_index
84
- raw_connection.delete("http://localhost:7477/db/data/index/node/users")
90
+ raw_connection.delete("#{neo4j_host}/db/data/index/node/users")
85
91
  end
86
92
 
87
93
  def raw_connection
88
- Faraday.new({url: "http://localhost:7477"}) do |conn|
94
+ Faraday.new({url: neo4j_host}) do |conn|
89
95
  conn.request :json
90
96
  conn.use FaradayMiddleware::ParseJson, content_type: /\bjson$/
91
97
  conn.adapter :net_http
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.8
4
+ version: 0.0.9
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-07-19 00:00:00.000000000 Z
13
+ date: 2012-09-22 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activemodel
@@ -60,6 +60,22 @@ dependencies:
60
60
  - - ! '>='
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: hashie
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
63
79
  - !ruby/object:Gem::Dependency
64
80
  name: faraday
65
81
  requirement: !ruby/object:Gem::Requirement
@@ -207,34 +223,64 @@ files:
207
223
  - lib/keymaker/requests/execute_gremlin_request.rb
208
224
  - lib/keymaker/requests/get_node_request.rb
209
225
  - lib/keymaker/requests/get_relationship_types_request.rb
210
- - lib/keymaker/requests/path_traverse_request.rb
211
226
  - lib/keymaker/requests/remove_node_from_index_request.rb
212
227
  - lib/keymaker/requests/service_root_request.rb
228
+ - lib/keymaker/requests/traverse_path_request.rb
213
229
  - lib/keymaker/requests/update_node_properties_request.rb
214
230
  - lib/keymaker/response.rb
215
231
  - lib/keymaker/serialization.rb
216
232
  - lib/keymaker/service.rb
217
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_a_201_status_code.yml
218
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_application/json.yml
219
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_the_Neo4j_REST_API_starting_point_response_request.yml
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
220
236
  - spec/cassettes/Keymaker_BatchRequest/when_a_resource_is_not_found/raises_BatchRequestError.yml
221
237
  - spec/cassettes/Keymaker_BatchRequest/when_to_and_method_are_not_set/raises_BatchRequestError.yml
222
238
  - spec/cassettes/Keymaker_BatchRequest/with_valid_options/returns_a_200_status_code.yml
223
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
224
255
  - spec/cassettes/Keymaker_GetNodeRequest/with_a_non-existent_node_id/raises_ResourceNotFound.yml
225
256
  - spec/cassettes/Keymaker_GetNodeRequest/with_an_empty_node_id/raises_ClientError.yml
226
257
  - spec/cassettes/Keymaker_GetRelationshipTypesRequest/with_existing_relationships/returns_a_unique_array_of_relationship_types.yml
227
258
  - spec/cassettes/Keymaker_ServiceRootRequest/returns_a_200_status_code.yml
228
259
  - spec/cassettes/Keymaker_ServiceRootRequest/returns_application/json.yml
229
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
230
268
  - spec/configuration_spec.rb
231
269
  - spec/keymaker/requests/add_node_to_index_request_spec.rb
232
270
  - spec/keymaker/requests/batch_get_nodes_request_spec.rb
233
271
  - spec/keymaker/requests/batch_request_spec.rb
272
+ - spec/keymaker/requests/create_node_request_spec.rb
273
+ - spec/keymaker/requests/create_relationship_request_spec.rb
234
274
  - spec/keymaker/requests/delete_node_request_spec.rb
275
+ - spec/keymaker/requests/delete_relationship_request_spec.rb
276
+ - spec/keymaker/requests/execute_cypher_request_spec.rb
277
+ - spec/keymaker/requests/execute_gremlin_request_spec.rb
235
278
  - spec/keymaker/requests/get_node_request_spec.rb
236
279
  - spec/keymaker/requests/get_relationship_types_request_spec.rb
237
280
  - spec/keymaker/requests/service_root_request_spec.rb
281
+ - spec/keymaker/requests/traverse_path_request_spec.rb
282
+ - spec/keymaker/requests/update_node_properties_request_spec.rb
283
+ - spec/keymaker/service_spec.rb
238
284
  - spec/keymaker_spec.rb
239
285
  - spec/service_spec.rb
240
286
  - spec/spec_helper.rb
@@ -254,7 +300,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
254
300
  version: '0'
255
301
  segments:
256
302
  - 0
257
- hash: 2610601547165857650
303
+ hash: -174777340731700540
258
304
  required_rubygems_version: !ruby/object:Gem::Requirement
259
305
  none: false
260
306
  requirements:
@@ -268,27 +314,57 @@ signing_key:
268
314
  specification_version: 2
269
315
  summary: A multi-layer REST API wrapper for neo4j.
270
316
  test_files:
271
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_a_201_status_code.yml
272
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_application/json.yml
273
- - spec/cassettes/Keymaker_AddNodeToIndexRequest/returns_the_Neo4j_REST_API_starting_point_response_request.yml
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
274
320
  - spec/cassettes/Keymaker_BatchRequest/when_a_resource_is_not_found/raises_BatchRequestError.yml
275
321
  - spec/cassettes/Keymaker_BatchRequest/when_to_and_method_are_not_set/raises_BatchRequestError.yml
276
322
  - spec/cassettes/Keymaker_BatchRequest/with_valid_options/returns_a_200_status_code.yml
277
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
278
339
  - spec/cassettes/Keymaker_GetNodeRequest/with_a_non-existent_node_id/raises_ResourceNotFound.yml
279
340
  - spec/cassettes/Keymaker_GetNodeRequest/with_an_empty_node_id/raises_ClientError.yml
280
341
  - spec/cassettes/Keymaker_GetRelationshipTypesRequest/with_existing_relationships/returns_a_unique_array_of_relationship_types.yml
281
342
  - spec/cassettes/Keymaker_ServiceRootRequest/returns_a_200_status_code.yml
282
343
  - spec/cassettes/Keymaker_ServiceRootRequest/returns_application/json.yml
283
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
284
352
  - spec/configuration_spec.rb
285
353
  - spec/keymaker/requests/add_node_to_index_request_spec.rb
286
354
  - spec/keymaker/requests/batch_get_nodes_request_spec.rb
287
355
  - spec/keymaker/requests/batch_request_spec.rb
356
+ - spec/keymaker/requests/create_node_request_spec.rb
357
+ - spec/keymaker/requests/create_relationship_request_spec.rb
288
358
  - spec/keymaker/requests/delete_node_request_spec.rb
359
+ - spec/keymaker/requests/delete_relationship_request_spec.rb
360
+ - spec/keymaker/requests/execute_cypher_request_spec.rb
361
+ - spec/keymaker/requests/execute_gremlin_request_spec.rb
289
362
  - spec/keymaker/requests/get_node_request_spec.rb
290
363
  - spec/keymaker/requests/get_relationship_types_request_spec.rb
291
364
  - spec/keymaker/requests/service_root_request_spec.rb
365
+ - spec/keymaker/requests/traverse_path_request_spec.rb
366
+ - spec/keymaker/requests/update_node_properties_request_spec.rb
367
+ - spec/keymaker/service_spec.rb
292
368
  - spec/keymaker_spec.rb
293
369
  - spec/service_spec.rb
294
370
  - spec/spec_helper.rb