Sha256: d7907e32ce5d2838ac0ea81ba3c4aa6efa606789ce155cdf7c0ecea3dc485e43

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module FactoryGirl

  # Raised when defining an invalid attribute:
  # * Defining an attribute which has a name ending in "="
  # * Defining an attribute with both a static and lazy value
  # * Defining an attribute twice in the same factory
  class AttributeDefinitionError < RuntimeError
  end

  class Attribute #:nodoc:
    include Comparable

    attr_reader :name, :ignored

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

    def add_to(proxy)
    end

    def association?
      false
    end

    def priority
      1
    end

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

    def <=>(another)
      return nil unless another.is_a? Attribute
      self.priority <=> another.priority
    end

    def ==(another)
      self.object_id == another.object_id
    end

    private

    def ensure_non_attribute_writer!
      if @name.to_s =~ /=$/
        attribute_name = $`
        raise AttributeDefinitionError,
          "factory_girl uses 'f.#{attribute_name} value' syntax " +
          "rather than 'f.#{attribute_name} = value'"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
factory_girl-2.2.0 lib/factory_girl/attribute.rb