Testando suas fábricas (e características) FactoryGirl

A maneira padrão de testar suas fábricas é com suas próprias especificações. A Thoughtbot tem uma boa solução para isso documentada em seu wiki. Mas como você lida com as características de suas fábricas ? Simples, você os adiciona ao seu código de teste assim:

require 'spec_helper'

FactoryGirl.factories.map(&:name).each do |factory_name|
describe
"factory #{factory_name}" do
it
'is valid' do
factory
= build(factory_name)

if factory.respond_to?(:valid?)
expect
(factory).to be_valid, factory.errors.full_messages.join(',')
end
end
end

describe
'with trait' do
FactoryGirl.factories[factory_name].definition.defined_traits.map(&:name).each do |trait_name|
it
"is valid with trait #{trait_name}" do
factory
= build(factory_name, trait_name)

if factory.respond_to?(:valid?)
expect
(factory).to be_valid, factory.errors.full_messages.join(',')
end
end
end
end
end