Sha256: 836eccea3ac8e45805387ac2e39dca94618a8278c42e3b475b5341854775e0f7

Contents?: true

Size: 1.83 KB

Versions: 20

Compression:

Stored size: 1.83 KB

Contents

module FactoryGirl
  module Syntax
    module Default
      include Methods

      def define(&block)
        DSL.run(block)
      end

      def modify(&block)
        ModifyDSL.run(block)
      end

      class DSL
        def factory(name, options = {}, &block)
          factory = Factory.new(name, options)
          proxy = FactoryGirl::DefinitionProxy.new(factory.definition)
          proxy.instance_eval(&block) if block_given?

          FactoryGirl.register_factory(factory)

          proxy.child_factories.each do |(child_name, child_options, child_block)|
            parent_factory = child_options.delete(:parent) || name
            factory(child_name, child_options.merge(parent: parent_factory), &child_block)
          end
        end

        def sequence(name, *args, &block)
          FactoryGirl.register_sequence(Sequence.new(name, *args, &block))
        end

        def trait(name, &block)
          FactoryGirl.register_trait(Trait.new(name, &block))
        end

        def to_create(&block)
          FactoryGirl.to_create(&block)
        end

        def skip_create
          FactoryGirl.skip_create
        end

        def initialize_with(&block)
          FactoryGirl.initialize_with(&block)
        end

        def self.run(block)
          new.instance_eval(&block)
        end

        delegate :before, :after, :callback, to: :configuration

        private

        def configuration
          FactoryGirl.configuration
        end
      end

      class ModifyDSL
        def factory(name, options = {}, &block)
          factory = FactoryGirl.factory_by_name(name)
          proxy = FactoryGirl::DefinitionProxy.new(factory.definition.overridable)
          proxy.instance_eval(&block)
        end

        def self.run(block)
          new.instance_eval(&block)
        end
      end
    end
  end

  extend Syntax::Default
end

Version data entries

20 entries across 17 versions & 8 rubygems

Version Path
ffactory_girl-4.8.2 lib/factory_girl/syntax/default.rb
factory_girl-4.9.0 lib/factory_girl/syntax/default.rb
ffactory_girl-4.8.1 lib/factory_girl/syntax/default.rb
factory_girl-4.8.1 lib/factory_girl/syntax/default.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/factory_girl-4.8.0/lib/factory_girl/syntax/default.rb
factory_girl-4.8.0 lib/factory_girl/syntax/default.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/syntax/default.rb
factory_girl-4.7.0 lib/factory_girl/syntax/default.rb
opal-factory_girl-4.5.0.3 factory_girl/lib/factory_girl/syntax/default.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/syntax/default.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/syntax/default.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/syntax/default.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/syntax/default.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/apl-library-0.0.90/vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/syntax/default.rb
factory_girl-4.5.0 lib/factory_girl/syntax/default.rb
factory_girl-4.4.0 lib/factory_girl/syntax/default.rb
factory_girl-4.3.0 lib/factory_girl/syntax/default.rb