database_cleaner 0.6.1.rc → 0.6.1
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
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
== 0.6.
|
|
1
|
+
== 0.6.2 (in git)
|
|
2
|
+
|
|
3
|
+
== 0.6.1 2011-01-27
|
|
2
4
|
|
|
3
5
|
=== New Features
|
|
4
6
|
* Default strategies for all ORM libs are defined. (GH-36, GH-38 Prem Sichanugrist)
|
|
5
7
|
* Add a NullStrategy. (GH-6 Ben Mabey)
|
|
6
8
|
|
|
7
9
|
=== Bugfixes
|
|
10
|
+
* Mongo colletion indexes are dropped for collections being removed. (GH-41 Ben Mabey)
|
|
8
11
|
* Exclude database views from tables_to_truncate, if the connection adapter
|
|
9
12
|
supports reading from the ANSI standard information_schema views. (GH-25 Samer Abukhait)
|
|
10
13
|
* 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,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: database_cleaner
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
5
|
-
prerelease:
|
|
4
|
+
hash: 5
|
|
5
|
+
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 6
|
|
9
9
|
- 1
|
|
10
|
-
|
|
11
|
-
version: 0.6.1.rc
|
|
10
|
+
version: 0.6.1
|
|
12
11
|
platform: ruby
|
|
13
12
|
authors:
|
|
14
13
|
- Ben Mabey
|
|
@@ -16,7 +15,7 @@ autorequire:
|
|
|
16
15
|
bindir: bin
|
|
17
16
|
cert_chain: []
|
|
18
17
|
|
|
19
|
-
date: 2011-01-
|
|
18
|
+
date: 2011-01-27 00:00:00 -07:00
|
|
20
19
|
default_executable:
|
|
21
20
|
dependencies: []
|
|
22
21
|
|
|
@@ -84,6 +83,7 @@ files:
|
|
|
84
83
|
- lib/database_cleaner/data_mapper/truncation.rb
|
|
85
84
|
- lib/database_cleaner/generic/base.rb
|
|
86
85
|
- lib/database_cleaner/generic/truncation.rb
|
|
86
|
+
- lib/database_cleaner/mongo/truncation.rb
|
|
87
87
|
- lib/database_cleaner/mongo_mapper/base.rb
|
|
88
88
|
- lib/database_cleaner/mongo_mapper/truncation.rb
|
|
89
89
|
- lib/database_cleaner/mongoid/base.rb
|
|
@@ -103,7 +103,6 @@ files:
|
|
|
103
103
|
- spec/database_cleaner/mongo_mapper/base_spec.rb
|
|
104
104
|
- spec/database_cleaner/mongo_mapper/mongo_examples.rb
|
|
105
105
|
- spec/database_cleaner/mongo_mapper/truncation_spec.rb
|
|
106
|
-
- spec/database_cleaner/mongoid/truncation_spec.rb
|
|
107
106
|
- spec/database_cleaner/shared_strategy_spec.rb
|
|
108
107
|
- spec/rcov.opts
|
|
109
108
|
- spec/spec.opts
|
|
@@ -159,7 +158,6 @@ test_files:
|
|
|
159
158
|
- spec/database_cleaner/mongo_mapper/base_spec.rb
|
|
160
159
|
- spec/database_cleaner/mongo_mapper/mongo_examples.rb
|
|
161
160
|
- spec/database_cleaner/mongo_mapper/truncation_spec.rb
|
|
162
|
-
- spec/database_cleaner/mongoid/truncation_spec.rb
|
|
163
161
|
- spec/database_cleaner/shared_strategy_spec.rb
|
|
164
162
|
- spec/spec_helper.rb
|
|
165
163
|
- 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
|