From 1cb18e51ac036eb87508f7aa08d585b5f71103b6 Mon Sep 17 00:00:00 2001 From: Pierre de La Morinerie Date: Wed, 22 Apr 2020 11:46:42 +0200 Subject: [PATCH] champ: return the parent dossier even when discarded Dossier has a `default_scope { kept }`. Because of that, when the parent dossier is discarded, `champ.dossier` will return nil. We should kill the default scope. But meanwhile, ensure that `champ.dossier` returns even a discarded dossier. --- app/models/champ.rb | 2 +- spec/models/champ_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/champ.rb b/app/models/champ.rb index 7c21fdae2..9e2c2cf63 100644 --- a/app/models/champ.rb +++ b/app/models/champ.rb @@ -1,5 +1,5 @@ class Champ < ApplicationRecord - belongs_to :dossier, inverse_of: :champs, touch: true + belongs_to :dossier, -> { with_discarded }, inverse_of: :champs, touch: true belongs_to :type_de_champ, inverse_of: :champ belongs_to :parent, class_name: 'Champ' has_many :commentaires diff --git a/spec/models/champ_spec.rb b/spec/models/champ_spec.rb index f0368e424..119be869d 100644 --- a/spec/models/champ_spec.rb +++ b/spec/models/champ_spec.rb @@ -3,6 +3,17 @@ describe Champ do it_should_behave_like "champ_spec" + describe "associations" do + it { is_expected.to belong_to(:dossier) } + + context 'when the parent dossier is discarded' do + let(:discarded_dossier) { create(:dossier, :discarded) } + subject(:champ) { discarded_dossier.champs.first } + + it { expect(champ.reload.dossier).to eq discarded_dossier } + end + end + describe "validations" do let(:row) { 1 } let(:champ) { create(:champ, type_de_champ: create(:type_de_champ), row: row) }