database_cleaner 1.5.1 → 1.5.2

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
  SHA1:
3
- metadata.gz: 18b2553b2e2fecdaf872e7274771ccd7a38ab3c3
4
- data.tar.gz: 33ea944750c6db5f050fa088c3971dc137ae3e23
3
+ metadata.gz: 2205055282f9fccb03b24e5d41985778c6f257a2
4
+ data.tar.gz: 28d503c34fd8f35f9f9f46526e145dad8dc29534
5
5
  SHA512:
6
- metadata.gz: c1fb21202bf49eaf1db4a30d5ab353722c3f9c7f6cc10685cb60d36a2c5beb92402bd702595732451862851a50be4960631a4cd2d37ae93b515ac6e85642e5c3
7
- data.tar.gz: cd709be8380c719396270c0cbc51e8c2f745115e20d34a263bcc6c7e385f45f6ee33db0d26a1fbfd328329c379b083660e7c7ba704039a10d48225093556b0b4
6
+ metadata.gz: cd0ce19c0e1cfb249aa59c816b2f482c6fd279c1f404043b1f1354488edd8e757650778241c3c5c0b81c92957fe10dd0e17a498323a5a0d2849508cebd846e2f
7
+ data.tar.gz: eec65c6f11a279fe2f1bdf1a94c00f5dd245b5cfadb13c299487e2efe8494b62be1a47134677f3ccea3f02f355bf87e81a6fd8a846ada085191c86b281836efa
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- database_cleaner (1.5.1)
4
+ database_cleaner (1.5.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -69,7 +69,7 @@ GEM
69
69
  dm-transactions (~> 1.2.0)
70
70
  dm-types (~> 1.2.0)
71
71
  dm-validations (~> 1.2.0)
72
- diff-lcs (1.1.3)
72
+ diff-lcs (1.2.5)
73
73
  dm-aggregates (1.2.0)
74
74
  dm-core (~> 1.2.0)
75
75
  dm-constraints (1.2.0)
@@ -210,7 +210,7 @@ GEM
210
210
  activesupport (= 3.0.0)
211
211
  rake (>= 0.8.4)
212
212
  thor (~> 0.14.0)
213
- rake (10.3.2)
213
+ rake (11.1.2)
214
214
  rb-fsevent (0.9.4)
215
215
  rb-inotify (0.9.5)
216
216
  ffi (>= 0.5.0)
@@ -222,19 +222,22 @@ GEM
222
222
  rest-client (1.6.8)
223
223
  mime-types (~> 1.16)
224
224
  rdoc (>= 2.4.2)
225
- rspec (2.11.0)
226
- rspec-core (~> 2.11.0)
227
- rspec-expectations (~> 2.11.0)
228
- rspec-mocks (~> 2.11.0)
229
- rspec-core (2.11.1)
230
- rspec-expectations (2.11.3)
231
- diff-lcs (~> 1.1.3)
232
- rspec-mocks (2.11.3)
233
- rspec-rails (2.11.4)
225
+ rspec (2.14.1)
226
+ rspec-core (~> 2.14.0)
227
+ rspec-expectations (~> 2.14.0)
228
+ rspec-mocks (~> 2.14.0)
229
+ rspec-core (2.14.8)
230
+ rspec-expectations (2.14.5)
231
+ diff-lcs (>= 1.1.3, < 2.0)
232
+ rspec-mocks (2.14.6)
233
+ rspec-rails (2.14.2)
234
234
  actionpack (>= 3.0)
235
+ activemodel (>= 3.0)
235
236
  activesupport (>= 3.0)
236
237
  railties (>= 3.0)
237
- rspec (~> 2.11.0)
238
+ rspec-core (~> 2.14.0)
239
+ rspec-expectations (~> 2.14.0)
240
+ rspec-mocks (~> 2.14.0)
238
241
  sequel (3.21.0)
239
242
  slop (3.6.0)
240
243
  spoon (0.0.4)
@@ -242,7 +245,7 @@ GEM
242
245
  sqlite3 (1.3.10)
243
246
  stringex (1.5.1)
244
247
  thor (0.14.6)
245
- tzinfo (0.3.41)
248
+ tzinfo (0.3.48)
246
249
  uuidtools (2.1.5)
247
250
  zip (2.0.2)
248
251
 
@@ -274,10 +277,10 @@ DEPENDENCIES
274
277
  ohm (~> 0.1.3)
275
278
  pg
276
279
  rake
277
- rspec-rails (~> 2.11.0)
280
+ rspec-rails (~> 2.14.2)
278
281
  sequel (~> 3.21.0)
279
282
  sqlite3
280
283
  tzinfo
281
284
 
282
285
  BUNDLED WITH
283
- 1.10.5
286
+ 1.11.2
data/History.rdoc CHANGED
@@ -1,5 +1,42 @@
1
1
  == Development (master)
2
2
 
3
+ == 1.5.2 2016-04-17
4
+
5
+ === New Features/Changes
6
+ * Use default_client with mongoid 5.0 (@stjhimy)
7
+ * Added comparable support for strategies (@st0012)
8
+ * Better README instructions that suggest `append_after` (@jrochkind)
9
+ * Removed deprecation warnings for Rails 5.0+ (@pschambacher)
10
+ * Upgrade to RSpec 2.14 (@skalee)
11
+
12
+ === Bug Fixes
13
+ * @dmitrypol fixed issue #409
14
+ * @schmierkov fixed the Travis builds with PR #416
15
+ * @shosti fixed issue #345
16
+ * @kylev fixed issue #379
17
+ * @skalee fixed the Travis builds for Neo4j with PR #433
18
+
19
+ == 1.5.1 2015-09-05
20
+
21
+ == Bug Fix
22
+ * Added mongo2 missing files to the gemspec. (@geerzo)
23
+
24
+ == 1.5.0 2015-09-02
25
+
26
+ === New Features/Changes
27
+ * Use ensure within the cleaning method. (@cema-sp)
28
+ * Restored mysql2 + jruby support. (@ahorek)
29
+ * Added required ruby version to gemspec. (@garethrees)
30
+ * Added support for Mongoid 5.0 and Mongo Ruby Driver 2.0. (@jprincipe)
31
+ * Added support for additional Neo4j::Session.open options. (@brienw)
32
+ * And a bunch of code style and README improvements
33
+
34
+ === Bug Fixes
35
+ * Fixed truncation for MongoDB 3. (@andreale)
36
+ * Fixed YAML error when building gem. (@joshnesbitt)
37
+ * Fixed deletion strategy for JDBC MySQL. (@DanElbert)
38
+ * Fixed open transactions for multiple connections. (@claptimes5)
39
+
3
40
  == 1.4.1 2015-03-09
4
41
  * Support for deletion with Sequel. (@cyberdelia)
5
42
  * Use ActiveRecord::Base configuration when different from config file. (@wendy0402)
data/README.markdown CHANGED
@@ -1,13 +1,25 @@
1
1
  # Database Cleaner
2
2
 
3
+ [![Build Status](https://travis-ci.org/DatabaseCleaner/database_cleaner.svg?branch=master)](https://travis-ci.org/DatabaseCleaner/database_cleaner)
4
+ [![Code Climate](https://codeclimate.com/github/DatabaseCleaner/database_cleaner/badges/gpa.svg)](https://codeclimate.com/github/DatabaseCleaner/database_cleaner)
5
+
3
6
  Database Cleaner is a set of strategies for cleaning your database in Ruby.
4
7
 
5
8
  The original use case was to ensure a clean state during tests.
6
9
  Each strategy is a small amount of code but is code that is usually needed in any ruby app that is testing with a database.
7
10
 
8
- ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, CouchPotato, Ohm and Redis are supported.
11
+ ## Gem Setup
12
+
13
+ ```ruby
14
+ # Gemfile
15
+ group :test do
16
+ gem 'database_cleaner'
17
+ end
18
+ ```
9
19
 
10
- [![Build Status](https://travis-ci.org/DatabaseCleaner/database_cleaner.svg?branch=master)](https://travis-ci.org/DatabaseCleaner/database_cleaner) [![Code Climate](https://codeclimate.com/github/DatabaseCleaner/database_cleaner/badges/gpa.svg)](https://codeclimate.com/github/DatabaseCleaner/database_cleaner)
20
+ ## Supported Databases, Libraries and Strategies
21
+
22
+ ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, CouchPotato, Ohm and Redis are supported.
11
23
 
12
24
  Here is an overview of the strategies supported for each library:
13
25
 
@@ -76,7 +88,7 @@ Here is an overview of the strategies supported for each library:
76
88
  </tbody>
77
89
  </table>
78
90
 
79
- * Truncation and Deletion strategies for Neo4j will just delete all nodes and relationships from the database.
91
+ \* Truncation and Deletion strategies for Neo4j will just delete all nodes and relationships from the database.
80
92
 
81
93
  <table>
82
94
  <tbody>
@@ -221,23 +233,81 @@ end
221
233
 
222
234
  ### RSpec with Capybara Example
223
235
 
224
- If you're using Capybara with RSpec and using an external browser (not using RackTest) you'll almost certainly need to use truncation rather than transactions for tests tagged `:js`.
236
+ You'll typically discover a feature spec is incorrectly using transaction
237
+ instead of truncation strategy when the data created in the spec is not
238
+ visible in the app-under-test.
239
+
240
+ A frequently occurring example of this is when, after creating a user in a
241
+ spec, the spec mysteriously fails to login with the user. This happens because
242
+ the user is created inside of an uncommitted transaction on one database
243
+ connection, while the login attempt is made using a separate database
244
+ connection. This separate database connection cannot access the
245
+ uncommitted user data created over the first database connection due to
246
+ transaction isolation.
247
+
248
+ For feature specs using a Capybara driver for an external
249
+ JavaScript-capable browser (in practice this is all drivers except
250
+ `:rack_test`), the Rack app under test and the specs do not share a
251
+ database connection.
252
+
253
+ When a spec and app-under-test do not share a database connection,
254
+ you'll likely need to use the truncation strategy instead of the
255
+ transaction strategy.
256
+
257
+ See the suggested config below to temporarily enable truncation strategy
258
+ for affected feature specs only. This config continues to use transaction
259
+ strategy for all other specs.
260
+
261
+ It's also recommended to use `append_after` to ensure `DatabaseCleaner.clean`
262
+ runs *after* the after-test cleanup `capybara/rspec` installs.
225
263
 
226
264
  ```ruby
265
+ require 'capybara/rspec'
266
+
267
+ #...
268
+
227
269
  RSpec.configure do |config|
228
270
 
229
271
  config.use_transactional_fixtures = false
230
272
 
231
273
  config.before(:suite) do
274
+ if config.use_transactional_fixtures?
275
+ raise(<<-MSG)
276
+ Delete line `config.use_transactional_fixtures = true` from rails_helper.rb
277
+ (or set it to false) to prevent uncommitted transactions being used in
278
+ JavaScript-dependent specs.
279
+
280
+ During testing, the app-under-test that the browser driver connects to
281
+ uses a different database connection to the database connection used by
282
+ the spec. The app's database connection would not be able to access
283
+ uncommitted transaction data setup over the spec's database connection.
284
+ MSG
285
+ end
232
286
  DatabaseCleaner.clean_with(:truncation)
287
+ end
288
+
289
+ config.before(:each) do
290
+ DatabaseCleaner.strategy = :transaction
291
+ end
292
+
293
+ config.before(:each, type: :feature) do
294
+ # :rack_test driver's Rack app under test shares database connection
295
+ # with the specs, so continue to use transaction strategy for speed.
296
+ driver_shares_db_connection_with_specs = Capybara.current_driver == :rack_test
297
+
298
+ if !driver_shares_db_connection_with_specs
299
+ # Driver is probably for an external browser with an app
300
+ # under test that does *not* share a database connection with the
301
+ # specs, so use truncation strategy.
302
+ DatabaseCleaner.strategy = :truncation
303
+ end
233
304
  end
234
305
 
235
- config.before(:each) do |example|
236
- DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
306
+ config.before(:each) do
237
307
  DatabaseCleaner.start
238
308
  end
239
309
 
240
- config.after(:each) do
310
+ config.append_after(:each) do
241
311
  DatabaseCleaner.clean
242
312
  end
243
313
 
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 1
3
3
  :minor: 5
4
- :patch: 1
4
+ :patch: 2
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- database_cleaner (1.5.1)
4
+ database_cleaner (1.5.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -69,7 +69,7 @@ GEM
69
69
  dm-transactions (~> 1.2.0)
70
70
  dm-types (~> 1.2.0)
71
71
  dm-validations (~> 1.2.0)
72
- diff-lcs (1.1.3)
72
+ diff-lcs (1.2.5)
73
73
  dm-aggregates (1.2.0)
74
74
  dm-core (~> 1.2.0)
75
75
  dm-constraints (1.2.0)
@@ -210,7 +210,7 @@ GEM
210
210
  activesupport (= 3.0.0)
211
211
  rake (>= 0.8.4)
212
212
  thor (~> 0.14.0)
213
- rake (10.3.2)
213
+ rake (11.1.2)
214
214
  rb-fsevent (0.9.4)
215
215
  rb-inotify (0.9.5)
216
216
  ffi (>= 0.5.0)
@@ -222,19 +222,22 @@ GEM
222
222
  rest-client (1.6.8)
223
223
  mime-types (~> 1.16)
224
224
  rdoc (>= 2.4.2)
225
- rspec (2.11.0)
226
- rspec-core (~> 2.11.0)
227
- rspec-expectations (~> 2.11.0)
228
- rspec-mocks (~> 2.11.0)
229
- rspec-core (2.11.1)
230
- rspec-expectations (2.11.3)
231
- diff-lcs (~> 1.1.3)
232
- rspec-mocks (2.11.3)
233
- rspec-rails (2.11.4)
225
+ rspec (2.14.1)
226
+ rspec-core (~> 2.14.0)
227
+ rspec-expectations (~> 2.14.0)
228
+ rspec-mocks (~> 2.14.0)
229
+ rspec-core (2.14.8)
230
+ rspec-expectations (2.14.5)
231
+ diff-lcs (>= 1.1.3, < 2.0)
232
+ rspec-mocks (2.14.6)
233
+ rspec-rails (2.14.2)
234
234
  actionpack (>= 3.0)
235
+ activemodel (>= 3.0)
235
236
  activesupport (>= 3.0)
236
237
  railties (>= 3.0)
237
- rspec (~> 2.11.0)
238
+ rspec-core (~> 2.14.0)
239
+ rspec-expectations (~> 2.14.0)
240
+ rspec-mocks (~> 2.14.0)
238
241
  sequel (3.21.0)
239
242
  slop (3.6.0)
240
243
  spoon (0.0.4)
@@ -242,7 +245,7 @@ GEM
242
245
  sqlite3 (1.3.10)
243
246
  stringex (1.5.1)
244
247
  thor (0.14.6)
245
- tzinfo (0.3.41)
248
+ tzinfo (0.3.48)
246
249
  uuidtools (2.1.5)
247
250
  zip (2.0.2)
248
251
 
@@ -274,10 +277,10 @@ DEPENDENCIES
274
277
  ohm (~> 0.1.3)
275
278
  pg
276
279
  rake
277
- rspec-rails (~> 2.11.0)
280
+ rspec-rails (~> 2.14.2)
278
281
  sequel (~> 3.21.0)
279
282
  sqlite3
280
283
  tzinfo
281
284
 
282
285
  BUNDLED WITH
283
- 1.10.5
286
+ 1.11.2
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -3,7 +3,7 @@ require 'redis'
3
3
  class RedisWidget
4
4
 
5
5
  def self.redis
6
- threaded ||= Redis.connect
6
+ threaded ||= Redis.new
7
7
  end
8
8
 
9
9
  def self.redis=(connection)
@@ -45,7 +45,7 @@ end
45
45
  class RedisWidgetUsingDatabaseOne < RedisWidget
46
46
 
47
47
  def self.redis
48
- threaded[self.class.to_s] ||= Redis.connect :url => ENV['REDIS_URL_ONE']
48
+ threaded[self.class.to_s] ||= Redis.new :url => ENV['REDIS_URL_ONE']
49
49
  end
50
50
 
51
51
  def self.create!
@@ -56,7 +56,7 @@ end
56
56
  class RedisWidgetUsingDatabaseTwo < RedisWidget
57
57
 
58
58
  def self.redis
59
- threaded[self.class.to_s] ||= Redis.connect :url => ENV['REDIS_URL_TWO']
59
+ threaded[self.class.to_s] ||= Redis.new :url => ENV['REDIS_URL_TWO']
60
60
  end
61
61
 
62
62
  def self.create!
@@ -59,6 +59,7 @@ module DatabaseCleaner::ActiveRecord
59
59
  end
60
60
 
61
61
  def information_schema_exists? connection
62
+ return false unless connection.is_a? ActiveRecord::ConnectionAdapters::Mysql2Adapter
62
63
  @information_schema_exists ||=
63
64
  begin
64
65
  connection.execute("SELECT 1 FROM information_schema.tables")
@@ -27,7 +27,7 @@ module DatabaseCleaner
27
27
 
28
28
  def database_cleaner_table_cache
29
29
  # the adapters don't do caching (#130) but we make the assumption that the list stays the same in tests
30
- @database_cleaner_tables ||= tables
30
+ @database_cleaner_tables ||= ::ActiveRecord::VERSION::MAJOR >= 5 ? data_sources : tables
31
31
  end
32
32
 
33
33
  def truncate_table(table_name)
@@ -1,6 +1,12 @@
1
1
  require 'database_cleaner/null_strategy'
2
2
  module DatabaseCleaner
3
3
  class Base
4
+ include Comparable
5
+
6
+ def <=>(other)
7
+ (self.orm <=> other.orm) == 0 ? self.db <=> other.db : self.orm <=> other.orm
8
+ end
9
+
4
10
  def initialize(desired_orm = nil,opts = {})
5
11
  if [:autodetect, nil, "autodetect"].include?(desired_orm)
6
12
  autodetect
@@ -96,11 +102,6 @@ module DatabaseCleaner
96
102
  !!@autodetected
97
103
  end
98
104
 
99
- #TODO make strategies directly comparable
100
- def ==(other)
101
- self.orm == other.orm && self.db == other.db
102
- end
103
-
104
105
  def autodetect_orm
105
106
  if defined? ::ActiveRecord
106
107
  :active_record
@@ -4,9 +4,9 @@ module DatabaseCleaner
4
4
 
5
5
  def clean
6
6
  if @only
7
- collections.each { |c| c.remove if @only.include?(c.name) }
7
+ collections.each { |c| c.send(truncate_method_name) if @only.include?(c.name) }
8
8
  else
9
- collections.each { |c| c.remove unless @tables_to_exclude.include?(c.name) }
9
+ collections.each { |c| c.send(truncate_method_name) unless @tables_to_exclude.include?(c.name) }
10
10
  end
11
11
  true
12
12
  end
@@ -17,6 +17,10 @@ module DatabaseCleaner
17
17
  database.collections.select { |c| c.name !~ /^system\./ }
18
18
  end
19
19
 
20
+ def truncate_method_name
21
+ # This constant only exists in the 2.x series.
22
+ defined?(::Mongo::VERSION) ? :delete_many : :remove
23
+ end
20
24
  end
21
25
  end
22
26
  end
@@ -26,10 +26,12 @@ module DatabaseCleaner
26
26
  database.use(db)
27
27
  end
28
28
 
29
- database['system.namespaces'].find(:name => { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
30
- _, name = collection['name'].split('.', 2)
31
- name
32
- end
29
+ database.collections.collect { |c| c.namespace.split('.',2)[1] }
30
+
31
+ # database['system.namespaces'].find(:name => { '$not' => /\.system\.|\$/ }).to_a.map do |collection|
32
+ # _, name = collection['name'].split('.', 2)
33
+ # name
34
+ # end
33
35
  end
34
36
 
35
37
  end
@@ -28,7 +28,7 @@ module DatabaseCleaner
28
28
  private
29
29
 
30
30
  def session
31
- ::Mongoid.default_session
31
+ ::Mongoid.default_client
32
32
  end
33
33
 
34
34
  def database
@@ -22,10 +22,16 @@ module DatabaseCleaner
22
22
  private
23
23
 
24
24
  def connection
25
- @connection ||= url == :default ? ::Redis.connect : ::Redis.connect(:url => url)
25
+ @connection ||= begin
26
+ if url == :default
27
+ ::Redis.new
28
+ elsif db.class.is_a?(::Redis) # pass directly the connection
29
+ db
30
+ else
31
+ ::Redis.new(:url => url)
32
+ end
33
+ end
26
34
  end
27
-
28
35
  end
29
36
  end
30
37
  end
31
-
@@ -118,7 +118,7 @@ module DatabaseCleaner
118
118
  connection.should_receive(:database_cleaner_table_cache).and_return([])
119
119
  connection.should_not_receive(:tables)
120
120
 
121
- connection.stub!(:truncate_tables)
121
+ connection.stub(:truncate_tables)
122
122
  Truncation.new({ :cache_tables => true }).clean
123
123
  end
124
124
  end
@@ -128,7 +128,7 @@ module DatabaseCleaner
128
128
  connection.should_not_receive(:database_cleaner_table_cache)
129
129
  connection.should_receive(:tables).and_return([])
130
130
 
131
- connection.stub!(:truncate_tables)
131
+ connection.stub(:truncate_tables)
132
132
  Truncation.new({ :cache_tables => false }).clean
133
133
  end
134
134
  end
@@ -9,6 +9,12 @@ require 'database_cleaner/neo4j/transaction'
9
9
  module DatabaseCleaner
10
10
  describe Base do
11
11
 
12
+ let(:mock_strategy) {
13
+ double("strategy").tap{|strategy|
14
+ strategy.stub(:to_ary => [strategy])
15
+ }
16
+ }
17
+
12
18
  describe "autodetect" do
13
19
 
14
20
  #Cache all ORMs, we'll need them later but not now.
@@ -201,18 +207,38 @@ module DatabaseCleaner
201
207
 
202
208
  describe "comparison" do
203
209
  it "should be equal if orm, connection and strategy are the same" do
204
- strategy = mock("strategy")
205
- strategy.stub!(:to_ary => [strategy])
206
-
207
210
  one = DatabaseCleaner::Base.new(:active_record,:connection => :default)
208
- one.strategy = strategy
211
+ one.strategy = mock_strategy
209
212
 
210
213
  two = DatabaseCleaner::Base.new(:active_record,:connection => :default)
211
- two.strategy = strategy
214
+ two.strategy = mock_strategy
212
215
 
213
216
  one.should eq two
214
217
  two.should eq one
215
218
  end
219
+
220
+ it "should not be equal if orm are not the same" do
221
+ one = DatabaseCleaner::Base.new(:mongo_id, :connection => :default)
222
+ one.strategy = mock_strategy
223
+
224
+ two = DatabaseCleaner::Base.new(:active_record, :connection => :default)
225
+ two.strategy = mock_strategy
226
+
227
+ one.should_not eq two
228
+ two.should_not eq one
229
+ end
230
+
231
+ it "should not be equal if connection are not the same" do
232
+
233
+ one = DatabaseCleaner::Base.new(:active_record, :connection => :default)
234
+ one.strategy = :truncation
235
+
236
+ two = DatabaseCleaner::Base.new(:active_record, :connection => :other)
237
+ two.strategy = :truncation
238
+
239
+ one.should_not eq two
240
+ two.should_not eq one
241
+ end
216
242
  end
217
243
 
218
244
  describe "initialization" do
@@ -269,11 +295,7 @@ module DatabaseCleaner
269
295
  end
270
296
 
271
297
  describe "strategy_db=" do
272
- let(:strategy) {
273
- mock("strategy").tap{|strategy|
274
- strategy.stub!(:to_ary => [strategy])
275
- }
276
- }
298
+ let(:strategy) { mock_strategy }
277
299
 
278
300
  before(:each) do
279
301
  subject.strategy = strategy
@@ -373,12 +395,6 @@ module DatabaseCleaner
373
395
  end
374
396
 
375
397
  describe "strategy=" do
376
- let(:mock_strategy) {
377
- mock("strategy").tap{|strategy|
378
- strategy.stub!(:to_ary => [strategy])
379
- }
380
- }
381
-
382
398
  it "should proxy symbolised strategies to create_strategy" do
383
399
  subject.should_receive(:create_strategy).with(:symbol)
384
400
  subject.strategy = :symbol
@@ -417,11 +433,8 @@ module DatabaseCleaner
417
433
  end
418
434
 
419
435
  it "returns the set strategy" do
420
- strategum = mock("strategy").tap{|strategy|
421
- strategy.stub!(:to_ary => [strategy])
422
- }
423
- subject.strategy = strategum
424
- subject.strategy.should eq strategum
436
+ subject.strategy = mock_strategy
437
+ subject.strategy.should eq mock_strategy
425
438
  end
426
439
  end
427
440
 
@@ -27,8 +27,8 @@ module DatabaseCleaner
27
27
  expected_counts.each do |model_class, expected_count|
28
28
  model_class.count.should equal(expected_count), "#{model_class} expected to have a count of #{expected_count} but was #{model_class.count}"
29
29
  end
30
- rescue Spec::Expectations::ExpectationNotMetError => e
31
- raise !sanity_check ? e : Spec::ExpectationNotMetError::ExpectationNotMetError.new("SANITY CHECK FAILURE! This should never happen here: #{e.message}")
30
+ rescue RSpec::Expectations::ExpectationNotMetError => e
31
+ raise !sanity_check ? e : RSpec::ExpectationNotMetError::ExpectationNotMetError.new("SANITY CHECK FAILURE! This should never happen here: #{e.message}")
32
32
  end
33
33
  end
34
34
 
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require 'redis'
2
3
  require 'database_cleaner/redis/base'
3
4
  require 'database_cleaner/shared_strategy'
4
5
 
@@ -18,10 +19,20 @@ module DatabaseCleaner
18
19
  it { should respond_to(:db) }
19
20
  it { should respond_to(:db=) }
20
21
 
21
- it "should store my describe db" do
22
- url = 'redis://localhost:6379/2'
23
- subject.db = 'redis://localhost:6379/2'
24
- subject.db.should eq url
22
+ context "when passing url" do
23
+ it "should store my describe db" do
24
+ url = 'redis://localhost:6379/2'
25
+ subject.db = 'redis://localhost:6379/2'
26
+ subject.db.should eq url
27
+ end
28
+ end
29
+
30
+ context "when passing connection" do
31
+ it "should store my describe db" do
32
+ connection = ::Redis.new :url => 'redis://localhost:6379/2'
33
+ subject.db = connection
34
+ subject.db.should eq connection
35
+ end
25
36
  end
26
37
 
27
38
  it "should default to :default" do
@@ -9,7 +9,7 @@ module DatabaseCleaner
9
9
  describe Truncation do
10
10
  before(:all) do
11
11
  config = YAML::load(File.open("#{File.dirname(__FILE__)}/../../../examples/config/redis.yml"))
12
- @redis = ::Redis.connect :url => config['test']['url']
12
+ @redis = ::Redis.new :url => config['test']['url']
13
13
  end
14
14
 
15
15
  before(:each) do
@@ -14,6 +14,7 @@ module PostgreSQLHelper
14
14
  @encoding = default_config['encoding'] || ENV['CHARSET'] || 'utf8'
15
15
  begin
16
16
  establish_connection(default_config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
17
+ ActiveRecord::Base.connection.drop_database(default_config['database']) rescue nil
17
18
  ActiveRecord::Base.connection.create_database(default_config['database'], default_config.merge('encoding' => @encoding))
18
19
  rescue Exception => e
19
20
  $stderr.puts e, *(e.backtrace)
@@ -32,7 +33,6 @@ module PostgreSQLHelper
32
33
  end
33
34
 
34
35
  def active_record_pg_migrate
35
- `dropdb #{default_config['database']}`
36
36
  create_db
37
37
  establish_connection
38
38
  ActiveRecord::Migrator.migrate 'spec/support/active_record/migrations'
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
- version: 1.5.1
4
+ version: 1.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben Mabey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-16 00:00:00.000000000 Z
11
+ date: 2016-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -268,14 +268,14 @@ dependencies:
268
268
  requirements:
269
269
  - - "~>"
270
270
  - !ruby/object:Gem::Version
271
- version: 2.11.0
271
+ version: 2.14.2
272
272
  type: :development
273
273
  prerelease: false
274
274
  version_requirements: !ruby/object:Gem::Requirement
275
275
  requirements:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
- version: 2.11.0
278
+ version: 2.14.2
279
279
  - !ruby/object:Gem::Dependency
280
280
  name: cucumber
281
281
  requirement: !ruby/object:Gem::Requirement
@@ -540,7 +540,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
540
540
  version: '0'
541
541
  requirements: []
542
542
  rubyforge_project:
543
- rubygems_version: 2.4.6
543
+ rubygems_version: 2.4.5.1
544
544
  signing_key:
545
545
  specification_version: 4
546
546
  summary: Strategies for cleaning databases. Can be used to ensure a clean state for