clean(type_de_champ): remove magic factory

This commit is contained in:
Paul Chavard 2022-11-30 12:05:27 +01:00
parent 4eb6ec3e9d
commit c5901fbb95
8 changed files with 21 additions and 39 deletions

View file

@ -263,9 +263,9 @@ describe API::V1::DossiersController do
it 'should have rows' do
expect(subject.size).to eq(2)
expect(subject[0][:id]).to eq(1)
expect(subject[0][:champs].size).to eq(3)
expect(subject[0][:champs].map { |c| c[:value] }).to eq(['text', 'text', '42'])
expect(subject[0][:champs].map { |c| c[:type_de_champ][:type_champ] }).to eq(['text', 'text', 'number'])
expect(subject[0][:champs].size).to eq(1)
expect(subject[0][:champs].map { |c| c[:value] }).to eq(['text'])
expect(subject[0][:champs].map { |c| c[:type_de_champ][:type_champ] }).to eq(['text'])
end
end
end

View file

@ -226,28 +226,6 @@ FactoryBot.define do
parent = revision.revision_types_de_champ.find { |rtdc| rtdc.type_de_champ == champ_repetition.type_de_champ }
types_de_champ = revision.revision_types_de_champ.filter { |rtdc| rtdc.parent == parent }.map(&:type_de_champ)
type_de_champ_text = types_de_champ.find { |tdc| tdc.libelle == 'Nom' }
if !type_de_champ_text
type_de_champ_text = build(:type_de_champ_text,
procedure: champ_repetition.type_de_champ.procedure,
position: 0,
private: champ_repetition.private?,
parent: parent,
libelle: 'Nom')
types_de_champ.push(type_de_champ_text)
end
type_de_champ_number = types_de_champ.find { |tdc| tdc.libelle == 'Age' }
if !type_de_champ_number
type_de_champ_number = build(:type_de_champ_number,
procedure: champ_repetition.type_de_champ.procedure,
position: 1,
private: champ_repetition.private?,
parent: parent,
libelle: 'Age')
types_de_champ.push(type_de_champ_number)
end
evaluator.rows.times do |row|
champ_repetition.champs << types_de_champ.map do |type_de_champ|
build(:"champ_#{type_de_champ.type_champ}", dossier: champ_repetition.dossier, row: row, type_de_champ: type_de_champ, parent: champ_repetition, private: champ_repetition.private?)

View file

@ -19,7 +19,6 @@ FactoryBot.define do
transient do
administrateur {}
instructeurs { [] }
types_de_champ { [] }
types_de_champ_public { [] }
types_de_champ_private { [] }
updated_at { nil }
@ -27,10 +26,6 @@ FactoryBot.define do
end
after(:build) do |procedure, evaluator|
if evaluator.types_de_champ.present?
raise "use types_de_champ_public instead of types_de_champ"
end
initial_revision = build(:procedure_revision, procedure: procedure, dossier_submitted_message: evaluator.dossier_submitted_message)
if evaluator.types_de_champ_public.present?
@ -347,7 +342,11 @@ FactoryBot.define do
if libelle == 'drop_down_list'
libelle = 'simple_drop_down_list'
end
build(:"type_de_champ_#{type_champ}", procedure: procedure, mandatory: true, libelle: libelle, position: index)
if type_champ == 'repetition'
build(:type_de_champ_repetition, :with_types_de_champ, procedure: procedure, mandatory: true, libelle: libelle, position: index)
else
build(:"type_de_champ_#{type_champ}", procedure: procedure, mandatory: true, libelle: libelle, position: index)
end
end
build(:type_de_champ_drop_down_list, :long, procedure: procedure, mandatory: true, libelle: 'simple_choice_drop_down_list_long', position: TypeDeChamp.type_champs.size)
build(:type_de_champ_multiple_drop_down_list, :long, procedure: procedure, mandatory: true, libelle: 'multiple_choice_drop_down_list_long', position: TypeDeChamp.type_champs.size + 1)
@ -360,7 +359,11 @@ FactoryBot.define do
if libelle == 'drop_down_list'
libelle = 'simple_drop_down_list'
end
build(:"type_de_champ_#{type_champ}", procedure: procedure, libelle: libelle, position: index)
if type_champ == 'repetition'
build(:type_de_champ_repetition, :with_types_de_champ, procedure: procedure, libelle: libelle, position: index)
else
build(:"type_de_champ_#{type_champ}", procedure: procedure, libelle: libelle, position: index)
end
end
end
end

View file

@ -1,6 +1,6 @@
RSpec.describe Mutations::DossierModifierAnnotation, type: :graphql do
let(:admin) { create(:administrateur) }
let(:procedure) { create(:procedure, :published, :for_individual, :with_private_repetition, :with_type_de_champ_private, administrateurs: [admin]) }
let(:procedure) { create(:procedure, :published, :for_individual, types_de_champ_private: [{ type: :repetition, children: [{ libelle: 'Nom' }, { type: :integer_number, libelle: 'Age' }] }, {}], administrateurs: [admin]) }
let(:dossiers) { [] }
let(:instructeur) { create(:instructeur, followed_dossiers: dossiers) }

View file

@ -14,9 +14,9 @@ describe '20220705164551_remove_unused_champs' do
describe 'remove_unused_champs' do
it "with bad champs" do
expect(Champ.where(dossier: dossier).count).to eq(39)
expect(Champ.where(dossier: dossier).count).to eq(37)
run_task
expect(Champ.where(dossier: dossier).count).to eq(38)
expect(Champ.where(dossier: dossier).count).to eq(36)
end
end
end

View file

@ -31,7 +31,7 @@ shared_examples 'champ_spec' do
end
context 'when repetition not blank' do
let(:type_de_champ) { build(:type_de_champ_repetition) }
let(:type_de_champ) { build(:type_de_champ_repetition, :with_types_de_champ, procedure: build(:procedure)) }
let(:champ) { build(:champ_repetition, type_de_champ: type_de_champ) }
it { expect(champ.blank?).to be(false) }

View file

@ -1749,11 +1749,11 @@ describe Dossier do
context 'for Champs::Repetition with rows, original_champ.repetition and rows are duped' do
let(:dossier) { create(:dossier) }
let(:type_de_champ_repetition) { create(:type_de_champ_repetition, procedure: dossier.procedure) }
let(:type_de_champ_repetition) { create(:type_de_champ_repetition, :with_types_de_champ, procedure: dossier.procedure) }
let(:champ_repetition) { create(:champ_repetition, type_de_champ: type_de_champ_repetition, dossier: dossier) }
before { dossier.champs_public << champ_repetition }
it { expect(Champs::RepetitionChamp.where(dossier: new_dossier).first.champs.count).to eq(4) }
it { expect(Champs::RepetitionChamp.where(dossier: new_dossier).first.champs.count).to eq(2) }
it { expect(Champs::RepetitionChamp.where(dossier: new_dossier).first.champs.ids).not_to eq(champ_repetition.champs.ids) }
end

View file

@ -342,6 +342,7 @@ describe ProcedureExportService do
end
describe 'Repetitions sheet' do
let(:procedure) { create(:procedure, :published, :for_individual, types_de_champ_public: [{ type: :repetition, children: [{ libelle: 'Nom' }, { libelle: 'Age' }] }]) }
let!(:dossiers) do
[
create(:dossier, :en_instruction, :with_populated_champs, :with_individual, procedure: procedure),
@ -403,7 +404,7 @@ describe ProcedureExportService do
context 'with non unique labels' do
let(:dossier) { create(:dossier, :en_instruction, :with_populated_champs, :with_individual, procedure: procedure) }
let(:champ_repetition) { dossier.champs_public.find { |champ| champ.type_champ == 'repetition' } }
let(:type_de_champ_repetition) { create(:type_de_champ_repetition, procedure: procedure, libelle: champ_repetition.libelle) }
let(:type_de_champ_repetition) { create(:type_de_champ_repetition, :with_types_de_champ, procedure: procedure, libelle: champ_repetition.libelle) }
let!(:another_champ_repetition) { create(:champ_repetition, type_de_champ: type_de_champ_repetition, dossier: dossier) }
it 'should have sheets' do