Testing Attribute Alias Generation in FactoryBot
This test suite examines the alias functionality in FactoryBot, focusing on attribute and foreign key naming conventions. The tests verify how FactoryBot handles various alias patterns including standard attributes, foreign keys, and custom suffix configurations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
thoughtbot/factory_bot
spec/factory_bot/aliases_spec.rb
describe FactoryBot, "aliases" do
it "for an attribute should include the original attribute and a version suffixed with '_id'" do
aliases = FactoryBot.aliases_for(:test)
expect(aliases).to include(:test, :test_id)
end
it "for a foreign key should include both the suffixed and un-suffixed variants" do
aliases = FactoryBot.aliases_for(:test_id)
expect(aliases).to include(:test, :test_id)
end
it "for an attribute which starts with an underscore should not include a non-underscored version" do
aliases = FactoryBot.aliases_for(:_id)
expect(aliases).not_to include(:id)
end
end
describe FactoryBot, "after defining an alias" do
it "the list of aliases should include a variant with no suffix at all, and one with an '_id' suffix" do
FactoryBot.aliases << [/(.*)_suffix/, '\1']
aliases = FactoryBot.aliases_for(:test_suffix)
expect(aliases).to include(:test, :test_suffix_id)
end
end