Skip to content

Commit d47c062

Browse files
committed
add a failing spec that shows duping leaks dirty tracking
1 parent 337f32d commit d47c062

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

spec/mobility/plugins/active_record/dirty_spec.rb

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,30 @@ def values; @values ||= {}; end
200200
expect(instance.changes).to eq({ "title_fr" => [nil, "Titre en Francais"] })
201201
end
202202
end
203+
204+
it "does not dirty original object when duped" do
205+
Mobility.locale = locale = :en
206+
instance = model_class.create(title: "foo")
207+
dupe = instance.dup
208+
209+
aggregate_failures do
210+
expect(instance.changed?).to eq(false)
211+
expect(dupe.changed?).to eq(false)
212+
213+
backend_for(dupe, :title).write(:en, "bar")
214+
215+
expect(instance.changed?).to eq(false)
216+
expect(dupe.changed?).to eq(true)
217+
218+
dupe.save
219+
220+
expect(instance.changed?).to eq(false)
221+
expect(dupe.changed?).to eq(false)
222+
223+
expect(instance.previous_changes).to include({ "title_en" => [nil, "foo"]})
224+
expect(dupe.previous_changes).to include({ "title_en" => ["foo", "bar"]})
225+
end
226+
end
203227
end
204228

205229
describe "suffix methods" do

0 commit comments

Comments
 (0)