Testing Callback Parameter Handling in factory_bot
This test suite examines the callback functionality in FactoryBot, focusing on callback name handling and parameter passing. The tests verify callback initialization, name normalization, and execution with different parameter configurations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
thoughtbot/factory_bot
spec/factory_bot/callback_spec.rb
describe FactoryBot::Callback do
it "has a name" do
expect(FactoryBot::Callback.new(:after_create, -> {}).name).to eq :after_create
end
it "converts strings to symbols" do
expect(FactoryBot::Callback.new("after_create", -> {}).name).to eq :after_create
end
it "runs its block with no parameters" do
ran_with = nil
FactoryBot::Callback.new(:after_create, -> { ran_with = [] }).run(:one, :two)
expect(ran_with).to eq []
end
it "runs its block with one parameter" do
ran_with = nil
FactoryBot::Callback.new(:after_create, ->(one) { ran_with = [one] }).run(:one, :two)
expect(ran_with).to eq [:one]
end
it "runs its block with two parameters" do
ran_with = nil
FactoryBot::Callback.new(:after_create, ->(one, two) { ran_with = [one, two] }).run(:one, :two)
expect(ran_with).to eq [:one, :two]
end
end