From 36dadd44a2db3bcf072a771cd2618cad440e3d8a Mon Sep 17 00:00:00 2001 From: Pierre Merlin Date: Wed, 14 Oct 2026 10:53:44 +0200 Subject: [PATCH] test: ensure find returns models without pending or previous changes Cover changes, changes_to_save, saved_changes and previous_changes, for single and multiple ids, find_by_id and strict loading. Co-Authored-By: Claude Sonnet 5.5 --- spec/base_spec.rb | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/spec/base_spec.rb b/spec/base_spec.rb index bcfa0fb..49bd82e 100644 --- a/spec/base_spec.rb +++ b/spec/base_spec.rb @@ -77,6 +77,38 @@ def foo expect(base.changed?).to be false end + describe 'clean state after find' do + def expect_clean(model) + expect(model.changed?).to be false + expect(model.changes).to be_empty + expect(model.changes_to_save).to be_empty + expect(model.saved_changes).to be_empty + expect(model.previous_changes).to be_empty + end + + it 'returns a model without any pending or previous changes' do + created = BaseTest.create!(name: 'joe') + expect_clean(BaseTest.find(created.id)) + end + + it 'returns clean models when finding several ids' do + created = [BaseTest.create!(name: 'joe'), BaseTest.create!(name: 'bob')] + found = BaseTest.find(created.map(&:id)) + expect(found.size).to eq 2 + found.each { |model| expect_clean(model) } + end + + it 'returns a clean model from find_by_id' do + created = BaseTest.create!(name: 'joe') + expect_clean(BaseTest.find_by_id(created.id)) + end + + it 'returns a clean model when strict loading' do + created = BaseTest.create!(name: 'joe') + expect_clean(BaseTest.find(created.id, with_strict_loading: true)) + end + end + it 'stores not stringified changes' do compare = CompareTest.create! compare.age = '42'