Sha256: f7d2565f3a1942af21d57c04e5ace283ffe1b6cbfbf5e8ee76e11d88fab63985

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

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

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

      def set(attribute, value, ignored = false)
        if ignored
          @ignored_attributes[attribute] = value
        else
          @instance.send(:"#{attribute}=", value)
        end
      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.1.2 lib/factory_girl/proxy/build.rb