database_cleaner-mongo 1.8.0 → 2.0.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.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +7 -3
- data/Gemfile +8 -3
- data/README.md +4 -31
- data/database_cleaner-mongo.gemspec +7 -10
- data/lib/database_cleaner/mongo.rb +3 -8
- data/lib/database_cleaner/mongo/deletion.rb +37 -0
- data/lib/database_cleaner/mongo/version.rb +1 -1
- metadata +24 -26
- data/Gemfile.lock +0 -46
- data/lib/database_cleaner/mongo/base.rb +0 -16
- data/lib/database_cleaner/mongo/truncation.rb +0 -62
- data/lib/database_cleaner/mongo/truncation_mixin.rb +0 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50993a8f7a76e7ef96b633e916494da06912364cda5becba282eef381bb7d4f2
|
4
|
+
data.tar.gz: 4e3e3b23544c3518c64a3609f71a486601314554e9c023d1149fe2275582b800
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e4b3372b4c140cc427966a10f5b70c8568104887f2ceeadd2abfb647a1f970bf0f8e234c2ecb8a8d3fc8ee279c27e5c0ee78db987234ba3213ce80b19a5031e9
|
7
|
+
data.tar.gz: acf580102d156bcea5b16c27f44b11026fe4708d97f0d7839f34863870ed99e84673ed1b91fb9d719d3d42128f1bf0040a9a8995588eccd8d04005b4364fca28
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
source "https://rubygems.org"
|
2
2
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
4
|
-
|
5
3
|
# Specify your gem's dependencies in database_cleaner-mongo.gemspec
|
6
4
|
gemspec
|
7
5
|
|
8
|
-
gem "database_cleaner",
|
6
|
+
gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
|
7
|
+
|
8
|
+
gem "byebug"
|
9
|
+
|
10
|
+
group :test do
|
11
|
+
gem "simplecov", require: false
|
12
|
+
gem "codecov", require: false
|
13
|
+
end
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://travis-ci.org/DatabaseCleaner/database_cleaner-mongo)
|
4
4
|
[](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-mongo)
|
5
|
+
[](https://codecov.io/gh/DatabaseCleaner/database_cleaner-mongo)
|
5
6
|
|
6
7
|
Clean your Mongo databases with Database Cleaner.
|
7
8
|
|
@@ -18,40 +19,12 @@ end
|
|
18
19
|
|
19
20
|
## Supported Strategies
|
20
21
|
|
21
|
-
|
22
|
-
<tbody>
|
23
|
-
<tr>
|
24
|
-
<th>Truncation</th>
|
25
|
-
<th>Transaction</th>
|
26
|
-
<th>Deletion</th>
|
27
|
-
</tr>
|
28
|
-
<tr>
|
29
|
-
<td> <b>Yes</b></td>
|
30
|
-
<td> No</td>
|
31
|
-
<td> No</td>
|
32
|
-
</tr>
|
33
|
-
</tbody>
|
34
|
-
</table>
|
35
|
-
|
36
|
-
(Default strategy is denoted in bold)
|
22
|
+
The mongo adapter only has one strategy: the deletion strategy.
|
37
23
|
|
38
24
|
## Configuration options
|
39
25
|
|
40
|
-
|
41
|
-
<tbody>
|
42
|
-
<tr>
|
43
|
-
<th>ORM</th>
|
44
|
-
<th>How to access</th>
|
45
|
-
<th>Notes</th>
|
46
|
-
</tr>
|
47
|
-
<tr>
|
48
|
-
<td> Mongo</td>
|
49
|
-
<td> <code>DatabaseCleaner[:mongo]</code></td>
|
50
|
-
<td> </td>
|
51
|
-
</tr>
|
52
|
-
</tbody>
|
53
|
-
</table>
|
26
|
+
The deletion strategy has no options.
|
54
27
|
|
55
28
|
## COPYRIGHT
|
56
29
|
|
57
|
-
See [LICENSE] for details.
|
30
|
+
See [LICENSE](LICENSE) for details.
|
@@ -1,12 +1,9 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path("../lib", __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require "database_cleaner/mongo/version"
|
1
|
+
require_relative "./lib/database_cleaner/mongo/version"
|
5
2
|
|
6
3
|
Gem::Specification.new do |spec|
|
7
4
|
spec.name = "database_cleaner-mongo"
|
8
5
|
spec.version = DatabaseCleaner::Mongo::VERSION
|
9
|
-
spec.authors = ["Ernesto Tagwerker"]
|
6
|
+
spec.authors = ["Ernesto Tagwerker", "Micah Geisel"]
|
10
7
|
spec.email = ["ernesto@ombulabs.com"]
|
11
8
|
|
12
9
|
spec.summary = "Strategies for cleaning databases using Mongo. Can be used to ensure a clean state for testing."
|
@@ -21,10 +18,10 @@ Gem::Specification.new do |spec|
|
|
21
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
22
19
|
spec.require_paths = ["lib"]
|
23
20
|
|
24
|
-
spec.add_dependency "database_cleaner", "~>
|
25
|
-
spec.add_dependency "mongo"
|
21
|
+
spec.add_dependency "database_cleaner-core", "~>2.0.0"
|
22
|
+
spec.add_dependency "mongo", "~>2.0"
|
26
23
|
|
27
|
-
spec.add_development_dependency "bundler"
|
28
|
-
spec.add_development_dependency "rake"
|
29
|
-
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_development_dependency "bundler"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "rspec"
|
30
27
|
end
|
@@ -1,10 +1,5 @@
|
|
1
1
|
require 'database_cleaner/mongo/version'
|
2
|
-
require 'database_cleaner'
|
3
|
-
require 'database_cleaner/mongo/
|
4
|
-
|
5
|
-
module DatabaseCleaner::Mongo
|
6
|
-
def self.default_strategy
|
7
|
-
:truncation
|
8
|
-
end
|
9
|
-
end
|
2
|
+
require 'database_cleaner/core'
|
3
|
+
require 'database_cleaner/mongo/deletion'
|
10
4
|
|
5
|
+
DatabaseCleaner[:mongo].strategy = :deletion
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'database_cleaner/strategy'
|
2
|
+
require 'database_cleaner/deprecation'
|
3
|
+
require 'mongo'
|
4
|
+
|
5
|
+
module DatabaseCleaner
|
6
|
+
module Mongo
|
7
|
+
class Deletion < Strategy
|
8
|
+
def initialize only: [], except: [], cache_tables: nil
|
9
|
+
@only = only
|
10
|
+
@except = except
|
11
|
+
if !cache_tables.nil?
|
12
|
+
DatabaseCleaner.deprecate "The mongo adapter's :cache_tables option has no effect, and will be removed in database_cleaner-mongo 3.0."
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def db
|
17
|
+
@db || raise("You have not specified a database. (see Mongo::Database)")
|
18
|
+
end
|
19
|
+
|
20
|
+
def clean
|
21
|
+
collections_to_delete.each(&:delete_many)
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def collections_to_delete
|
27
|
+
collections.select do |c|
|
28
|
+
(@only.none? || @only.include?(c.name)) && !@except.include?(c.name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def collections
|
33
|
+
db.collections.select { |c| c.name !~ /^system\./ }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,85 +1,86 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner-mongo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ernesto Tagwerker
|
8
|
+
- Micah Geisel
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2021-01-31 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
|
-
name: database_cleaner
|
15
|
+
name: database_cleaner-core
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
18
|
- - "~>"
|
18
19
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
20
|
+
version: 2.0.0
|
20
21
|
type: :runtime
|
21
22
|
prerelease: false
|
22
23
|
version_requirements: !ruby/object:Gem::Requirement
|
23
24
|
requirements:
|
24
25
|
- - "~>"
|
25
26
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
+
version: 2.0.0
|
27
28
|
- !ruby/object:Gem::Dependency
|
28
29
|
name: mongo
|
29
30
|
requirement: !ruby/object:Gem::Requirement
|
30
31
|
requirements:
|
31
|
-
- - "
|
32
|
+
- - "~>"
|
32
33
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
+
version: '2.0'
|
34
35
|
type: :runtime
|
35
36
|
prerelease: false
|
36
37
|
version_requirements: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
|
-
- - "
|
39
|
+
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
+
version: '2.0'
|
41
42
|
- !ruby/object:Gem::Dependency
|
42
43
|
name: bundler
|
43
44
|
requirement: !ruby/object:Gem::Requirement
|
44
45
|
requirements:
|
45
|
-
- - "
|
46
|
+
- - ">="
|
46
47
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
+
version: '0'
|
48
49
|
type: :development
|
49
50
|
prerelease: false
|
50
51
|
version_requirements: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
|
-
- - "
|
53
|
+
- - ">="
|
53
54
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
55
|
+
version: '0'
|
55
56
|
- !ruby/object:Gem::Dependency
|
56
57
|
name: rake
|
57
58
|
requirement: !ruby/object:Gem::Requirement
|
58
59
|
requirements:
|
59
|
-
- - "
|
60
|
+
- - ">="
|
60
61
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
62
|
+
version: '0'
|
62
63
|
type: :development
|
63
64
|
prerelease: false
|
64
65
|
version_requirements: !ruby/object:Gem::Requirement
|
65
66
|
requirements:
|
66
|
-
- - "
|
67
|
+
- - ">="
|
67
68
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
69
|
+
version: '0'
|
69
70
|
- !ruby/object:Gem::Dependency
|
70
71
|
name: rspec
|
71
72
|
requirement: !ruby/object:Gem::Requirement
|
72
73
|
requirements:
|
73
|
-
- - "
|
74
|
+
- - ">="
|
74
75
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
+
version: '0'
|
76
77
|
type: :development
|
77
78
|
prerelease: false
|
78
79
|
version_requirements: !ruby/object:Gem::Requirement
|
79
80
|
requirements:
|
80
|
-
- - "
|
81
|
+
- - ">="
|
81
82
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
83
|
+
version: '0'
|
83
84
|
description: Strategies for cleaning databases using Mongo. Can be used to ensure
|
84
85
|
a clean state for testing.
|
85
86
|
email:
|
@@ -92,7 +93,6 @@ files:
|
|
92
93
|
- ".rspec"
|
93
94
|
- ".travis.yml"
|
94
95
|
- Gemfile
|
95
|
-
- Gemfile.lock
|
96
96
|
- LICENSE.txt
|
97
97
|
- README.md
|
98
98
|
- Rakefile
|
@@ -101,9 +101,7 @@ files:
|
|
101
101
|
- database_cleaner-mongo.gemspec
|
102
102
|
- lib/database_cleaner-mongo.rb
|
103
103
|
- lib/database_cleaner/mongo.rb
|
104
|
-
- lib/database_cleaner/mongo/
|
105
|
-
- lib/database_cleaner/mongo/truncation.rb
|
106
|
-
- lib/database_cleaner/mongo/truncation_mixin.rb
|
104
|
+
- lib/database_cleaner/mongo/deletion.rb
|
107
105
|
- lib/database_cleaner/mongo/version.rb
|
108
106
|
homepage: https://github.com/DatabaseCleaner/database_cleaner-mongo
|
109
107
|
licenses:
|
@@ -124,7 +122,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
122
|
- !ruby/object:Gem::Version
|
125
123
|
version: '0'
|
126
124
|
requirements: []
|
127
|
-
rubygems_version: 3.0.
|
125
|
+
rubygems_version: 3.0.3
|
128
126
|
signing_key:
|
129
127
|
specification_version: 4
|
130
128
|
summary: Strategies for cleaning databases using Mongo. Can be used to ensure a clean
|
data/Gemfile.lock
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../..
|
3
|
-
specs:
|
4
|
-
database_cleaner (1.8.0)
|
5
|
-
|
6
|
-
PATH
|
7
|
-
remote: .
|
8
|
-
specs:
|
9
|
-
database_cleaner-mongo (1.8.0)
|
10
|
-
database_cleaner (~> 1.8.0)
|
11
|
-
mongo
|
12
|
-
|
13
|
-
GEM
|
14
|
-
remote: https://rubygems.org/
|
15
|
-
specs:
|
16
|
-
bson (1.12.5)
|
17
|
-
diff-lcs (1.3)
|
18
|
-
mongo (1.12.5)
|
19
|
-
bson (= 1.12.5)
|
20
|
-
rake (10.4.2)
|
21
|
-
rspec (3.7.0)
|
22
|
-
rspec-core (~> 3.7.0)
|
23
|
-
rspec-expectations (~> 3.7.0)
|
24
|
-
rspec-mocks (~> 3.7.0)
|
25
|
-
rspec-core (3.7.1)
|
26
|
-
rspec-support (~> 3.7.0)
|
27
|
-
rspec-expectations (3.7.0)
|
28
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
29
|
-
rspec-support (~> 3.7.0)
|
30
|
-
rspec-mocks (3.7.0)
|
31
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
32
|
-
rspec-support (~> 3.7.0)
|
33
|
-
rspec-support (3.7.1)
|
34
|
-
|
35
|
-
PLATFORMS
|
36
|
-
ruby
|
37
|
-
|
38
|
-
DEPENDENCIES
|
39
|
-
bundler (~> 1.16)
|
40
|
-
database_cleaner!
|
41
|
-
database_cleaner-mongo!
|
42
|
-
rake (~> 10.0)
|
43
|
-
rspec (~> 3.0)
|
44
|
-
|
45
|
-
BUNDLED WITH
|
46
|
-
1.17.2
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module DatabaseCleaner
|
2
|
-
module Mongo
|
3
|
-
def self.available_strategies
|
4
|
-
%w[truncation]
|
5
|
-
end
|
6
|
-
module Base
|
7
|
-
def db=(desired_db)
|
8
|
-
@db = desired_db
|
9
|
-
end
|
10
|
-
|
11
|
-
def db
|
12
|
-
@db || raise("You have not specified a database. (see Mongo::Database)")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
require 'database_cleaner/mongo/base'
|
2
|
-
require 'database_cleaner/generic/truncation'
|
3
|
-
require 'database_cleaner/mongo/truncation_mixin'
|
4
|
-
module DatabaseCleaner
|
5
|
-
module Mongo
|
6
|
-
class Truncation
|
7
|
-
include ::DatabaseCleaner::Generic::Truncation
|
8
|
-
include TruncationMixin
|
9
|
-
include Base
|
10
|
-
private
|
11
|
-
|
12
|
-
def database
|
13
|
-
db
|
14
|
-
end
|
15
|
-
|
16
|
-
def collections_cache
|
17
|
-
@@collections_cache ||= {}
|
18
|
-
end
|
19
|
-
|
20
|
-
def mongoid_collection_names
|
21
|
-
@@mongoid_collection_names ||= Hash.new{|h,k| h[k]=[]}.tap do |names|
|
22
|
-
ObjectSpace.each_object(Class) do |klass|
|
23
|
-
(names[klass.db.name] << klass.collection_name) if valid_collection_name?(klass)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def not_caching(db_name, list)
|
29
|
-
@@not_caching ||= {}
|
30
|
-
|
31
|
-
unless @@not_caching.has_key?(db_name)
|
32
|
-
@@not_caching[db_name] = true
|
33
|
-
|
34
|
-
puts "Not caching collection names for db #{db_name}. Missing these from models: #{list}"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def collections
|
39
|
-
return collections_cache[database.name] if collections_cache.has_key?(database.name)
|
40
|
-
db_collections = database.collections.select { |c| c.name !~ /^system\./ }
|
41
|
-
|
42
|
-
missing_collections = mongoid_collection_names[database.name] - db_collections.map(&:name)
|
43
|
-
|
44
|
-
if missing_collections.empty?
|
45
|
-
collections_cache[database.name] = db_collections
|
46
|
-
else
|
47
|
-
not_caching(database.name, missing_collections)
|
48
|
-
end
|
49
|
-
|
50
|
-
db_collections
|
51
|
-
end
|
52
|
-
|
53
|
-
private
|
54
|
-
|
55
|
-
def valid_collection_name?(klass)
|
56
|
-
klass.ancestors.map(&:to_s).include?('Mongoid::Document') &&
|
57
|
-
!klass.embedded &&
|
58
|
-
!klass.collection_name.empty?
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module DatabaseCleaner
|
2
|
-
module Mongo
|
3
|
-
module TruncationMixin
|
4
|
-
|
5
|
-
def clean
|
6
|
-
if @only
|
7
|
-
collections.each { |c| c.send(truncate_method_name) if @only.include?(c.name) }
|
8
|
-
else
|
9
|
-
collections.each { |c| c.send(truncate_method_name) unless @tables_to_exclude.include?(c.name) }
|
10
|
-
end
|
11
|
-
true
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def collections
|
17
|
-
database.collections.select { |c| c.name !~ /^system\./ }
|
18
|
-
end
|
19
|
-
|
20
|
-
def truncate_method_name
|
21
|
-
# This constant only exists in the 2.x series.
|
22
|
-
defined?(::Mongo::VERSION) ? :delete_many : :remove
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|