class FactoryBot::Strategy::Stub
Constants
- DISABLED_PERSISTENCE_METHODS
Public Class Methods
next_id=(id)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 27 def self.next_id=(id) @@next_id = id end
Public Instance Methods
association(runner)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 31 def association(runner) runner.run(:build_stubbed) end
result(evaluation)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 35 def result(evaluation) evaluation.object.tap do |instance| stub_database_interaction_on_result(instance) set_timestamps(instance) clear_changes_information(instance) evaluation.notify(:after_stub, instance) end end
to_sym()
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 44 def to_sym :stub end
Private Instance Methods
clear_changes_information(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 86 def clear_changes_information(result_instance) if result_instance.respond_to?(:clear_changes_information) result_instance.clear_changes_information end end
destroyed?()
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 68 def destroyed? nil end
has_settable_id?(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 81 def has_settable_id?(result_instance) !result_instance.class.respond_to?(:primary_key) || result_instance.class.primary_key end
missing_created_at?(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 102 def missing_created_at?(result_instance) result_instance.respond_to?(:created_at) && result_instance.respond_to?(:created_at=) && result_instance.created_at.blank? end
missing_updated_at?(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 108 def missing_updated_at?(result_instance) result_instance.respond_to?(:updated_at) && result_instance.respond_to?(:updated_at=) && result_instance.updated_at.blank? end
new_record?()
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 64 def new_record? false end
next_id()
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 50 def next_id @@next_id += 1 end
persisted?()
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 60 def persisted? true end
set_timestamps(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 92 def set_timestamps(result_instance) if missing_created_at?(result_instance) result_instance.created_at = Time.current end if missing_updated_at?(result_instance) result_instance.updated_at = Time.current end end
stub_database_interaction_on_result(result_instance)
click to toggle source
# File lib/factory_bot/strategy/stub.rb, line 54 def stub_database_interaction_on_result(result_instance) if has_settable_id?(result_instance) result_instance.id ||= next_id end result_instance.instance_eval do def persisted? true end def new_record? false end def destroyed? nil end DISABLED_PERSISTENCE_METHODS.each do |write_method| define_singleton_method(write_method) do |*args| raise "stubbed models are not allowed to access the database - "\ "#{self.class}##{write_method}(#{args.join(",")})" end end end end