From 054404fb37f025e800e255f5db1de0b4d0d3277b Mon Sep 17 00:00:00 2001 From: Micah Geisel Date: Sat, 26 May 2018 19:07:47 -0700 Subject: [PATCH] move strategy= and orm= over to Cleaners. --- lib/database_cleaner/configuration.rb | 48 +++++++++++++-------- spec/database_cleaner/configuration_spec.rb | 4 +- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/lib/database_cleaner/configuration.rb b/lib/database_cleaner/configuration.rb index 814f9d5..b68c74d 100644 --- a/lib/database_cleaner/configuration.rb +++ b/lib/database_cleaner/configuration.rb @@ -13,10 +13,30 @@ module DatabaseCleaner fetch([orm, opts]) { add_cleaner(orm, opts) } 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 = {}) self[[orm, opts]] = ::DatabaseCleaner::Base.new(orm, opts) end + + def remove_duplicates + replace(reduce(Cleaners.new) do |cleaners, (key, value)| + cleaners[key] = value unless cleaners.values.include?(value) + cleaners + end) + end end class Configuration @@ -25,7 +45,14 @@ module DatabaseCleaner end extend Forwardable - delegate [:[], :add_cleaner] => :cleaners + delegate [ + :[], + :strategy=, + :orm=, + + :add_cleaner, + :remove_duplicates, + ] => :cleaners attr_accessor :app_root, :logger, :cleaners @@ -37,16 +64,6 @@ module DatabaseCleaner @logger ||= Logger.new(STDOUT).tap { |l| l.level = Logger::ERROR } 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 connections.each { |connection| connection.start } end @@ -84,13 +101,6 @@ module DatabaseCleaner @cleaners.values end - def remove_duplicates - @cleaners = @cleaners.reduce({}) do |cleaners, (key, value)| - cleaners[key] = value unless cleaners.values.include?(value) - cleaners - end - end - private def called_externally?(caller) diff --git a/spec/database_cleaner/configuration_spec.rb b/spec/database_cleaner/configuration_spec.rb index 713c875..c7c84d1 100644 --- a/spec/database_cleaner/configuration_spec.rb +++ b/spec/database_cleaner/configuration_spec.rb @@ -1,8 +1,8 @@ module DatabaseCleaner class Configuration def stub_cleaners(array) - @cleaners = array.each.with_index.reduce({}) do |hash, (cleaner, index)| - hash.merge index => cleaner + @cleaners = array.each.with_index.reduce(Cleaners.new) do |cleaners, (cleaner, index)| + cleaners.merge index => cleaner end end end