database_cleaner 0.6.1.rc → 0.6.1.rc2
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.
data/History.txt
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
* Add a NullStrategy. (GH-6 Ben Mabey)
|
6
6
|
|
7
7
|
=== Bugfixes
|
8
|
+
* Mongo colletion indexes are dropped for collections being removed. (GH-41 Ben Mabey)
|
8
9
|
* Exclude database views from tables_to_truncate, if the connection adapter
|
9
10
|
supports reading from the ANSI standard information_schema views. (GH-25 Samer Abukhait)
|
10
11
|
* ORM types can be specified in string format and not mysteriously blowup. (GH-26 Ben Mabey)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module DatabaseCleaner
|
2
|
+
module Mongo
|
3
|
+
module Truncation
|
4
|
+
|
5
|
+
def clean
|
6
|
+
if @only
|
7
|
+
collections.each { |c| remove(c) if @only.include?(c.name) }
|
8
|
+
else
|
9
|
+
collections.each { |c| remove(c) unless @tables_to_exclude.include?(c.name) }
|
10
|
+
end
|
11
|
+
true
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def remove(collection)
|
17
|
+
collection.drop_indexes
|
18
|
+
collection.remove
|
19
|
+
end
|
20
|
+
|
21
|
+
def collections
|
22
|
+
database.collections.select { |c| c.name !~ /^system/ }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,35 +1,18 @@
|
|
1
1
|
require 'database_cleaner/mongo_mapper/base'
|
2
2
|
require 'database_cleaner/generic/truncation'
|
3
|
+
require 'database_cleaner/mongo/truncation'
|
3
4
|
|
4
5
|
module DatabaseCleaner
|
5
6
|
module MongoMapper
|
6
7
|
class Truncation
|
7
8
|
include ::DatabaseCleaner::MongoMapper::Base
|
8
9
|
include ::DatabaseCleaner::Generic::Truncation
|
9
|
-
|
10
|
-
|
11
|
-
if @only
|
12
|
-
collections.each { |c| c.remove if @only.include?(c.name) }
|
13
|
-
elsif @tables_to_exclude
|
14
|
-
collections.each { |c| c.remove unless @tables_to_exclude.include?(c.name) }
|
15
|
-
else
|
16
|
-
collections.each { |c| c.remove }
|
17
|
-
end
|
18
|
-
true
|
19
|
-
end
|
20
|
-
|
10
|
+
include ::DatabaseCleaner::Mongo::Truncation
|
11
|
+
|
21
12
|
private
|
22
13
|
|
23
|
-
def connection
|
24
|
-
::MongoMapper.connection
|
25
|
-
end
|
26
|
-
|
27
|
-
def collections
|
28
|
-
connection.db(database).collections.select { |c| c.name !~ /^system/ }
|
29
|
-
end
|
30
|
-
|
31
14
|
def database
|
32
|
-
::MongoMapper.database
|
15
|
+
::MongoMapper.database
|
33
16
|
end
|
34
17
|
end
|
35
18
|
end
|
@@ -1,25 +1,18 @@
|
|
1
1
|
require 'database_cleaner/mongoid/base'
|
2
2
|
require 'database_cleaner/generic/truncation'
|
3
|
+
require 'database_cleaner/mongo/truncation'
|
3
4
|
|
4
5
|
module DatabaseCleaner
|
5
6
|
module Mongoid
|
6
7
|
class Truncation
|
7
8
|
include ::DatabaseCleaner::Mongoid::Base
|
8
9
|
include ::DatabaseCleaner::Generic::Truncation
|
9
|
-
|
10
|
-
def clean
|
11
|
-
if @only
|
12
|
-
collections.each { |c| c.remove if @only.include?(c.name) }
|
13
|
-
else
|
14
|
-
collections.each { |c| c.remove unless @tables_to_exclude.include?(c.name) }
|
15
|
-
end
|
16
|
-
true
|
17
|
-
end
|
10
|
+
include ::DatabaseCleaner::Mongo::Truncation
|
18
11
|
|
19
12
|
private
|
20
13
|
|
21
|
-
def
|
22
|
-
::Mongoid.database
|
14
|
+
def database
|
15
|
+
::Mongoid.database
|
23
16
|
end
|
24
17
|
|
25
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: database_cleaner
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 977940603
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 6
|
9
9
|
- 1
|
10
|
-
-
|
11
|
-
version: 0.6.1.
|
10
|
+
- rc2
|
11
|
+
version: 0.6.1.rc2
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Ben Mabey
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-01-
|
19
|
+
date: 2011-01-26 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies: []
|
22
22
|
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- lib/database_cleaner/data_mapper/truncation.rb
|
85
85
|
- lib/database_cleaner/generic/base.rb
|
86
86
|
- lib/database_cleaner/generic/truncation.rb
|
87
|
+
- lib/database_cleaner/mongo/truncation.rb
|
87
88
|
- lib/database_cleaner/mongo_mapper/base.rb
|
88
89
|
- lib/database_cleaner/mongo_mapper/truncation.rb
|
89
90
|
- lib/database_cleaner/mongoid/base.rb
|
@@ -103,7 +104,6 @@ files:
|
|
103
104
|
- spec/database_cleaner/mongo_mapper/base_spec.rb
|
104
105
|
- spec/database_cleaner/mongo_mapper/mongo_examples.rb
|
105
106
|
- spec/database_cleaner/mongo_mapper/truncation_spec.rb
|
106
|
-
- spec/database_cleaner/mongoid/truncation_spec.rb
|
107
107
|
- spec/database_cleaner/shared_strategy_spec.rb
|
108
108
|
- spec/rcov.opts
|
109
109
|
- spec/spec.opts
|
@@ -159,7 +159,6 @@ test_files:
|
|
159
159
|
- spec/database_cleaner/mongo_mapper/base_spec.rb
|
160
160
|
- spec/database_cleaner/mongo_mapper/mongo_examples.rb
|
161
161
|
- spec/database_cleaner/mongo_mapper/truncation_spec.rb
|
162
|
-
- spec/database_cleaner/mongoid/truncation_spec.rb
|
163
162
|
- spec/database_cleaner/shared_strategy_spec.rb
|
164
163
|
- spec/spec_helper.rb
|
165
164
|
- examples/features/step_definitions/activerecord_steps.rb
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
require 'mongoid'
|
3
|
-
require 'database_cleaner/mongoid/truncation'
|
4
|
-
|
5
|
-
TEST_DATABASE = 'database_cleaner_specs'
|
6
|
-
Mongoid.configure do |config|
|
7
|
-
name = TEST_DATABASE
|
8
|
-
config.master = Mongo::Connection.new.db(name)
|
9
|
-
end
|
10
|
-
|
11
|
-
class TestClassA
|
12
|
-
include Mongoid::Document
|
13
|
-
field :name
|
14
|
-
end
|
15
|
-
|
16
|
-
class TestClassB
|
17
|
-
include Mongoid::Document
|
18
|
-
field :name
|
19
|
-
end
|
20
|
-
|
21
|
-
|
22
|
-
module DatabaseCleaner
|
23
|
-
module Mongoid
|
24
|
-
|
25
|
-
describe Truncation do
|
26
|
-
before(:each) do
|
27
|
-
::Mongoid.database.connection.drop_database(TEST_DATABASE)
|
28
|
-
#::MongoMapper.connection.db(TEST_DATABASE).collections.each {|c| c.remove }
|
29
|
-
#::MongoMapper.database = TEST_DATABASE
|
30
|
-
end
|
31
|
-
|
32
|
-
def ensure_counts(expected_counts)
|
33
|
-
# I had to add this sanity_check garbage because I was getting non-determinisc results from mongomapper at times..
|
34
|
-
# very odd and disconcerting...
|
35
|
-
sanity_check = expected_counts.delete(:sanity_check)
|
36
|
-
begin
|
37
|
-
expected_counts.each do |model_class, expected_count|
|
38
|
-
model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
|
39
|
-
end
|
40
|
-
rescue Spec::Expectations::ExpectationNotMetError => e
|
41
|
-
raise !sanity_check ? e : Spec::ExpectationNotMetError::ExpectationNotMetError.new("SANITY CHECK FAILURE! This should never happen here: #{e.message}")
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def create_testclassa(attrs={})
|
46
|
-
TestClassA.new({:name => 'some testclassa'}.merge(attrs)).save!
|
47
|
-
end
|
48
|
-
|
49
|
-
def create_testclassb(attrs={})
|
50
|
-
TestClassB.new({:name => 'some testclassb'}.merge(attrs)).save!
|
51
|
-
end
|
52
|
-
|
53
|
-
it "truncates all collections by default" do
|
54
|
-
create_testclassa
|
55
|
-
create_testclassb
|
56
|
-
ensure_counts(TestClassA => 1, TestClassB => 1, :sanity_check => true)
|
57
|
-
Truncation.new.clean
|
58
|
-
ensure_counts(TestClassA => 0, TestClassB => 0)
|
59
|
-
end
|
60
|
-
|
61
|
-
context "when collections are provided to the :only option" do
|
62
|
-
it "only truncates the specified collections" do
|
63
|
-
create_testclassa
|
64
|
-
create_testclassb
|
65
|
-
ensure_counts(TestClassA => 1, TestClassB => 1, :sanity_check => true)
|
66
|
-
Truncation.new(:only => ['test_class_as']).clean
|
67
|
-
ensure_counts(TestClassA => 0, TestClassB => 1)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
context "when collections are provided to the :except option" do
|
72
|
-
it "truncates all but the specified collections" do
|
73
|
-
create_testclassa
|
74
|
-
create_testclassb
|
75
|
-
ensure_counts(TestClassA => 1, TestClassB => 1, :sanity_check => true)
|
76
|
-
Truncation.new(:except => ['test_class_as']).clean
|
77
|
-
ensure_counts(TestClassA => 1, TestClassB => 0)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|
82
|
-
|
83
|
-
end
|
84
|
-
end
|