Sha256: a5cb83ac82d52789b8ca80364fa2645f106e236e0dd40ef7468777a907e35803

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

module FactoryGirl
  class Proxy #:nodoc:
    class Build < Proxy #:nodoc:
      def initialize(klass)
        super(klass)
        @instance = klass.new
      end

      def get(attribute)
        if @ignored_attributes.has_key?(attribute)
          @ignored_attributes[attribute]
        else
          @instance.send(attribute)
        end
      end

      def set(attribute, value)
        @instance.send(:"#{attribute}=", value)
      end

      def associate(name, factory_name, overrides)
        method = get_method(overrides[:method])
        factory = FactoryGirl.factory_by_name(factory_name)
        set(name, factory.run(method, remove_method(overrides)))
      end

      def association(factory_name, overrides = {})
        method = get_method(overrides[:method])
        factory = FactoryGirl.factory_by_name(factory_name)
        factory.run(method, remove_method(overrides))
      end

      def remove_method(overrides)
        overrides.dup.delete_if {|key, value| key == :method}
      end

      def result(to_create)
        run_callbacks(:after_build)
        @instance
      end

      def parse_method(method)
        method ||= :create
        if :build == method
          return Proxy::Build
        elsif :create == method
          return Proxy::Create
        else
          raise "unrecognized method #{method}"
        end
      end

      alias_method :get_method, :parse_method
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
factory_girl-2.2.0 lib/factory_girl/proxy/build.rb