thoughtbot/factory_girl

View on GitHub
lib/factory_bot/find_definitions.rb

Summary

Maintainability
A
0 mins
Test Coverage
module FactoryBot
  class << self
    # An Array of strings specifying locations that should be searched for
    # factory definitions. By default, factory_bot will attempt to require
    # "factories", "test/factories" and "spec/factories". Only the first
    # existing file will be loaded.
    attr_accessor :definition_file_paths
  end

  self.definition_file_paths = %w[factories test/factories spec/factories]

  def self.find_definitions
    absolute_definition_file_paths = definition_file_paths.map { |path| File.expand_path(path) }

    absolute_definition_file_paths.uniq.each do |path|
      load_file_or_directory(path)
    end
  end

  def self.load_file_or_directory(path)
    load("#{path}.rb") if File.exist?("#{path}.rb")

    load path if File.file? path

    if File.directory? path
      Dir[File.join(path, "**", "*.rb")].sort.each do |file|
        load file
      end
    end
  end
end