Merge pull request #4793 from betagouv/fix-section-index-on-repetition
Usager : correction d'une erreur lors de l'affichage d'un titre de section dans un bloc répétable
This commit is contained in:
commit
a2d1d9c8f2
3 changed files with 34 additions and 9 deletions
|
@ -26,7 +26,9 @@ class Champ < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def siblings
|
def siblings
|
||||||
if public?
|
if parent
|
||||||
|
parent&.champs
|
||||||
|
elsif public?
|
||||||
dossier&.champs
|
dossier&.champs
|
||||||
else
|
else
|
||||||
dossier&.champs_private
|
dossier&.champs_private
|
||||||
|
|
|
@ -23,15 +23,17 @@ describe Champ do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#siblings' do
|
describe '#siblings' do
|
||||||
let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private, types_de_champ_count: 1, types_de_champ_private_count: 1) }
|
let(:procedure) { create(:procedure, :with_type_de_champ, :with_type_de_champ_private, :with_repetition, types_de_champ_count: 1, types_de_champ_private_count: 1) }
|
||||||
let(:dossier) { create(:dossier, procedure: procedure) }
|
let(:dossier) { create(:dossier, procedure: procedure) }
|
||||||
let(:public_champ) { dossier.champs.first }
|
let(:public_champ) { dossier.champs.first }
|
||||||
let(:private_champ) { dossier.champs_private.first }
|
let(:private_champ) { dossier.champs_private.first }
|
||||||
|
let(:champ_in_repetition) { dossier.champs.find(&:repetition?).champs.first }
|
||||||
let(:standalone_champ) { create(:champ, dossier: nil) }
|
let(:standalone_champ) { create(:champ, dossier: nil) }
|
||||||
|
|
||||||
it 'returns the sibling champs of a champ' do
|
it 'returns the sibling champs of a champ' do
|
||||||
expect(public_champ.siblings).to eq(dossier.champs)
|
expect(public_champ.siblings).to eq(dossier.champs)
|
||||||
expect(private_champ.siblings).to eq(dossier.champs_private)
|
expect(private_champ.siblings).to eq(dossier.champs_private)
|
||||||
|
expect(champ_in_repetition.siblings).to eq(champ_in_repetition.parent.champs)
|
||||||
expect(standalone_champ.siblings).to be_nil
|
expect(standalone_champ.siblings).to be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -11,14 +11,35 @@ describe Champs::HeaderSectionChamp do
|
||||||
create(:type_de_champ_email, order_place: 5)
|
create(:type_de_champ_email, order_place: 5)
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
let(:procedure) { create(:procedure, types_de_champ: types_de_champ) }
|
|
||||||
let(:dossier) { create(:dossier, procedure: procedure) }
|
|
||||||
let(:first_header) { dossier.champs[0] }
|
|
||||||
let(:second_header) { dossier.champs[3] }
|
|
||||||
|
|
||||||
it 'returns the index of the section (starting from 1)' do
|
context 'for root-level champs' do
|
||||||
expect(first_header.section_index).to eq 1
|
let(:procedure) { create(:procedure, types_de_champ: types_de_champ) }
|
||||||
expect(second_header.section_index).to eq 2
|
let(:dossier) { create(:dossier, procedure: procedure) }
|
||||||
|
let(:first_header) { dossier.champs[0] }
|
||||||
|
let(:second_header) { dossier.champs[3] }
|
||||||
|
|
||||||
|
it 'returns the index of the section (starting from 1)' do
|
||||||
|
expect(first_header.section_index).to eq 1
|
||||||
|
expect(second_header.section_index).to eq 2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'for repetition champs' do
|
||||||
|
let(:procedure) { create(:procedure, :with_repetition) }
|
||||||
|
let(:dossier) { create(:dossier, procedure: procedure) }
|
||||||
|
|
||||||
|
let(:repetition_tdc) { procedure.types_de_champ.find(&:repetition?) }
|
||||||
|
let(:first_header) { dossier.champs.first.champs[0] }
|
||||||
|
let(:second_header) { dossier.champs.first.champs[3] }
|
||||||
|
|
||||||
|
before do
|
||||||
|
repetition_tdc.types_de_champ = types_de_champ
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'returns the index of the section in the repetition (starting from 1)' do
|
||||||
|
expect(first_header.section_index).to eq 1
|
||||||
|
expect(second_header.section_index).to eq 2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue