boltless 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +8 -0
  3. data/Guardfile +44 -0
  4. data/Makefile +138 -0
  5. data/Rakefile +26 -0
  6. data/docker-compose.yml +19 -0
  7. data/lib/boltless/configuration.rb +69 -0
  8. data/lib/boltless/errors/invalid_json_error.rb +9 -0
  9. data/lib/boltless/errors/request_error.rb +24 -0
  10. data/lib/boltless/errors/response_error.rb +30 -0
  11. data/lib/boltless/errors/transaction_begin_error.rb +9 -0
  12. data/lib/boltless/errors/transaction_in_bad_state_error.rb +11 -0
  13. data/lib/boltless/errors/transaction_not_found_error.rb +11 -0
  14. data/lib/boltless/errors/transaction_rollback_error.rb +26 -0
  15. data/lib/boltless/extensions/configuration_handling.rb +37 -0
  16. data/lib/boltless/extensions/connection_pool.rb +127 -0
  17. data/lib/boltless/extensions/operations.rb +175 -0
  18. data/lib/boltless/extensions/transactions.rb +301 -0
  19. data/lib/boltless/extensions/utilities.rb +187 -0
  20. data/lib/boltless/request.rb +386 -0
  21. data/lib/boltless/result.rb +98 -0
  22. data/lib/boltless/result_row.rb +90 -0
  23. data/lib/boltless/statement_collector.rb +40 -0
  24. data/lib/boltless/transaction.rb +234 -0
  25. data/lib/boltless/version.rb +23 -0
  26. data/lib/boltless.rb +36 -0
  27. data/spec/benchmark/transfer.rb +57 -0
  28. data/spec/boltless/extensions/configuration_handling_spec.rb +39 -0
  29. data/spec/boltless/extensions/connection_pool_spec.rb +131 -0
  30. data/spec/boltless/extensions/operations_spec.rb +189 -0
  31. data/spec/boltless/extensions/transactions_spec.rb +418 -0
  32. data/spec/boltless/extensions/utilities_spec.rb +546 -0
  33. data/spec/boltless/request_spec.rb +946 -0
  34. data/spec/boltless/result_row_spec.rb +161 -0
  35. data/spec/boltless/result_spec.rb +127 -0
  36. data/spec/boltless/statement_collector_spec.rb +45 -0
  37. data/spec/boltless/transaction_spec.rb +601 -0
  38. data/spec/boltless_spec.rb +11 -0
  39. data/spec/fixtures/files/raw_result.yml +21 -0
  40. data/spec/fixtures/files/raw_result_with_graph_result.yml +48 -0
  41. data/spec/fixtures/files/raw_result_with_meta.yml +11 -0
  42. data/spec/fixtures/files/raw_result_with_stats.yml +26 -0
  43. data/spec/spec_helper.rb +89 -0
  44. metadata +384 -0
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simplecov'
4
+ SimpleCov.command_name 'specs'
5
+
6
+ require 'bundler/setup'
7
+ require 'active_support/core_ext/kernel/reporting'
8
+ require 'yaml'
9
+ require 'boltless'
10
+
11
+ # Reset the gem configuration.
12
+ def reset_boltless_config!
13
+ Boltless.logger.level = :info
14
+ Boltless.reset_configuration!
15
+ # Check for CI in order to set the correct neo4j base URL
16
+ Boltless.configuration.base_url = 'http://neo4j.boltless.local:7474' \
17
+ unless ENV['GITHUB_ACTIONS'].nil?
18
+ end
19
+
20
+ # Clean neo4j database (nodes/relationships).
21
+ def clean_neo4j!
22
+ Boltless.logger.level = :error
23
+ Boltless.clear_database!
24
+ reset_boltless_config!
25
+ end
26
+
27
+ RSpec.configure do |config|
28
+ # Enable flags like --only-failures and --next-failure
29
+ config.example_status_persistence_file_path = '.rspec_status'
30
+
31
+ # Disable RSpec exposing methods globally on `Module` and `main`
32
+ config.disable_monkey_patching!
33
+
34
+ config.expect_with :rspec do |c|
35
+ c.syntax = :expect
36
+ end
37
+
38
+ # Enable the focus inclusion filter and run all when no filter is set
39
+ # See: http://bit.ly/2TVkcIh
40
+ config.filter_run(focus: true)
41
+ config.run_all_when_everything_filtered = true
42
+
43
+ # Clean the neo4j database before we use it
44
+ config.before(:suite) do
45
+ reset_boltless_config!
46
+ clean_neo4j!
47
+ end
48
+
49
+ # Reset the gem configuration before each example
50
+ config.before do
51
+ reset_boltless_config!
52
+ end
53
+ end
54
+
55
+ # Print some information
56
+ puts
57
+ puts <<DESC
58
+ -------------- Versions --------------
59
+ Ruby: #{RUBY_VERSION}
60
+ Active Support: #{ActiveSupport.version}
61
+ --------------------------------------
62
+ DESC
63
+ puts
64
+
65
+ # Fetch a file fixture by name/path.
66
+ #
67
+ # @param path [String, Symbol] the path to fetch
68
+ # @return [Pathname] the found file fixture
69
+ def file_fixture(path)
70
+ Pathname.new(File.expand_path(File.join(__dir__, "fixtures/files/#{path}")))
71
+ end
72
+
73
+ # Return a neo4j raw result from a file fixture. It looks excatly like produced
74
+ # by +Boltless::Request#handle_response_body+.
75
+ #
76
+ # @param suffixes [Array<String, Symbol>] additional file suffixes, check the
77
+ # +spec/fixtures/files/+ directory for all available variants
78
+ def raw_result_fixture(*suffixes)
79
+ suffixes = suffixes.map(&:to_s).join('_')
80
+ suffixes = "_#{suffixes}" unless suffixes.empty?
81
+ file = "raw_result#{suffixes}.yml"
82
+
83
+ yml_meth = YAML.respond_to?(:unsafe_load) ? :unsafe_load : :load
84
+ res = YAML.send(yml_meth, file_fixture(file).read)
85
+
86
+ res = res.map(&:deep_symbolize_keys) if res.is_a? Array
87
+ res = res.deep_symbolize_keys if res.is_a? Hash
88
+ res
89
+ end
metadata ADDED
@@ -0,0 +1,384 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: boltless
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Hermann Mayer
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-08-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 5.2.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 5.2.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.8.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: connection_pool
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: fast_jsonparser
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.6.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.6.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: http
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: oj
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rake
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '13.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '13.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: zeitwerk
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '2.4'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '2.4'
125
+ - !ruby/object:Gem::Dependency
126
+ name: appraisal
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: benchmark-ips
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '2.10'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '2.10'
153
+ - !ruby/object:Gem::Dependency
154
+ name: bundler
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '1.16'
160
+ - - "<"
161
+ - !ruby/object:Gem::Version
162
+ version: '3'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '1.16'
170
+ - - "<"
171
+ - !ruby/object:Gem::Version
172
+ version: '3'
173
+ - !ruby/object:Gem::Dependency
174
+ name: countless
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - "~>"
178
+ - !ruby/object:Gem::Version
179
+ version: '1.0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: guard-rspec
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '4.7'
194
+ type: :development
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - "~>"
199
+ - !ruby/object:Gem::Version
200
+ version: '4.7'
201
+ - !ruby/object:Gem::Dependency
202
+ name: irb
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '1.2'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '1.2'
215
+ - !ruby/object:Gem::Dependency
216
+ name: rspec
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - "~>"
220
+ - !ruby/object:Gem::Version
221
+ version: '3.9'
222
+ type: :development
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - "~>"
227
+ - !ruby/object:Gem::Version
228
+ version: '3.9'
229
+ - !ruby/object:Gem::Dependency
230
+ name: rubocop
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - "~>"
234
+ - !ruby/object:Gem::Version
235
+ version: '1.25'
236
+ type: :development
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '1.25'
243
+ - !ruby/object:Gem::Dependency
244
+ name: rubocop-rails
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - "~>"
248
+ - !ruby/object:Gem::Version
249
+ version: '2.14'
250
+ type: :development
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - "~>"
255
+ - !ruby/object:Gem::Version
256
+ version: '2.14'
257
+ - !ruby/object:Gem::Dependency
258
+ name: rubocop-rspec
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - "~>"
262
+ - !ruby/object:Gem::Version
263
+ version: '2.10'
264
+ type: :development
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - "~>"
269
+ - !ruby/object:Gem::Version
270
+ version: '2.10'
271
+ - !ruby/object:Gem::Dependency
272
+ name: simplecov
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "<"
276
+ - !ruby/object:Gem::Version
277
+ version: '0.18'
278
+ type: :development
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - "<"
283
+ - !ruby/object:Gem::Version
284
+ version: '0.18'
285
+ - !ruby/object:Gem::Dependency
286
+ name: yard
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: 0.9.18
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: 0.9.18
299
+ - !ruby/object:Gem::Dependency
300
+ name: yard-activesupport-concern
301
+ requirement: !ruby/object:Gem::Requirement
302
+ requirements:
303
+ - - "~>"
304
+ - !ruby/object:Gem::Version
305
+ version: 0.0.1
306
+ type: :development
307
+ prerelease: false
308
+ version_requirements: !ruby/object:Gem::Requirement
309
+ requirements:
310
+ - - "~>"
311
+ - !ruby/object:Gem::Version
312
+ version: 0.0.1
313
+ description: neo4j driver, via the HTTP API
314
+ email:
315
+ - hermann.mayer92@gmail.com
316
+ executables: []
317
+ extensions: []
318
+ extra_rdoc_files: []
319
+ files:
320
+ - Gemfile
321
+ - Guardfile
322
+ - Makefile
323
+ - Rakefile
324
+ - docker-compose.yml
325
+ - lib/boltless.rb
326
+ - lib/boltless/configuration.rb
327
+ - lib/boltless/errors/invalid_json_error.rb
328
+ - lib/boltless/errors/request_error.rb
329
+ - lib/boltless/errors/response_error.rb
330
+ - lib/boltless/errors/transaction_begin_error.rb
331
+ - lib/boltless/errors/transaction_in_bad_state_error.rb
332
+ - lib/boltless/errors/transaction_not_found_error.rb
333
+ - lib/boltless/errors/transaction_rollback_error.rb
334
+ - lib/boltless/extensions/configuration_handling.rb
335
+ - lib/boltless/extensions/connection_pool.rb
336
+ - lib/boltless/extensions/operations.rb
337
+ - lib/boltless/extensions/transactions.rb
338
+ - lib/boltless/extensions/utilities.rb
339
+ - lib/boltless/request.rb
340
+ - lib/boltless/result.rb
341
+ - lib/boltless/result_row.rb
342
+ - lib/boltless/statement_collector.rb
343
+ - lib/boltless/transaction.rb
344
+ - lib/boltless/version.rb
345
+ - spec/benchmark/transfer.rb
346
+ - spec/boltless/extensions/configuration_handling_spec.rb
347
+ - spec/boltless/extensions/connection_pool_spec.rb
348
+ - spec/boltless/extensions/operations_spec.rb
349
+ - spec/boltless/extensions/transactions_spec.rb
350
+ - spec/boltless/extensions/utilities_spec.rb
351
+ - spec/boltless/request_spec.rb
352
+ - spec/boltless/result_row_spec.rb
353
+ - spec/boltless/result_spec.rb
354
+ - spec/boltless/statement_collector_spec.rb
355
+ - spec/boltless/transaction_spec.rb
356
+ - spec/boltless_spec.rb
357
+ - spec/fixtures/files/raw_result.yml
358
+ - spec/fixtures/files/raw_result_with_graph_result.yml
359
+ - spec/fixtures/files/raw_result_with_meta.yml
360
+ - spec/fixtures/files/raw_result_with_stats.yml
361
+ - spec/spec_helper.rb
362
+ homepage: https://github.com/hausgold/identity-api
363
+ licenses: []
364
+ metadata: {}
365
+ post_install_message:
366
+ rdoc_options: []
367
+ require_paths:
368
+ - lib
369
+ required_ruby_version: !ruby/object:Gem::Requirement
370
+ requirements:
371
+ - - ">="
372
+ - !ruby/object:Gem::Version
373
+ version: '2.5'
374
+ required_rubygems_version: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - ">="
377
+ - !ruby/object:Gem::Version
378
+ version: '0'
379
+ requirements: []
380
+ rubygems_version: 3.3.8
381
+ signing_key:
382
+ specification_version: 4
383
+ summary: neo4j driver, via the HTTP API
384
+ test_files: []