database_cleaner 1.5.2 → 1.7.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 +5 -5
- data/Gemfile.lock +4 -4
- data/History.rdoc +44 -0
- data/README.markdown +29 -6
- data/VERSION.yml +2 -2
- data/lib/database_cleaner/active_record/base.rb +17 -1
- data/lib/database_cleaner/active_record/deletion.rb +23 -2
- data/lib/database_cleaner/active_record/truncation.rb +2 -2
- data/lib/database_cleaner/base.rb +2 -0
- data/lib/database_cleaner/mongoid/truncation.rb +1 -1
- data/lib/database_cleaner/null_strategy.rb +5 -0
- data/lib/database_cleaner/redis/base.rb +1 -1
- data/lib/database_cleaner/safeguard.rb +72 -0
- data/lib/database_cleaner.rb +6 -2
- metadata +6 -91
- data/examples/Gemfile +0 -1
- data/examples/Gemfile.lock +0 -286
- data/examples/config/database.yml +0 -7
- data/examples/config/database.yml.example +0 -8
- data/examples/config/redis.yml +0 -8
- data/examples/db/activerecord_one.db +0 -0
- data/examples/db/activerecord_two.db +0 -0
- data/examples/db/datamapper_default.db +0 -0
- data/examples/db/datamapper_one.db +0 -0
- data/examples/db/datamapper_two.db +0 -0
- data/examples/db/sqlite_databases_go_here +0 -0
- data/examples/features/example.feature +0 -11
- data/examples/features/example_multiple_db.feature +0 -23
- data/examples/features/example_multiple_orm.feature +0 -22
- data/examples/features/step_definitions/activerecord_steps.rb +0 -31
- data/examples/features/step_definitions/couchpotato_steps.rb +0 -31
- data/examples/features/step_definitions/datamapper_steps.rb +0 -37
- data/examples/features/step_definitions/mongoid_steps.rb +0 -23
- data/examples/features/step_definitions/mongomapper_steps.rb +0 -31
- data/examples/features/step_definitions/neo4j_steps.rb +0 -23
- data/examples/features/step_definitions/translation_steps.rb +0 -55
- data/examples/features/support/env.rb +0 -61
- data/examples/lib/activerecord_models.rb +0 -41
- data/examples/lib/couchpotato_models.rb +0 -61
- data/examples/lib/datamapper_models.rb +0 -50
- data/examples/lib/mongoid_models.rb +0 -44
- data/examples/lib/mongomapper_models.rb +0 -51
- data/examples/lib/neo4j_models.rb +0 -17
- data/examples/lib/ohm_models.rb +0 -43
- data/examples/lib/redis_models.rb +0 -65
- data/examples/lib/sequel_models.rb +0 -9
- data/features/cleaning.feature +0 -30
- data/features/cleaning_default_strategy.feature +0 -23
- data/features/cleaning_multiple_dbs.feature +0 -22
- data/features/cleaning_multiple_orms.feature +0 -67
- data/features/step_definitions/database_cleaner_steps.rb +0 -33
- data/features/step_definitions/ohm_steps.rb +0 -31
- data/features/step_definitions/redis_steps.rb +0 -31
- data/features/support/env.rb +0 -4
- data/features/support/feature_runner.rb +0 -39
- data/spec/database_cleaner/active_record/base_spec.rb +0 -188
- data/spec/database_cleaner/active_record/transaction_spec.rb +0 -176
- data/spec/database_cleaner/active_record/truncation/mysql2_spec.rb +0 -38
- data/spec/database_cleaner/active_record/truncation/mysql_spec.rb +0 -38
- data/spec/database_cleaner/active_record/truncation/postgresql_spec.rb +0 -75
- data/spec/database_cleaner/active_record/truncation/shared_fast_truncation.rb +0 -40
- data/spec/database_cleaner/active_record/truncation/sqlite3_spec.rb +0 -40
- data/spec/database_cleaner/active_record/truncation_spec.rb +0 -180
- data/spec/database_cleaner/base_spec.rb +0 -617
- data/spec/database_cleaner/configuration_spec.rb +0 -345
- data/spec/database_cleaner/couch_potato/truncation_spec.rb +0 -41
- data/spec/database_cleaner/data_mapper/base_spec.rb +0 -30
- data/spec/database_cleaner/data_mapper/transaction_spec.rb +0 -23
- data/spec/database_cleaner/data_mapper/truncation/sqlite3_spec.rb +0 -41
- data/spec/database_cleaner/data_mapper/truncation_spec.rb +0 -11
- data/spec/database_cleaner/generic/base_spec.rb +0 -61
- data/spec/database_cleaner/generic/truncation_spec.rb +0 -118
- data/spec/database_cleaner/mongo/mongo_examples.rb +0 -26
- data/spec/database_cleaner/mongo/truncation_spec.rb +0 -72
- data/spec/database_cleaner/mongo_mapper/base_spec.rb +0 -33
- data/spec/database_cleaner/mongo_mapper/mongo_examples.rb +0 -8
- data/spec/database_cleaner/mongo_mapper/truncation_spec.rb +0 -74
- data/spec/database_cleaner/moped/moped_examples.rb +0 -32
- data/spec/database_cleaner/moped/truncation_spec.rb +0 -80
- data/spec/database_cleaner/neo4j/base_spec.rb +0 -43
- data/spec/database_cleaner/neo4j/transaction_spec.rb +0 -25
- data/spec/database_cleaner/ohm/truncation_spec.rb +0 -70
- data/spec/database_cleaner/redis/base_spec.rb +0 -43
- data/spec/database_cleaner/redis/truncation_spec.rb +0 -63
- data/spec/database_cleaner/sequel/base_spec.rb +0 -32
- data/spec/database_cleaner/sequel/deletion_spec.rb +0 -58
- data/spec/database_cleaner/sequel/transaction_spec.rb +0 -21
- data/spec/database_cleaner/sequel/truncation/sqlite3_spec.rb +0 -0
- data/spec/database_cleaner/sequel/truncation_spec.rb +0 -182
- data/spec/database_cleaner/shared_strategy.rb +0 -15
- data/spec/rcov.opts +0 -1
- data/spec/spec_helper.rb +0 -21
- data/spec/support/active_record/database_setup.rb +0 -6
- data/spec/support/active_record/migrations/20150101010000_create_users.rb +0 -14
- data/spec/support/active_record/migrations/20150101020000_create_agents.rb +0 -14
- data/spec/support/active_record/mysql2_setup.rb +0 -39
- data/spec/support/active_record/mysql_setup.rb +0 -38
- data/spec/support/active_record/postgresql_setup.rb +0 -48
- data/spec/support/active_record/schema_setup.rb +0 -17
- data/spec/support/active_record/sqlite3_setup.rb +0 -40
- data/spec/support/data_mapper/schema_setup.rb +0 -15
- data/spec/support/data_mapper/sqlite3_setup.rb +0 -39
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
|
2
|
-
require 'active_record'
|
|
3
|
-
require 'active_record/connection_adapters/mysql_adapter'
|
|
4
|
-
require 'active_record/connection_adapters/mysql2_adapter'
|
|
5
|
-
require 'active_record/connection_adapters/sqlite3_adapter'
|
|
6
|
-
require 'active_record/connection_adapters/postgresql_adapter'
|
|
7
|
-
|
|
8
|
-
require 'database_cleaner/active_record/truncation'
|
|
9
|
-
|
|
10
|
-
module ActiveRecord
|
|
11
|
-
module ConnectionAdapters
|
|
12
|
-
#JdbcAdapter IBM_DBAdapter
|
|
13
|
-
[ MysqlAdapter, Mysql2Adapter, SQLite3Adapter, PostgreSQLAdapter ].each do |adapter|
|
|
14
|
-
describe adapter, "#truncate_table" do
|
|
15
|
-
it "responds" do
|
|
16
|
-
adapter.instance_methods.should include(:truncate_table)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
module DatabaseCleaner
|
|
24
|
-
module ActiveRecord
|
|
25
|
-
|
|
26
|
-
describe Truncation do
|
|
27
|
-
let(:connection) { double('connection') }
|
|
28
|
-
|
|
29
|
-
before(:each) do
|
|
30
|
-
connection.stub(:disable_referential_integrity).and_yield
|
|
31
|
-
connection.stub(:database_cleaner_view_cache).and_return([])
|
|
32
|
-
::ActiveRecord::Base.stub(:connection).and_return(connection)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
describe '#clean' do
|
|
36
|
-
it "should truncate all tables except for schema_migrations" do
|
|
37
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[schema_migrations widgets dogs])
|
|
38
|
-
|
|
39
|
-
connection.should_receive(:truncate_tables).with(['widgets', 'dogs'])
|
|
40
|
-
Truncation.new.clean
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
it "should use ActiveRecord's schema_migrations_table_name" do
|
|
44
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[pre_schema_migrations_suf widgets dogs])
|
|
45
|
-
::ActiveRecord::Base.stub(:table_name_prefix).and_return('pre_')
|
|
46
|
-
::ActiveRecord::Base.stub(:table_name_suffix).and_return('_suf')
|
|
47
|
-
|
|
48
|
-
connection.should_receive(:truncate_tables).with(['widgets', 'dogs'])
|
|
49
|
-
|
|
50
|
-
Truncation.new.clean
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
it "should only truncate the tables specified in the :only option when provided" do
|
|
54
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[schema_migrations widgets dogs])
|
|
55
|
-
|
|
56
|
-
connection.should_receive(:truncate_tables).with(['widgets'])
|
|
57
|
-
|
|
58
|
-
Truncation.new(:only => ['widgets']).clean
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
it "should not truncate the tables specified in the :except option" do
|
|
62
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[schema_migrations widgets dogs])
|
|
63
|
-
|
|
64
|
-
connection.should_receive(:truncate_tables).with(['dogs'])
|
|
65
|
-
|
|
66
|
-
Truncation.new(:except => ['widgets']).clean
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
it "should raise an error when :only and :except options are used" do
|
|
70
|
-
running {
|
|
71
|
-
Truncation.new(:except => ['widgets'], :only => ['widgets'])
|
|
72
|
-
}.should raise_error(ArgumentError)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
it "should raise an error when invalid options are provided" do
|
|
76
|
-
running { Truncation.new(:foo => 'bar') }.should raise_error(ArgumentError)
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
it "should not truncate views" do
|
|
80
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[widgets dogs])
|
|
81
|
-
connection.stub(:database_cleaner_view_cache).and_return(["widgets"])
|
|
82
|
-
|
|
83
|
-
connection.should_receive(:truncate_tables).with(['dogs'])
|
|
84
|
-
|
|
85
|
-
Truncation.new.clean
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
describe "relying on #pre_count_truncate_tables if connection allows it" do
|
|
89
|
-
subject { Truncation.new }
|
|
90
|
-
|
|
91
|
-
it "should rely on #pre_count_truncate_tables if #pre_count? returns true" do
|
|
92
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[widgets dogs])
|
|
93
|
-
connection.stub(:database_cleaner_view_cache).and_return(["widgets"])
|
|
94
|
-
|
|
95
|
-
subject.instance_variable_set(:"@pre_count", true)
|
|
96
|
-
|
|
97
|
-
connection.should_not_receive(:truncate_tables).with(['dogs'])
|
|
98
|
-
connection.should_receive(:pre_count_truncate_tables).with(['dogs'], :reset_ids => true)
|
|
99
|
-
|
|
100
|
-
subject.clean
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
it "should not rely on #pre_count_truncate_tables if #pre_count? return false" do
|
|
104
|
-
connection.stub(:database_cleaner_table_cache).and_return(%w[widgets dogs])
|
|
105
|
-
connection.stub(:database_cleaner_view_cache).and_return(["widgets"])
|
|
106
|
-
|
|
107
|
-
subject.instance_variable_set(:"@pre_count", false)
|
|
108
|
-
|
|
109
|
-
connection.should_not_receive(:pre_count_truncate_tables).with(['dogs'], :reset_ids => true)
|
|
110
|
-
connection.should_receive(:truncate_tables).with(['dogs'])
|
|
111
|
-
|
|
112
|
-
subject.clean
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
context 'when :cache_tables is set to true' do
|
|
117
|
-
it 'caches the list of tables to be truncated' do
|
|
118
|
-
connection.should_receive(:database_cleaner_table_cache).and_return([])
|
|
119
|
-
connection.should_not_receive(:tables)
|
|
120
|
-
|
|
121
|
-
connection.stub(:truncate_tables)
|
|
122
|
-
Truncation.new({ :cache_tables => true }).clean
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
context 'when :cache_tables is set to false' do
|
|
127
|
-
it 'does not cache the list of tables to be truncated' do
|
|
128
|
-
connection.should_not_receive(:database_cleaner_table_cache)
|
|
129
|
-
connection.should_receive(:tables).and_return([])
|
|
130
|
-
|
|
131
|
-
connection.stub(:truncate_tables)
|
|
132
|
-
Truncation.new({ :cache_tables => false }).clean
|
|
133
|
-
end
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
describe '#pre_count?' do
|
|
138
|
-
before(:each) do
|
|
139
|
-
connection.stub(:disable_referential_integrity).and_yield
|
|
140
|
-
connection.stub(:database_cleaner_view_cache).and_return([])
|
|
141
|
-
::ActiveRecord::Base.stub(:connection).and_return(connection)
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
subject { Truncation.new }
|
|
145
|
-
its(:pre_count?) { should eq false }
|
|
146
|
-
|
|
147
|
-
it 'should return true if @reset_id is set and non false or nil' do
|
|
148
|
-
subject.instance_variable_set(:"@pre_count", true)
|
|
149
|
-
subject.send(:pre_count?).should eq true
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it 'should return false if @reset_id is set to false' do
|
|
153
|
-
subject.instance_variable_set(:"@pre_count", false)
|
|
154
|
-
subject.send(:pre_count?).should eq false
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
describe '#reset_ids?' do
|
|
159
|
-
before(:each) do
|
|
160
|
-
connection.stub(:disable_referential_integrity).and_yield
|
|
161
|
-
connection.stub(:database_cleaner_view_cache).and_return([])
|
|
162
|
-
::ActiveRecord::Base.stub(:connection).and_return(connection)
|
|
163
|
-
end
|
|
164
|
-
|
|
165
|
-
subject { Truncation.new }
|
|
166
|
-
its(:reset_ids?) { should eq true }
|
|
167
|
-
|
|
168
|
-
it 'should return true if @reset_id is set and non false or nil' do
|
|
169
|
-
subject.instance_variable_set(:"@reset_ids", 'Something')
|
|
170
|
-
subject.send(:reset_ids?).should eq true
|
|
171
|
-
end
|
|
172
|
-
|
|
173
|
-
it 'should return false if @reset_id is set to false' do
|
|
174
|
-
subject.instance_variable_set(:"@reset_ids", false)
|
|
175
|
-
subject.send(:reset_ids?).should eq false
|
|
176
|
-
end
|
|
177
|
-
end
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
end
|