Sha256: 32e70e3a33a3887bded2129d887edf9bb21b9e157d6d0521d60b6061e67a413d

Contents?: true

Size: 1.27 KB

Versions: 113

Compression:

Stored size: 1.27 KB

Contents

require 'factory_girl/attribute/static'
require 'factory_girl/attribute/dynamic'
require 'factory_girl/attribute/association'
require 'factory_girl/attribute/sequence'

module FactoryGirl
  # @api private
  class Attribute
    attr_reader :name, :ignored

    def initialize(name, ignored)
      @name = name.to_sym
      @ignored = ignored
      ensure_non_attribute_writer!
    end

    def to_proc
      -> { }
    end

    def association?
      false
    end

    def alias_for?(attr)
      FactoryGirl.aliases_for(attr).include?(name)
    end

    private

    def ensure_non_attribute_writer!
      NonAttributeWriterValidator.new(@name).validate!
    end

    class NonAttributeWriterValidator
      def initialize(method_name)
        @method_name = method_name.to_s
        @method_name_setter_match = @method_name.match(/(.*)=$/)
      end

      def validate!
        if method_is_writer?
          raise AttributeDefinitionError, error_message
        end
      end

      private

      def method_is_writer?
        !!@method_name_setter_match
      end

      def attribute_name
        @method_name_setter_match[1]
      end

      def error_message
        "factory_girl uses '#{attribute_name} value' syntax rather than '#{attribute_name} = value'"
      end
    end
  end
end

Version data entries

113 entries across 100 versions & 12 rubygems

Version Path
ffactory_girl-4.8.2 lib/factory_girl/attribute.rb
factory_girl-4.9.0 lib/factory_girl/attribute.rb
ffactory_girl-4.8.1 lib/factory_girl/attribute.rb
factory_girl-4.8.1 lib/factory_girl/attribute.rb
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/factory_girl-4.8.0/lib/factory_girl/attribute.rb
factory_girl-4.8.0 lib/factory_girl/attribute.rb
ish_lib_manager-0.0.1 test/dummy/vendor/bundle/ruby/2.3.0/gems/factory_girl-4.7.0/lib/factory_girl/attribute.rb
factory_girl-4.7.0 lib/factory_girl/attribute.rb
opal-factory_girl-4.5.0.3 factory_girl/lib/factory_girl/attribute.rb
sc_core-0.0.7 test/dummy/vendor/bundle/ruby/2.2.0/gems/factory_girl-4.5.0/lib/factory_girl/attribute.rb
classiccms-0.7.5 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/attribute.rb
classiccms-0.7.4 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/attribute.rb
classiccms-0.7.3 vendor/bundle/gems/factory_girl-3.3.0/lib/factory_girl/attribute.rb
solidus_backend-1.0.0.pre3 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/attribute.rb
solidus_backend-1.0.0.pre2 vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/attribute.rb
solidus_backend-1.0.0.pre vendor/bundle/gems/factory_girl-4.5.0/lib/factory_girl/attribute.rb
apl-library-0.0.90 vendor/bundle/ruby/2.1.0/gems/factory_girl-4.4.0/lib/factory_girl/attribute.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/attribute.rb
apl-library-0.0.90 vendor/bundle/ruby/1.9.1/gems/factory_girl-4.4.0/lib/factory_girl/attribute.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/attribute.rb