database_cleaner-neo4j 1.8.0.beta
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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +3 -0
- data/.travis.yml +5 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +81 -0
- data/LICENSE.txt +21 -0
- data/README.md +75 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/database_cleaner-neo4j.gemspec +30 -0
- data/lib/database_cleaner-neo4j.rb +1 -0
- data/lib/database_cleaner/neo4j.rb +6 -0
- data/lib/database_cleaner/neo4j/base.rb +66 -0
- data/lib/database_cleaner/neo4j/deletion.rb +16 -0
- data/lib/database_cleaner/neo4j/transaction.rb +35 -0
- data/lib/database_cleaner/neo4j/truncation.rb +9 -0
- data/lib/database_cleaner/neo4j/version.rb +5 -0
- metadata +133 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e60a23b638e26ec7abc38afaabf70731acdecf03aa8f1b35b992652eadb87825
|
4
|
+
data.tar.gz: 291e3a918ffd088fb797d0234d19dc9098ab6c13c735522411e5b515379fc931
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2a102c85cdcf670fe93fb6039bd1b8a32fda8b25dab9cf34317ceb60dbfee558d4578cf1eca051129eb6c56474e038331148e8a5b27e2f629100ca8d2a582a7d
|
7
|
+
data.tar.gz: ca263bef6a02ded16b05639b18e914fb444db2ea9406174068724c859f3923ddc89a506d91c4c1da39b4b55bc3f1c2678ecc17fd199bf799b731e7c5fc911908
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
PATH
|
2
|
+
remote: ../..
|
3
|
+
specs:
|
4
|
+
database_cleaner (1.8.0.beta)
|
5
|
+
|
6
|
+
PATH
|
7
|
+
remote: .
|
8
|
+
specs:
|
9
|
+
database_cleaner-neo4j (1.8.0.beta)
|
10
|
+
database_cleaner (~> 1.8.0.beta)
|
11
|
+
neo4j-core
|
12
|
+
|
13
|
+
GEM
|
14
|
+
remote: https://rubygems.org/
|
15
|
+
specs:
|
16
|
+
activesupport (5.2.4.1)
|
17
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
18
|
+
i18n (>= 0.7, < 2)
|
19
|
+
minitest (~> 5.1)
|
20
|
+
tzinfo (~> 1.1)
|
21
|
+
concurrent-ruby (1.1.5)
|
22
|
+
diff-lcs (1.3)
|
23
|
+
faraday (0.9.0)
|
24
|
+
multipart-post (>= 1.2, < 3)
|
25
|
+
faraday_middleware (0.9.1)
|
26
|
+
faraday (>= 0.7.4, < 0.10)
|
27
|
+
httparty (0.13.3)
|
28
|
+
json (~> 1.8)
|
29
|
+
multi_xml (>= 0.5.2)
|
30
|
+
httpclient (2.5.3.3)
|
31
|
+
i18n (1.5.1)
|
32
|
+
concurrent-ruby (~> 1.0)
|
33
|
+
json (1.8.6)
|
34
|
+
minitest (5.14.0)
|
35
|
+
multi_xml (0.5.5)
|
36
|
+
multipart-post (2.0.0)
|
37
|
+
neo4j-community (2.1.5)
|
38
|
+
neo4j-core (3.0.8)
|
39
|
+
activesupport
|
40
|
+
faraday (~> 0.9.0)
|
41
|
+
faraday_middleware (~> 0.9.1)
|
42
|
+
httparty
|
43
|
+
httpclient
|
44
|
+
json
|
45
|
+
neo4j-community (~> 2.1.1)
|
46
|
+
net-http-persistent
|
47
|
+
os
|
48
|
+
zip
|
49
|
+
net-http-persistent (2.9.4)
|
50
|
+
os (0.9.6)
|
51
|
+
rake (10.4.2)
|
52
|
+
rspec (3.7.0)
|
53
|
+
rspec-core (~> 3.7.0)
|
54
|
+
rspec-expectations (~> 3.7.0)
|
55
|
+
rspec-mocks (~> 3.7.0)
|
56
|
+
rspec-core (3.7.1)
|
57
|
+
rspec-support (~> 3.7.0)
|
58
|
+
rspec-expectations (3.7.0)
|
59
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
60
|
+
rspec-support (~> 3.7.0)
|
61
|
+
rspec-mocks (3.7.0)
|
62
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
63
|
+
rspec-support (~> 3.7.0)
|
64
|
+
rspec-support (3.7.1)
|
65
|
+
thread_safe (0.3.6)
|
66
|
+
tzinfo (1.2.6)
|
67
|
+
thread_safe (~> 0.1)
|
68
|
+
zip (2.0.2)
|
69
|
+
|
70
|
+
PLATFORMS
|
71
|
+
ruby
|
72
|
+
|
73
|
+
DEPENDENCIES
|
74
|
+
bundler (~> 1.16)
|
75
|
+
database_cleaner!
|
76
|
+
database_cleaner-neo4j!
|
77
|
+
rake (~> 10.0)
|
78
|
+
rspec (~> 3.0)
|
79
|
+
|
80
|
+
BUNDLED WITH
|
81
|
+
1.17.3
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2009 Ben Mabey
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Database Cleaner Adapter for Neo4j
|
2
|
+
|
3
|
+
[](https://travis-ci.org/DatabaseCleaner/database_cleaner-neo4j)
|
4
|
+
[](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-neo4j)
|
5
|
+
|
6
|
+
Clean your Neo4j databases with Database Cleaner.
|
7
|
+
|
8
|
+
See https://github.com/DatabaseCleaner/database_cleaner for more information.
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
```ruby
|
13
|
+
# Gemfile
|
14
|
+
group :test do
|
15
|
+
gem 'database_cleaner-neo4j'
|
16
|
+
end
|
17
|
+
```
|
18
|
+
|
19
|
+
## Supported Strategies
|
20
|
+
|
21
|
+
<table>
|
22
|
+
<tbody>
|
23
|
+
<tr>
|
24
|
+
<th>Truncation</th>
|
25
|
+
<th>Transaction</th>
|
26
|
+
<th>Deletion</th>
|
27
|
+
</tr>
|
28
|
+
<tr>
|
29
|
+
<td> Yes</td>
|
30
|
+
<td> <b>Yes</b></td>
|
31
|
+
<td> Yes</td>
|
32
|
+
</tr>
|
33
|
+
</tbody>
|
34
|
+
</table>
|
35
|
+
|
36
|
+
(Default strategy is denoted in bold)
|
37
|
+
|
38
|
+
## Configuration options
|
39
|
+
|
40
|
+
<table>
|
41
|
+
<tbody>
|
42
|
+
<tr>
|
43
|
+
<th>ORM</th>
|
44
|
+
<th>How to access</th>
|
45
|
+
<th>Notes</th>
|
46
|
+
</tr>
|
47
|
+
<tr>
|
48
|
+
<td>Neo4j</td>
|
49
|
+
<td><code>DatabaseCleaner[:neo4j]</code></td>
|
50
|
+
<td>Database type and path(URI) <code>DatabaseCleaner[:neo4j, connection: {type: :server_db, path: 'http://localhost:7475'}].</code></td>
|
51
|
+
</tr>
|
52
|
+
</tbody>
|
53
|
+
</table>
|
54
|
+
|
55
|
+
Note that Truncation and Deletion strategies for Neo4j will just delete all nodes and relationships from the database.
|
56
|
+
|
57
|
+
## Common Errors
|
58
|
+
|
59
|
+
### Model fails to load with Neo4j using transactions
|
60
|
+
|
61
|
+
When you are using [neo4j](https://github.com/neo4jrb/neo4j) gem it creates schema and reads indexes upon loading models. These operations can't be done during a transaction. You have to preload your models before DatabaseCleaner starts a transaction.
|
62
|
+
|
63
|
+
Add to your rails_helper or spec_helper after requiring database_cleaner-neo4j:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
require 'database_cleaner/neo4j'
|
67
|
+
|
68
|
+
Dir["#{Rails.root}/app/models/**/*.rb"].each do |model|
|
69
|
+
load model
|
70
|
+
end
|
71
|
+
```
|
72
|
+
|
73
|
+
## COPYRIGHT
|
74
|
+
|
75
|
+
See [LICENSE] for details.
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "database_cleaner/neo4j"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require "database_cleaner/neo4j/version"
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "database_cleaner-neo4j"
|
8
|
+
spec.version = DatabaseCleaner::Neo4j::VERSION
|
9
|
+
spec.authors = ["Ernesto Tagwerker"]
|
10
|
+
spec.email = ["ernesto@ombulabs.com"]
|
11
|
+
|
12
|
+
spec.summary = "Strategies for cleaning databases using Neo4j. Can be used to ensure a clean state for testing."
|
13
|
+
spec.description = "Strategies for cleaning databases using Neo4j. Can be used to ensure a clean state for testing."
|
14
|
+
spec.homepage = "https://github.com/DatabaseCleaner/database_cleaner-neo4j"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.bindir = "exe"
|
21
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_dependency "database_cleaner", "~> 1.8.0.beta"
|
25
|
+
spec.add_dependency "neo4j-core"
|
26
|
+
|
27
|
+
spec.add_development_dependency "bundler", "~> 1.16"
|
28
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
30
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require "database_cleaner/neo4j"
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'database_cleaner/generic/base'
|
2
|
+
module DatabaseCleaner
|
3
|
+
module Neo4j
|
4
|
+
def self.available_strategies
|
5
|
+
%w[transaction truncation deletion]
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.default_strategy
|
9
|
+
:transaction
|
10
|
+
end
|
11
|
+
|
12
|
+
module Base
|
13
|
+
include ::DatabaseCleaner::Generic::Base
|
14
|
+
|
15
|
+
def db=(desired_db)
|
16
|
+
@db = desired_db == :default ? nil : desired_db
|
17
|
+
end
|
18
|
+
|
19
|
+
def db
|
20
|
+
@db ||= nil
|
21
|
+
end
|
22
|
+
|
23
|
+
def start
|
24
|
+
if db_type == :embedded_db and not session.running?
|
25
|
+
session.start
|
26
|
+
else
|
27
|
+
session
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def database
|
32
|
+
db && default_db.merge(db) || default_db
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def default_db
|
38
|
+
{:type => default_db_type, :path => default_db_path}
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_db_type
|
42
|
+
:server_db
|
43
|
+
end
|
44
|
+
|
45
|
+
def default_db_path(type = default_db_type)
|
46
|
+
type == :server_db ? 'http://localhost:7475/' : './db/test'
|
47
|
+
end
|
48
|
+
|
49
|
+
def db_type
|
50
|
+
database[:type]
|
51
|
+
end
|
52
|
+
|
53
|
+
def db_path
|
54
|
+
database[:path]
|
55
|
+
end
|
56
|
+
|
57
|
+
def db_params
|
58
|
+
database.reject!{|key, value| [:type, :path].include? key }
|
59
|
+
end
|
60
|
+
|
61
|
+
def session
|
62
|
+
@session ||= ::Neo4j::Session.open(db_type, db_path, db_params)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'database_cleaner/neo4j/base'
|
2
|
+
require 'neo4j-core'
|
3
|
+
|
4
|
+
module DatabaseCleaner
|
5
|
+
module Neo4j
|
6
|
+
class Deletion
|
7
|
+
include ::DatabaseCleaner::Neo4j::Base
|
8
|
+
|
9
|
+
def clean
|
10
|
+
::Neo4j::Transaction.run do
|
11
|
+
session._query('MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r')
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'database_cleaner/neo4j/base'
|
2
|
+
require 'database_cleaner/generic/transaction'
|
3
|
+
require 'neo4j-core'
|
4
|
+
|
5
|
+
module DatabaseCleaner
|
6
|
+
module Neo4j
|
7
|
+
class Transaction
|
8
|
+
include ::DatabaseCleaner::Generic::Transaction
|
9
|
+
include ::DatabaseCleaner::Neo4j::Base
|
10
|
+
|
11
|
+
attr_accessor :tx
|
12
|
+
|
13
|
+
def start
|
14
|
+
super
|
15
|
+
rollback
|
16
|
+
self.tx = ::Neo4j::Transaction.new
|
17
|
+
end
|
18
|
+
|
19
|
+
def clean
|
20
|
+
rollback
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def rollback
|
26
|
+
if tx
|
27
|
+
tx.failure
|
28
|
+
tx.close
|
29
|
+
end
|
30
|
+
ensure
|
31
|
+
self.tx = nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,133 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: database_cleaner-neo4j
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.8.0.beta
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ernesto Tagwerker
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-01-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: database_cleaner
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.8.0.beta
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.8.0.beta
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: neo4j-core
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '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'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.16'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.16'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '10.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rspec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '3.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '3.0'
|
83
|
+
description: Strategies for cleaning databases using Neo4j. Can be used to ensure
|
84
|
+
a clean state for testing.
|
85
|
+
email:
|
86
|
+
- ernesto@ombulabs.com
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- Gemfile
|
95
|
+
- Gemfile.lock
|
96
|
+
- LICENSE.txt
|
97
|
+
- README.md
|
98
|
+
- Rakefile
|
99
|
+
- bin/console
|
100
|
+
- bin/setup
|
101
|
+
- database_cleaner-neo4j.gemspec
|
102
|
+
- lib/database_cleaner-neo4j.rb
|
103
|
+
- lib/database_cleaner/neo4j.rb
|
104
|
+
- lib/database_cleaner/neo4j/base.rb
|
105
|
+
- lib/database_cleaner/neo4j/deletion.rb
|
106
|
+
- lib/database_cleaner/neo4j/transaction.rb
|
107
|
+
- lib/database_cleaner/neo4j/truncation.rb
|
108
|
+
- lib/database_cleaner/neo4j/version.rb
|
109
|
+
homepage: https://github.com/DatabaseCleaner/database_cleaner-neo4j
|
110
|
+
licenses:
|
111
|
+
- MIT
|
112
|
+
metadata: {}
|
113
|
+
post_install_message:
|
114
|
+
rdoc_options: []
|
115
|
+
require_paths:
|
116
|
+
- lib
|
117
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
|
+
requirements:
|
124
|
+
- - ">"
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: 1.3.1
|
127
|
+
requirements: []
|
128
|
+
rubygems_version: 3.0.4
|
129
|
+
signing_key:
|
130
|
+
specification_version: 4
|
131
|
+
summary: Strategies for cleaning databases using Neo4j. Can be used to ensure a clean
|
132
|
+
state for testing.
|
133
|
+
test_files: []
|