move strategy= and orm= over to Cleaners.

This commit is contained in:
Micah Geisel 2018-05-26 19:07:47 -07:00
parent 47fb64a8a9
commit 054404fb37
2 changed files with 31 additions and 21 deletions

View File

@ -13,10 +13,30 @@ module DatabaseCleaner
fetch([orm, opts]) { add_cleaner(orm, opts) } fetch([orm, opts]) { add_cleaner(orm, opts) }
end end
# TODO privatize in 2.0 def strategy=(strategy)
add_cleaner(:autodetect) if none?
values.each { |cleaner| cleaner.strategy = strategy }
remove_duplicates
end
def orm=(orm)
add_cleaner(:autodetect) if none?
values.each { |cleaner| cleaner.orm = orm }
remove_duplicates
end
# TODO privatize the following methods in 2.0
def add_cleaner(orm, opts = {}) def add_cleaner(orm, opts = {})
self[[orm, opts]] = ::DatabaseCleaner::Base.new(orm, opts) self[[orm, opts]] = ::DatabaseCleaner::Base.new(orm, opts)
end end
def remove_duplicates
replace(reduce(Cleaners.new) do |cleaners, (key, value)|
cleaners[key] = value unless cleaners.values.include?(value)
cleaners
end)
end
end end
class Configuration class Configuration
@ -25,7 +45,14 @@ module DatabaseCleaner
end end
extend Forwardable extend Forwardable
delegate [:[], :add_cleaner] => :cleaners delegate [
:[],
:strategy=,
:orm=,
:add_cleaner,
:remove_duplicates,
] => :cleaners
attr_accessor :app_root, :logger, :cleaners attr_accessor :app_root, :logger, :cleaners
@ -37,16 +64,6 @@ module DatabaseCleaner
@logger ||= Logger.new(STDOUT).tap { |l| l.level = Logger::ERROR } @logger ||= Logger.new(STDOUT).tap { |l| l.level = Logger::ERROR }
end end
def strategy=(stratagem)
connections.each { |connect| connect.strategy = stratagem }
remove_duplicates
end
def orm=(orm)
connections.each { |connect| connect.orm = orm }
remove_duplicates
end
def start def start
connections.each { |connection| connection.start } connections.each { |connection| connection.start }
end end
@ -84,13 +101,6 @@ module DatabaseCleaner
@cleaners.values @cleaners.values
end end
def remove_duplicates
@cleaners = @cleaners.reduce({}) do |cleaners, (key, value)|
cleaners[key] = value unless cleaners.values.include?(value)
cleaners
end
end
private private
def called_externally?(caller) def called_externally?(caller)

View File

@ -1,8 +1,8 @@
module DatabaseCleaner module DatabaseCleaner
class Configuration class Configuration
def stub_cleaners(array) def stub_cleaners(array)
@cleaners = array.each.with_index.reduce({}) do |hash, (cleaner, index)| @cleaners = array.each.with_index.reduce(Cleaners.new) do |cleaners, (cleaner, index)|
hash.merge index => cleaner cleaners.merge index => cleaner
end end
end end
end end