database_cleaner-mongoid 1.99.0 → 2.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 184335a8a7143f77ea04568f34f476952b6cee795a85b7b688118ba5d3290481
4
- data.tar.gz: ff1a9697d1d7d23c46dd007d9200d0926edc868706da4b5d177b9ec23c4c126a
3
+ metadata.gz: '09908dd4379c7eb6ef73067bb7a72484ab2379d9288e1e558821a3c4ae406c9f'
4
+ data.tar.gz: 011f27269025764bace1cd0bfef74176a29b52de47f6f4b4988399ba7d5e91b3
5
5
  SHA512:
6
- metadata.gz: 1fe6c2de9ae24b17e03e2979ec108f5a27575be5ae601d5ff98dd9a925403ae72366a05cbad14621250e336d1972cbdf38b06a685106c9c227fb60662867dc3b
7
- data.tar.gz: 11ba6bd358a68d0ce2697137274ef865ba7484fd4d45dc0d8e40cda3f451b275592908ba7fa034cd9de955d8e9fb54ae276a7705a3ec55decebb5ced6a1c2e93
6
+ metadata.gz: 0e6e33f65c3f86b087241cc7c2a7658d15ccc89c67238698edfb27019cf54831c52b9f8398c44c74a2fae247b616222e95417a2756c33eb1e9249a83675990b4
7
+ data.tar.gz: 4867085a9058304a4e9f797228e9c8b02fdfd7eeaeda121fe74dbd4efc4284c76d152af322d88127d840b5701be0df0f851f4c48d264a89b73272073f9ebc64c
data/.gitignore CHANGED
@@ -6,6 +6,11 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /.ruby-version
10
+ /.byebug_history
11
+
12
+ /Gemfile.lock
13
+ /gemfiles/*.lock
9
14
 
10
15
  # rspec failure tracking
11
16
  .rspec_status
data/.travis.yml CHANGED
@@ -1,5 +1,24 @@
1
-
2
1
  language: ruby
2
+ services:
3
+ - mongodb
3
4
  rvm:
4
- - 2.2.9
5
- before_install: gem install bundler -v 1.17.2
5
+ - 2.5
6
+ - 2.6
7
+ - 2.7
8
+ gemfile:
9
+ - gemfiles/mongoid3.gemfile
10
+ - gemfiles/mongoid4.gemfile
11
+ - gemfiles/mongoid5.gemfile
12
+ - gemfiles/mongoid6.gemfile
13
+ - gemfiles/mongoid7.gemfile
14
+ jobs:
15
+ exclude:
16
+ # mongoid3-5 incompatible with BigDecimal changes in 2.7, it seems?
17
+ - rvm: 2.7
18
+ gemfile: gemfiles/mongoid3.gemfile
19
+ - rvm: 2.7
20
+ gemfile: gemfiles/mongoid4.gemfile
21
+ - rvm: 2.7
22
+ gemfile: gemfiles/mongoid5.gemfile
23
+ before_script:
24
+ - bin/setup
data/Appraisals ADDED
@@ -0,0 +1,20 @@
1
+ appraise "mongoid3" do
2
+ gem "mongoid", "~>3.0"
3
+ end
4
+
5
+ appraise "mongoid4" do
6
+ gem "mongoid", "~>4.0"
7
+ end
8
+
9
+ appraise "mongoid5" do
10
+ gem "mongoid", "~>5.0"
11
+ end
12
+
13
+ appraise "mongoid6" do
14
+ gem "mongoid", "~>6.0"
15
+ end
16
+
17
+ appraise "mongoid7" do
18
+ gem "mongoid", "~>7.0"
19
+ end
20
+
data/Gemfile CHANGED
@@ -1,9 +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-mongoid.gemspec
6
4
  gemspec
7
5
 
8
- gem "database_cleaner", path: "../.."
9
- gem "database_cleaner-mongo", path: ".."
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
  [![Build Status](https://travis-ci.org/DatabaseCleaner/database_cleaner-mongoid.svg?branch=master)](https://travis-ci.org/DatabaseCleaner/database_cleaner-mongoid)
4
4
  [![Code Climate](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-mongoid/badges/gpa.svg)](https://codeclimate.com/github/DatabaseCleaner/database_cleaner-mongoid)
5
+ [![codecov](https://codecov.io/gh/DatabaseCleaner/database_cleaner-mongoid/branch/master/graph/badge.svg)](https://codecov.io/gh/DatabaseCleaner/database_cleaner-mongoid)
5
6
 
6
7
  Clean your Mongoid databases with Database Cleaner.
7
8
 
@@ -18,40 +19,37 @@ end
18
19
 
19
20
  ## Supported Strategies
20
21
 
21
- <table>
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)
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> Mongoid</td>
49
- <td> <code>DatabaseCleaner[:mongoid]</code></td>
50
- <td> Multiple databases supported for Mongoid 3. Specify <code>DatabaseCleaner[:mongoid, {:db =&gt; :db_name}]</code> </td>
51
- </tr>
52
- </tbody>
53
- </table>
22
+ The mongoid adapter only has one strategy: the deletion strategy.
23
+
24
+ ## Strategy configuration options
25
+
26
+ `:only` and `:except` may take a list of collection names:
27
+
28
+ ```ruby
29
+ # Only delete the "users" collection.
30
+ DatabaseCleaner[:mongoid].strategy = :deletion, { only: ["users"] }
31
+
32
+ # Delete all collections except the "users" collection.
33
+ DatabaseCleaner[:mongoid].strategy = :deletion, { except: ["users"] }
34
+ ```
35
+
36
+ ## Adapter configuration options
37
+
38
+ `#db` defaults to the default Mongoid database, but can be specified manually in a few ways:
39
+
40
+ ```ruby
41
+ # Redis URI string:
42
+ DatabaseCleaner[:mongoid].db = :logs
43
+
44
+ # Back to default:
45
+ DatabaseCleaner[:mongoid].db = :default
46
+
47
+ # Multiple Mongoid databases can be specified:
48
+ DatabaseCleaner[:mongoid, connection: :default]
49
+ DatabaseCleaner[:mongoid, connection: :shard_1]
50
+ DatabaseCleaner[:mongoid, connection: :shard_2]
51
+ ```
54
52
 
55
53
  ## COPYRIGHT
56
54
 
57
- See [LICENSE] for details.
55
+ 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/mongoid/version"
1
+ require_relative "./lib/database_cleaner/mongoid/version"
5
2
 
6
3
  Gem::Specification.new do |spec|
7
4
  spec.name = "database_cleaner-mongoid"
8
5
  spec.version = DatabaseCleaner::Mongoid::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 Mongoid. Can be used to ensure a clean state for testing."
@@ -21,10 +18,11 @@ 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", "~> 1.99.0"
21
+ spec.add_dependency "database_cleaner-core", "~>2.0.0.beta2"
25
22
  spec.add_dependency "mongoid"
26
23
 
27
- spec.add_development_dependency "bundler", "~> 1.16"
28
- spec.add_development_dependency "rake", "~> 10.0"
29
- spec.add_development_dependency "rspec", "~> 3.0"
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "appraisal"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "rspec"
30
28
  end
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_RETRY: "1"
@@ -0,0 +1,14 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
6
+ gem "byebug"
7
+ gem "mongoid", "~>3.0"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
13
+
14
+ gemspec path: "../"
@@ -0,0 +1,14 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
6
+ gem "byebug"
7
+ gem "mongoid", "~>4.0"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
13
+
14
+ gemspec path: "../"
@@ -0,0 +1,14 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
6
+ gem "byebug"
7
+ gem "mongoid", "~>5.0"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
13
+
14
+ gemspec path: "../"
@@ -0,0 +1,14 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
6
+ gem "byebug"
7
+ gem "mongoid", "~>6.0"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
13
+
14
+ gemspec path: "../"
@@ -0,0 +1,14 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "database_cleaner-core", git: "https://github.com/DatabaseCleaner/database_cleaner"
6
+ gem "byebug"
7
+ gem "mongoid", "~>7.0"
8
+
9
+ group :test do
10
+ gem "simplecov", require: false
11
+ gem "codecov", require: false
12
+ end
13
+
14
+ gemspec path: "../"
@@ -1,11 +1,5 @@
1
1
  require "database_cleaner/mongoid/version"
2
- require "database_cleaner"
3
- require "database_cleaner/mongoid/truncation"
2
+ require "database_cleaner/core"
4
3
  require "database_cleaner/mongoid/deletion"
5
4
 
6
- module DatabaseCleaner::Mongoid
7
- def self.default_strategy
8
- :truncation
9
- end
10
- end
11
-
5
+ DatabaseCleaner[:mongoid].strategy = :deletion
@@ -1,10 +1,30 @@
1
- require 'database_cleaner/mongoid/truncation'
1
+ require 'database_cleaner/strategy'
2
+ require 'database_cleaner/mongoid/mongoid4_mixin'
3
+ require 'database_cleaner/mongoid/mongoid5_mixin'
4
+ require 'mongoid/version'
2
5
 
3
6
  module DatabaseCleaner
4
7
  module Mongoid
5
- class Deletion < Truncation
8
+ class Deletion < Strategy
9
+ def initialize only: [], except: []
10
+ @only = only
11
+ @except = except
12
+ end
13
+
14
+ if ::Mongoid::VERSION < '5'
15
+ include ::DatabaseCleaner::Mongoid::Mongoid4Mixin
16
+ else
17
+ include ::DatabaseCleaner::Mongoid::Mongoid5Mixin
18
+ end
19
+
20
+ private
21
+
22
+ def collections_to_delete
23
+ only = @only.any? ? @only : collections
24
+ (only - @except).map do |name|
25
+ database[name].find
26
+ end
27
+ end
6
28
  end
7
29
  end
8
30
  end
9
-
10
-
@@ -0,0 +1,30 @@
1
+ module DatabaseCleaner
2
+ module Mongoid
3
+ module Mongoid4Mixin
4
+ def clean
5
+ collections_to_delete.each(&:remove_all)
6
+ wait_for_removals_to_finish
7
+ end
8
+
9
+ private
10
+
11
+ def database
12
+ ::Mongoid.default_session
13
+ end
14
+
15
+ def collections
16
+ if db != :default
17
+ database.use(db)
18
+ end
19
+
20
+ database.command(listCollections: 1, filter: { 'name' => { '$not' => /.?system\.|\$/ } })['cursor']['firstBatch'].map do |collection|
21
+ collection['name']
22
+ end
23
+ end
24
+
25
+ def wait_for_removals_to_finish
26
+ database.command(getlasterror: 1)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,27 @@
1
+ module DatabaseCleaner
2
+ module Mongoid
3
+ module Mongoid5Mixin
4
+ def clean
5
+ collections_to_delete.each(&:delete_many)
6
+ end
7
+
8
+ private
9
+
10
+ def database
11
+ if @db.nil? || @db == :default
12
+ ::Mongoid::Clients.default
13
+ else
14
+ ::Mongoid::Clients.with_name(@db)
15
+ end
16
+ end
17
+
18
+ def collections
19
+ if db != :default
20
+ database.use(db)
21
+ end
22
+
23
+ database.collections.collect { |c| c.namespace.split('.',2)[1] }
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,5 +1,5 @@
1
1
  module DatabaseCleaner
2
2
  module Mongoid
3
- VERSION = "1.99.0"
3
+ VERSION = "2.0.0.beta"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,29 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database_cleaner-mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.99.0
4
+ version: 2.0.0.beta
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: 2021-01-31 00:00:00.000000000 Z
12
+ date: 2020-05-30 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: 1.99.0
20
+ version: 2.0.0.beta2
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: 1.99.0
27
+ version: 2.0.0.beta2
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: mongoid
29
30
  requirement: !ruby/object:Gem::Requirement
@@ -42,44 +43,58 @@ dependencies:
42
43
  name: bundler
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
- - - "~>"
46
+ - - ">="
46
47
  - !ruby/object:Gem::Version
47
- version: '1.16'
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: '1.16'
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: appraisal
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
55
70
  - !ruby/object:Gem::Dependency
56
71
  name: rake
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - "~>"
74
+ - - ">="
60
75
  - !ruby/object:Gem::Version
61
- version: '10.0'
76
+ version: '0'
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - "~>"
81
+ - - ">="
67
82
  - !ruby/object:Gem::Version
68
- version: '10.0'
83
+ version: '0'
69
84
  - !ruby/object:Gem::Dependency
70
85
  name: rspec
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
- - - "~>"
88
+ - - ">="
74
89
  - !ruby/object:Gem::Version
75
- version: '3.0'
90
+ version: '0'
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
- - - "~>"
95
+ - - ">="
81
96
  - !ruby/object:Gem::Version
82
- version: '3.0'
97
+ version: '0'
83
98
  description: Strategies for cleaning databases using Mongoid. Can be used to ensure
84
99
  a clean state for testing.
85
100
  email:
@@ -91,22 +106,25 @@ files:
91
106
  - ".gitignore"
92
107
  - ".rspec"
93
108
  - ".travis.yml"
109
+ - Appraisals
94
110
  - Gemfile
95
- - Gemfile.lock
96
111
  - LICENSE.txt
97
112
  - README.md
98
113
  - Rakefile
99
114
  - bin/console
100
115
  - bin/setup
101
116
  - database_cleaner-mongoid.gemspec
117
+ - gemfiles/.bundle/config
118
+ - gemfiles/mongoid3.gemfile
119
+ - gemfiles/mongoid4.gemfile
120
+ - gemfiles/mongoid5.gemfile
121
+ - gemfiles/mongoid6.gemfile
122
+ - gemfiles/mongoid7.gemfile
102
123
  - lib/database_cleaner-mongoid.rb
103
124
  - lib/database_cleaner/mongoid.rb
104
- - lib/database_cleaner/mongoid/base.rb
105
125
  - lib/database_cleaner/mongoid/deletion.rb
106
- - lib/database_cleaner/mongoid/mongo1_truncation_mixin.rb
107
- - lib/database_cleaner/mongoid/mongo2_truncation_mixin.rb
108
- - lib/database_cleaner/mongoid/mongoid_truncation_mixin.rb
109
- - lib/database_cleaner/mongoid/truncation.rb
126
+ - lib/database_cleaner/mongoid/mongoid4_mixin.rb
127
+ - lib/database_cleaner/mongoid/mongoid5_mixin.rb
110
128
  - lib/database_cleaner/mongoid/version.rb
111
129
  homepage: https://github.com/DatabaseCleaner/database_cleaner-mongoid
112
130
  licenses:
@@ -123,11 +141,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
123
141
  version: '0'
124
142
  required_rubygems_version: !ruby/object:Gem::Requirement
125
143
  requirements:
126
- - - ">="
144
+ - - ">"
127
145
  - !ruby/object:Gem::Version
128
- version: '0'
146
+ version: 1.3.1
129
147
  requirements: []
130
- rubygems_version: 3.0.8
148
+ rubygems_version: 3.0.3
131
149
  signing_key:
132
150
  specification_version: 4
133
151
  summary: Strategies for cleaning databases using Mongoid. Can be used to ensure a
data/Gemfile.lock DELETED
@@ -1,71 +0,0 @@
1
- PATH
2
- remote: ../..
3
- specs:
4
- database_cleaner (1.99.0)
5
-
6
- PATH
7
- remote: ..
8
- specs:
9
- database_cleaner-mongo (1.99.0)
10
- database_cleaner (~> 1.99.0)
11
- mongo
12
-
13
- PATH
14
- remote: .
15
- specs:
16
- database_cleaner-mongoid (1.99.0)
17
- database_cleaner (~> 1.99.0)
18
- mongoid
19
-
20
- GEM
21
- remote: https://rubygems.org/
22
- specs:
23
- activemodel (5.2.4.3)
24
- activesupport (= 5.2.4.3)
25
- activesupport (5.2.4.3)
26
- concurrent-ruby (~> 1.0, >= 1.0.2)
27
- i18n (>= 0.7, < 2)
28
- minitest (~> 5.1)
29
- tzinfo (~> 1.1)
30
- bson (4.5.0)
31
- concurrent-ruby (1.1.6)
32
- diff-lcs (1.3)
33
- i18n (1.5.1)
34
- concurrent-ruby (~> 1.0)
35
- minitest (5.14.1)
36
- mongo (2.10.2)
37
- bson (>= 4.4.2, < 5.0.0)
38
- mongoid (7.0.7)
39
- activemodel (>= 5.1, < 6.1)
40
- mongo (>= 2.7.0, < 3.0.0)
41
- rake (10.4.2)
42
- rspec (3.7.0)
43
- rspec-core (~> 3.7.0)
44
- rspec-expectations (~> 3.7.0)
45
- rspec-mocks (~> 3.7.0)
46
- rspec-core (3.7.1)
47
- rspec-support (~> 3.7.0)
48
- rspec-expectations (3.7.0)
49
- diff-lcs (>= 1.2.0, < 2.0)
50
- rspec-support (~> 3.7.0)
51
- rspec-mocks (3.7.0)
52
- diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.7.0)
54
- rspec-support (3.7.1)
55
- thread_safe (0.3.6)
56
- tzinfo (1.2.7)
57
- thread_safe (~> 0.1)
58
-
59
- PLATFORMS
60
- ruby
61
-
62
- DEPENDENCIES
63
- bundler (~> 1.16)
64
- database_cleaner!
65
- database_cleaner-mongo!
66
- database_cleaner-mongoid!
67
- rake (~> 10.0)
68
- rspec (~> 3.0)
69
-
70
- BUNDLED WITH
71
- 1.17.3
@@ -1,20 +0,0 @@
1
- require 'database_cleaner/generic/base'
2
- module DatabaseCleaner
3
- module Mongoid
4
- def self.available_strategies
5
- %w[truncation deletion]
6
- end
7
-
8
- module Base
9
- include ::DatabaseCleaner::Generic::Base
10
-
11
- def db=(desired_db)
12
- @db = desired_db
13
- end
14
-
15
- def db
16
- @db || :default
17
- end
18
- end
19
- end
20
- end
@@ -1,26 +0,0 @@
1
- module DatabaseCleaner
2
- module Mongoid
3
- module Mongo1TruncationMixin
4
- def clean
5
- if @only
6
- collections.each { |c| c.send(truncate_method_name) if @only.include?(c.name) }
7
- else
8
- collections.each { |c| c.send(truncate_method_name) unless @tables_to_exclude.include?(c.name) }
9
- end
10
- true
11
- end
12
-
13
- private
14
-
15
- def collections
16
- database.collections.select { |c| c.name !~ /^system\./ }
17
- end
18
-
19
- def truncate_method_name
20
- # This constant only exists in the 2.x series.
21
- defined?(::Mongo::VERSION) ? :delete_many : :remove
22
- end
23
- end
24
- end
25
- end
26
-
@@ -1,38 +0,0 @@
1
- module DatabaseCleaner
2
- module Mongoid
3
- module Mongo2TruncationMixin
4
- def clean
5
- if @only
6
- collections.each { |c| database[c].find.delete_many if @only.include?(c) }
7
- else
8
- collections.each { |c| database[c].find.delete_many unless @tables_to_exclude.include?(c) }
9
- end
10
- true
11
- end
12
-
13
- private
14
-
15
- def database
16
- if @db.nil? || @db == :default
17
- ::Mongoid::Clients.default
18
- else
19
- ::Mongoid::Clients.with_name(@db)
20
- end
21
- end
22
-
23
- def collections
24
- if db != :default
25
- database.use(db)
26
- end
27
-
28
- database.collections.collect { |c| c.namespace.split('.',2)[1] }
29
-
30
- # database['system.namespaces'].find(:name => { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
31
- # _, name = collection['name'].split('.', 2)
32
- # name
33
- # end
34
- end
35
- end
36
- end
37
- end
38
-
@@ -1,65 +0,0 @@
1
- require 'database_cleaner/generic/base'
2
- require 'database_cleaner/generic/truncation'
3
-
4
- module DatabaseCleaner
5
- module Mongoid
6
- module MongoidTruncationMixin
7
- include ::DatabaseCleaner::Generic::Base
8
- include ::DatabaseCleaner::Generic::Truncation
9
-
10
- def db=(desired_db)
11
- @db = desired_db
12
- end
13
-
14
- def db
15
- @db ||= :default
16
- end
17
-
18
- def host_port=(desired_host)
19
- @host = desired_host
20
- end
21
-
22
- def host
23
- @host ||= '127.0.0.1:27017'
24
- end
25
-
26
- def db_version
27
- @db_version ||= session.command('buildinfo' => 1)['version']
28
- end
29
-
30
- def clean
31
- if @only
32
- collections.each { |c| session[c].find.remove_all if @only.include?(c) }
33
- else
34
- collections.each { |c| session[c].find.remove_all unless @tables_to_exclude.include?(c) }
35
- end
36
- wait_for_removals_to_finish
37
- true
38
- end
39
-
40
- private
41
-
42
- def collections
43
- if db != :default
44
- session.use(db)
45
- end
46
-
47
- if db_version.split('.').first.to_i >= 3
48
- session.command(listCollections: 1, filter: { 'name' => { '$not' => /.?system\.|\$/ } })['cursor']['firstBatch'].map do |collection|
49
- collection['name']
50
- end
51
- else
52
- session['system.namespaces'].find(name: { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
53
- _, name = collection['name'].split('.', 2)
54
- name
55
- end
56
- end
57
- end
58
-
59
- def wait_for_removals_to_finish
60
- session.command(getlasterror: 1)
61
- end
62
- end
63
- end
64
- end
65
-
@@ -1,49 +0,0 @@
1
- require 'database_cleaner/mongoid/base'
2
- require 'database_cleaner/generic/truncation'
3
- require 'database_cleaner/mongoid/mongo1_truncation_mixin'
4
- require 'database_cleaner/mongoid/mongo2_truncation_mixin'
5
- require 'database_cleaner/mongoid/mongoid_truncation_mixin'
6
- require 'mongoid/version'
7
-
8
- module DatabaseCleaner
9
- module Mongoid
10
- class Truncation
11
- include ::DatabaseCleaner::Mongoid::Base
12
- include ::DatabaseCleaner::Generic::Truncation
13
-
14
- if ::Mongoid::VERSION < '3'
15
-
16
- include ::DatabaseCleaner::Mongoid::Mongo1TruncationMixin
17
-
18
- private
19
-
20
- def database
21
- ::Mongoid.database
22
- end
23
-
24
- elsif ::Mongoid::VERSION < '5'
25
-
26
- include ::DatabaseCleaner::Mongoid::MongoidTruncationMixin
27
-
28
- private
29
-
30
- def session
31
- ::Mongoid::VERSION > "5.0.0" ? ::Mongoid.default_client : ::Mongoid.default_session
32
- end
33
-
34
- def database
35
- if not(@db.nil? or @db == :default)
36
- ::Mongoid.databases[@db]
37
- else
38
- ::Mongoid.database
39
- end
40
- end
41
-
42
- else
43
-
44
- include ::DatabaseCleaner::Mongoid::Mongo2TruncationMixin
45
-
46
- end
47
- end
48
- end
49
- end