Sha256: fd2c53217614904bbb725de862f42ca284f6b98bf991049a921a77507a42a2bd

Contents?: true

Size: 1.25 KB

Versions: 15

Compression:

Stored size: 1.25 KB

Contents

module MockleyCrew
  class FactoryBuilder
    attr_accessor :factory, :options, :errors

    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

    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
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
mockley_crew-1.3.9 lib/mockley_crew/factory_builder.rb
mockley_crew-1.3.8 lib/mockley_crew/factory_builder.rb
mockley_crew-1.3.7 lib/mockley_crew/factory_builder.rb
mockley_crew-1.2.2 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.9 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.8 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.7 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.6 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.5 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.4 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.3 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.2 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.1 lib/mockley_crew/factory_builder.rb
mockley_crew-1.1.0 lib/mockley_crew/factory_builder.rb
mockley_crew-1.0.0 lib/mockley_crew/factory_builder.rb