1
0
Fork 0
mirror of https://github.com/thoughtbot/factory_bot.git synced 2022-11-09 11:43:51 -05:00
thoughtbot--factory_bot/lib/factory_girl/linter.rb

48 lines
1 KiB
Ruby
Raw Normal View History

2014-05-29 16:06:08 -04:00
module FactoryGirl
class Linter
def self.lint!(factories_to_lint)
new(factories_to_lint).lint!
end
def initialize(factories_to_lint)
@factories_to_lint = factories_to_lint
@invalid_factories = calculate_invalid_factories
end
def lint!
if invalid_factories.any?
raise InvalidFactoryError, error_message
end
end
attr_reader :factories_to_lint, :invalid_factories
2015-04-29 06:23:52 -04:00
private :factories_to_lint, :invalid_factories
private
2014-05-29 16:06:08 -04:00
def calculate_invalid_factories
factories_to_lint.inject({}) do |result, factory|
begin
FactoryGirl.create(factory.name)
rescue => error
result[factory] = error
2014-05-29 16:06:08 -04:00
end
result
2014-05-29 16:06:08 -04:00
end
end
def error_message
lines = invalid_factories.map do |factory, exception|
"* #{factory.name} - #{exception.message} (#{exception.class.name})"
end
2014-05-29 16:06:08 -04:00
<<-ERROR_MESSAGE.strip
The following factories are invalid:
#{lines.join("\n")}
2014-05-29 16:06:08 -04:00
ERROR_MESSAGE
end
end
end