diff --git a/lib/factory_bot/strategy/stub.rb b/lib/factory_bot/strategy/stub.rb index 1d93427d..f0aac8d7 100644 --- a/lib/factory_bot/strategy/stub.rb +++ b/lib/factory_bot/strategy/stub.rb @@ -102,12 +102,14 @@ def clear_changes_information(result_instance) end def set_timestamps(result_instance) + timestamp = Time.current + if missing_created_at?(result_instance) - result_instance.created_at = Time.current + result_instance.created_at = timestamp end if missing_updated_at?(result_instance) - result_instance.updated_at = Time.current + result_instance.updated_at = timestamp end end diff --git a/spec/acceptance/stub_spec.rb b/spec/acceptance/stub_spec.rb index 75ea3a11..fd580010 100644 --- a/spec/acceptance/stub_spec.rb +++ b/spec/acceptance/stub_spec.rb @@ -29,6 +29,24 @@ end end +describe "a stubbed instance with timestamps" do + include FactoryBot::Syntax::Methods + + before do + define_model("ModelWithTimestamps", created_at: :datetime, updated_at: :datetime) + + FactoryBot.define do + factory :model_with_timestamps + end + end + + subject { build_stubbed(:model_with_timestamps) } + + it "assigns the exact same datetime" do + expect(subject.created_at).to eq(subject.updated_at) + end +end + describe "a stubbed instance overriding strategy" do include FactoryBot::Syntax::Methods