Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions lib/factory_bot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,7 @@
require "factory_bot/errors"
require "factory_bot/factory_runner"
require "factory_bot/strategy_syntax_method_registrar"
require "factory_bot/strategy_calculator"
require "factory_bot/strategy/build"
require "factory_bot/strategy/create"
require "factory_bot/strategy/attributes_for"
require "factory_bot/strategy/stub"
require "factory_bot/strategy/null"
require "factory_bot/strategy"
require "factory_bot/registry"
require "factory_bot/null_factory"
require "factory_bot/null_object"
Expand Down
5 changes: 2 additions & 3 deletions lib/factory_bot/factory.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,13 @@ def run(build_strategy, overrides, &block)

compile

strategy = StrategyCalculator.new(build_strategy).strategy.new
strategy = Strategy.lookup_strategy(build_strategy).new

evaluator = evaluator_class.new(strategy, overrides.symbolize_keys)
attribute_assigner = AttributeAssigner.new(evaluator, build_class, &compiled_constructor)

observer = CallbacksObserver.new(callbacks, evaluator)
evaluation =
Evaluation.new(evaluator, attribute_assigner, compiled_to_create, observer)
evaluation = Evaluation.new(evaluator, attribute_assigner, compiled_to_create, observer)

evaluation.notify(:before_all, nil)
instance = strategy.result(evaluation).tap(&block)
Expand Down
15 changes: 15 additions & 0 deletions lib/factory_bot/strategy.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
require "factory_bot/strategy/build"
require "factory_bot/strategy/create"
require "factory_bot/strategy/attributes_for"
require "factory_bot/strategy/stub"
require "factory_bot/strategy/null"

module FactoryBot
module Strategy
def self.lookup_strategy(name_or_object)
return name_or_object if name_or_object.is_a?(Class)

FactoryBot::Internal.strategy_by_name(name_or_object)
end
end
end
26 changes: 0 additions & 26 deletions lib/factory_bot/strategy_calculator.rb

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
describe FactoryBot::StrategyCalculator do
describe FactoryBot::Strategy do
it "returns the class passed when it is instantiated with a class" do
strategy = define_class("MyAwesomeClass")
calculator = FactoryBot::StrategyCalculator.new(strategy).strategy
result = described_class.lookup_strategy(strategy)

expect(calculator).to eq strategy
expect(result).to eq strategy
end

it "finds the strategy by name when instantiated with a symbol" do
strategy = define_class("MyAwesomeClass")
allow(FactoryBot::Internal).to receive(:strategy_by_name).and_return(strategy)
FactoryBot::StrategyCalculator.new(:build).strategy
described_class.lookup_strategy(:build)

expect(FactoryBot::Internal).to have_received(:strategy_by_name).with(:build)
end

it "returns the strategy found when instantiated with a symbol" do
strategy = define_class("MyAwesomeClass")
allow(FactoryBot::Internal).to receive(:strategy_by_name).and_return(strategy)
calculator = FactoryBot::StrategyCalculator.new(:build).strategy
result = described_class.lookup_strategy(:build)

expect(calculator).to eq strategy
expect(result).to eq strategy
end
end