Sha256: c01d649aefd4de95e3542c9c96b4b19c29d17b3b7d372505761de5d7b48950ee

Contents?: true

Size: 1.8 KB

Versions: 34

Compression:

Stored size: 1.8 KB

Contents

class Factory
  module Syntax

    # Extends ActiveRecord::Base to provide generation methods for factories.
    #
    # Usage:
    #
    #   require 'factory_girl/syntax/generate'
    #
    #   Factory.define :user do |factory|
    #     factory.name 'Billy Bob'
    #     factory.email 'billy@bob.example.com'
    #   end
    #
    #   # Creates a saved instance without raising (same as saving the result
    #   # of Factory.build)
    #   User.generate(:name => 'Johnny')
    #
    #   # Creates a saved instance and raises when invalid (same as
    #   # Factory.create)
    #   User.generate!
    #
    #   # Creates an unsaved instance (same as Factory.build)
    #   User.spawn
    #
    #   # Creates an instance and yields it to the passed block
    #   User.generate do |user|
    #     # ...do something with user...
    #   end
    #
    # This syntax was derived from Rick Bradley and Yossef Mendelssohn's
    # object_daddy.
    module Generate
      module ActiveRecord #:nodoc:

        def self.included(base) # :nodoc:
          base.extend ClassMethods
        end

        module ClassMethods #:nodoc:

          def generate(overrides = {}, &block)
            instance = Factory.build(name.underscore, overrides)
            instance.save
            yield(instance) if block_given?
            instance
          end

          def generate!(overrides = {}, &block)
            instance = Factory.create(name.underscore, overrides)
            yield(instance) if block_given?
            instance
          end

          def spawn(overrides = {}, &block)
            instance = Factory.build(name.underscore, overrides)
            yield(instance) if block_given?
            instance
          end

        end

      end
    end
  end
end

ActiveRecord::Base.send(:include, Factory::Syntax::Generate::ActiveRecord)

Version data entries

34 entries across 34 versions & 13 rubygems

Version Path
BrettRasmussen-factory_girl-1.2.2 lib/factory_girl/syntax/generate.rb
BrettRasmussen-factory_girl-1.2.3 lib/factory_girl/syntax/generate.rb
agibralter-factory_girl-1.2.1 lib/factory_girl/syntax/generate.rb
lacomartincik-factory_girl-1.2.1.1 lib/factory_girl/syntax/generate.rb
masa-iwasaki-factory_girl-1.2.1.1 lib/factory_girl/syntax/generate.rb
qrush-factory_girl-1.2.1.1 lib/factory_girl/syntax/generate.rb
thoughtbot-factory_girl-1.2.0 lib/factory_girl/syntax/generate.rb
thoughtbot-factory_girl-1.2.1 lib/factory_girl/syntax/generate.rb
thoughtbot-factory_girl-1.2.2 lib/factory_girl/syntax/generate.rb
ttilley-factory_girl-1.2.2.1 lib/factory_girl/syntax/generate.rb
ttilley-factory_girl-1.2.2.2 lib/factory_girl/syntax/generate.rb
ttilley-factory_girl-1.2.2 lib/factory_girl/syntax/generate.rb
vitalish-factory_girl-1.2.10 lib/factory_girl/syntax/generate.rb
factory_girl-1.3.3 lib/factory_girl/syntax/generate.rb
vitalish-factory_girl-1.2.9 lib/factory_girl/syntax/generate.rb
vitalish-factory_girl-1.2.8 lib/factory_girl/syntax/generate.rb
vitalish-factory_girl-1.2.7 lib/factory_girl/syntax/generate.rb
vitalish-factory_girl-1.2.6 lib/factory_girl/syntax/generate.rb
factory_girl-1.3.2 lib/factory_girl/syntax/generate.rb
factory_girl-1.3.1 lib/factory_girl/syntax/generate.rb