database_cleaner-mongoid 1.99.0 → 2.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
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