class MockleyCrew::FactoryBuilder

Attributes

errors[RW]
factory[RW]
options[RW]

Public Class Methods

new(params = {}) click to toggle source
# File lib/mockley_crew/factory_builder.rb, line 5
def initialize params = {}
  raise Errors::InvalidDataError unless params.is_a? Hash
  raise Errors::InvalidDataError unless params.keys.include?("factory")
  
  @factory = params["factory"]
  unless MockleyCrew.configuration.registered_factory?(@factory.to_sym)
    @factory = @factory.singularize
    unless MockleyCrew.configuration.registered_factory?(@factory.to_sym)
      raise Errors::InvalidFactoryError
    end
  end

  params["options"] ||= {}
  params["options"].reverse_merge!(
    "amount" => 1,
    "attributes" => {}
  )
  @options = params["options"]

  raise Errors::InvalidAmountError unless @options["amount"].to_i > 0

  @errors = {}
end

Public Instance Methods

save() click to toggle source
# File lib/mockley_crew/factory_builder.rb, line 29
def save
  begin
    FactoryBot.create_list(@factory.to_sym, @options["amount"].to_i, @options["attributes"])
    return true
  rescue NoMethodError => e
    self.errors[:attributes] = { message: "Invalid Attributes", detailed_error: e }
  rescue ActiveRecord::RecordInvalid => e
    self.errors[:attributes] = { message: "Model Validation Error", detailed_error: e }
  end
  return false
end