diff --git a/app/models/concerns/dossier_rebase_concern.rb b/app/models/concerns/dossier_rebase_concern.rb index d09ad1ba0..24d2fc71d 100644 --- a/app/models/concerns/dossier_rebase_concern.rb +++ b/app/models/concerns/dossier_rebase_concern.rb @@ -14,12 +14,12 @@ module DossierRebaseConcern end def can_rebase? - revision != procedure.published_revision && + procedure.published_revision.present? && revision != procedure.published_revision && (brouillon? || accepted_en_construction_changes? || accepted_en_instruction_changes?) end def pending_changes - revision.compare(procedure.published_revision) + procedure.published_revision.present? ? revision.compare(procedure.published_revision) : [] end def can_rebase_mandatory_change?(stable_id) diff --git a/spec/models/dossier_rebase_concern_spec.rb b/spec/models/concern/dossier_rebase_concern_spec.rb similarity index 98% rename from spec/models/dossier_rebase_concern_spec.rb rename to spec/models/concern/dossier_rebase_concern_spec.rb index ae4838caa..08af234dd 100644 --- a/spec/models/dossier_rebase_concern_spec.rb +++ b/spec/models/concern/dossier_rebase_concern_spec.rb @@ -1,4 +1,4 @@ -describe Dossier do +describe DossierRebaseConcern do describe '#can_rebase?' do let(:procedure) { create(:procedure, :with_type_de_champ_mandatory, :with_type_de_champ_private, :with_yes_no) } let(:attestation_template) { procedure.draft_revision.attestation_template.find_or_revise! } @@ -6,6 +6,17 @@ describe Dossier do let(:private_type_de_champ) { procedure.active_revision.types_de_champ_private.first } let(:mandatory_type_de_champ) { procedure.active_revision.types_de_champ_public.find(&:mandatory?) } + context 'on unpublished procedure' do + context 'en_construction' do + let(:dossier) { create(:dossier, :en_construction, procedure: procedure) } + + it 'should be false' do + expect(dossier.pending_changes).to be_empty + expect(dossier.can_rebase?).to be_falsey + end + end + end + context 'en_construction' do let(:dossier) { create(:dossier, :en_construction, procedure: procedure) }