fix(dossier): fix apply_diff with multiple changed rows
This commit is contained in:
parent
3b9efbc5ca
commit
c417614695
2 changed files with 5 additions and 6 deletions
|
@ -153,14 +153,11 @@ module DossierCloneConcern
|
|||
|
||||
diff[:added].each { _1.update_column(:dossier_id, id) }
|
||||
|
||||
# a bit of a hack to work around unicity index
|
||||
remove_group_id = ULID.generate
|
||||
diff[:updated].each do |champ|
|
||||
champs_index.fetch(champ.public_id).update(row_id: remove_group_id)
|
||||
champs_index.fetch(champ.public_id)&.destroy!
|
||||
champ.update_column(:dossier_id, id)
|
||||
end
|
||||
|
||||
Champ.where(row_id: remove_group_id).destroy_all
|
||||
diff[:removed].each(&:destroy!)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -334,15 +334,17 @@ RSpec.describe DossierCloneConcern do
|
|||
subject { dossier.merge_fork(forked_dossier) }
|
||||
|
||||
context 'with updated champ' do
|
||||
let(:repetition_champ) { dossier.project_champs_public.last }
|
||||
let(:updated_champ) { forked_dossier.champs.find { _1.stable_id == 99 } }
|
||||
let(:updated_repetition_champ) { forked_dossier.champs.find { _1.stable_id == 994 } }
|
||||
let(:updated_repetition_champs) { forked_dossier.champs.filter { _1.stable_id == 994 } }
|
||||
|
||||
before do
|
||||
repetition_champ.add_row(updated_by: 'test')
|
||||
dossier.champs.each do |champ|
|
||||
champ.update(value: 'old value')
|
||||
end
|
||||
updated_champ.update(value: 'new value')
|
||||
updated_repetition_champ.update(value: 'new value in repetition')
|
||||
updated_repetition_champs.each { _1.update(value: 'new value in repetition') }
|
||||
dossier.debounce_index_search_terms_flag.remove
|
||||
end
|
||||
|
||||
|
|
Loading…
Reference in a new issue