models: require belong_to associations on type_de_champ

- Make `type_de_champ.procedure` a requirement;
- Move the procedure_id assignation to `before_validation` (otherwise
the record is invalid, and never gets saved);
This commit is contained in:
Pierre de La Morinerie 2020-07-20 17:20:44 +02:00
parent 6328011f60
commit 5a7bd24fba
3 changed files with 6 additions and 4 deletions

View file

@ -7,6 +7,8 @@ FactoryBot.define do
mandatory { false }
add_attribute(:private) { false }
association :procedure
factory :type_de_champ_text do
type_champ { TypeDeChamp.type_champs.fetch(:text) }
end

View file

@ -156,14 +156,14 @@ shared_examples 'type_de_champ_spec' do
describe "repetition" do
let(:procedure) { create(:procedure) }
let(:type_de_champ) { create(:type_de_champ_repetition, procedure: procedure) }
let(:type_de_champ_text) { create(:type_de_champ_text) }
let(:type_de_champ_text) { create(:type_de_champ_text, procedure: procedure) }
let(:type_de_champ_integer_number_attrs) { attributes_for(:type_de_champ_integer_number) }
it "associates nested types_de_champ to the parent procedure" do
expect(type_de_champ.types_de_champ.size).to eq(0)
expect(procedure.types_de_champ.size).to eq(1)
procedure.update(types_de_champ_attributes: [
procedure.update!(types_de_champ_attributes: [
{
id: type_de_champ.id,
libelle: type_de_champ.libelle,