class FactoryGirl::Strategy::Stub

Public Instance Methods

association(runner) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 6
def association(runner)
  runner.run(:build_stubbed)
end
result(evaluation) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 10
def result(evaluation)
  evaluation.object.tap do |instance|
    stub_database_interaction_on_result(instance)
    evaluation.notify(:after_stub, instance)
  end
end

Private Instance Methods

connection() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 43
def connection
  raise 'stubbed models are not allowed to access the database'
end
created_at() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 65
def created_at
  @created_at ||= Time.now
end
destroy(*args) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 39
def destroy(*args)
  raise 'stubbed models are not allowed to access the database'
end
new_record?() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 31
def new_record?
  id.nil?
end
next_id() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 19
def next_id
  @@next_id += 1
end
persisted?() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 27
def persisted?
  !new_record?
end
reload() click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 47
def reload
  raise 'stubbed models are not allowed to access the database'
end
save(*args) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 35
def save(*args)
  raise 'stubbed models are not allowed to access the database'
end
stub_database_interaction_on_result(result_instance) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 23
def stub_database_interaction_on_result(result_instance)
  result_instance.id = next_id

  result_instance.instance_eval do
    def persisted?
      !new_record?
    end

    def new_record?
      id.nil?
    end

    def save(*args)
      raise 'stubbed models are not allowed to access the database'
    end

    def destroy(*args)
      raise 'stubbed models are not allowed to access the database'
    end

    def connection
      raise 'stubbed models are not allowed to access the database'
    end

    def reload
      raise 'stubbed models are not allowed to access the database'
    end

    def update_attribute(*args)
      raise 'stubbed models are not allowed to access the database'
    end

    def update_column(*args)
      raise 'stubbed models are not allowed to access the database'
    end
  end

  created_at_missing_default = result_instance.respond_to?(:created_at) && !result_instance.created_at
  result_instance_missing_created_at = !result_instance.respond_to?(:created_at)

  if created_at_missing_default || result_instance_missing_created_at
    result_instance.instance_eval do
      def created_at
        @created_at ||= Time.now
      end
    end
  end
end
update_attribute(*args) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 51
def update_attribute(*args)
  raise 'stubbed models are not allowed to access the database'
end
update_column(*args) click to toggle source
# File lib/factory_girl/strategy/stub.rb, line 55
def update_column(*args)
  raise 'stubbed models are not allowed to access the database'
end