diff --git a/app/components/procedure/card/chorus_component.rb b/app/components/procedure/card/chorus_component.rb index e4830ce70..88a36ab3b 100644 --- a/app/components/procedure/card/chorus_component.rb +++ b/app/components/procedure/card/chorus_component.rb @@ -7,7 +7,7 @@ class Procedure::Card::ChorusComponent < ApplicationComponent @procedure.chorusable? end - def error_messages - [] + def complete? + @procedure.chorus_configuration.complete? end end diff --git a/app/components/procedure/card/chorus_component/chorus_component.html.haml b/app/components/procedure/card/chorus_component/chorus_component.html.haml index 209591865..8fd65667b 100644 --- a/app/components/procedure/card/chorus_component/chorus_component.html.haml +++ b/app/components/procedure/card/chorus_component/chorus_component.html.haml @@ -1,11 +1,7 @@ .fr-col-6.fr-col-md-4.fr-col-lg-3.chorus-component = link_to edit_admin_procedure_chorus_path(@procedure), class: 'fr-tile fr-enlarge-link', title: 'Configurer le cadre budgetaire Chorus' do .fr-tile__body.flex.column.align-center.justify-between - - if error_messages.present? - %div - %span.icon.refuse - %p.fr-tile-status-error À modifier - - elsif @count == 0 + - if !@procedure.chorus_configuration.complete? %div %span.icon.clock %p.fr-tile-status-todo À compléter diff --git a/app/models/chorus_configuration.rb b/app/models/chorus_configuration.rb index de2f1c792..de2602385 100644 --- a/app/models/chorus_configuration.rb +++ b/app/models/chorus_configuration.rb @@ -49,4 +49,12 @@ class ChorusConfiguration api_result = api_result.symbolize_keys "#{api_result[:label]} - #{api_result[:code]}" end + + def complete? + [ + centre_de_coup, + domaine_fonctionnel, + referentiel_de_programmation + ].all?(&:present?) + end end diff --git a/app/views/administrateurs/chorus/edit.html.haml b/app/views/administrateurs/chorus/edit.html.haml index 8f6037e99..bf7c2b1b5 100644 --- a/app/views/administrateurs/chorus/edit.html.haml +++ b/app/views/administrateurs/chorus/edit.html.haml @@ -5,7 +5,7 @@ .container - %h1.mb-2 + %h1.fr-h1 Cadre budgétaire = render Procedure::ChorusFormComponent.new(procedure: @procedure) diff --git a/spec/controllers/administrateurs/chorus_controller_spec.rb b/spec/controllers/administrateurs/chorus_controller_spec.rb index 30f12b1cd..c239a8d26 100644 --- a/spec/controllers/administrateurs/chorus_controller_spec.rb +++ b/spec/controllers/administrateurs/chorus_controller_spec.rb @@ -57,7 +57,7 @@ describe Administrateurs::ChorusController, type: :controller do let(:referentiel_de_programmation) { '{"code":"010101010101","label":"DOTATIONS+CARPA+AJ+ET+AUTRES+INTERVENTIONS","description":null,"code_programme":"101"}' } let(:chorus_configuration_params) do { - centre_de_coup:, domaine_fonctionnel:, referentiel_de_programmation:, + centre_de_coup:, domaine_fonctionnel:, referentiel_de_programmation: } end diff --git a/spec/factories/procedure.rb b/spec/factories/procedure.rb index cc2eb519f..a545fab33 100644 --- a/spec/factories/procedure.rb +++ b/spec/factories/procedure.rb @@ -422,6 +422,22 @@ FactoryBot.define do trait :svr do sva_svr { SVASVRConfiguration.new(decision: :svr).attributes } end + + trait :empty_chorus do + chorus { ChorusConfiguration.new } + end + + trait :partial_chorus do + chorus { ChorusConfiguration.new(centre_de_coup: { a: 1 }) } + end + + trait :filled_chorus do + chorus do + ChorusConfiguration.new(centre_de_coup: { a: 1 }, + domaine_fonctionnel: { b: 2 }, + referentiel_de_programmation: { c: 3 }) + end + end end end diff --git a/spec/models/chorus_configuration_spec.rb b/spec/models/chorus_configuration_spec.rb index 08d636234..5298b4e42 100644 --- a/spec/models/chorus_configuration_spec.rb +++ b/spec/models/chorus_configuration_spec.rb @@ -1,19 +1,16 @@ describe ChorusConfiguration do - subject { create(:procedure) } - it { is_expected.to be_valid } - context 'empty' do - subject { create(:procedure, chorus: {}) } + subject { create(:procedure, :empty_chorus) } it { is_expected.to be_valid } end context 'partially filled chorus_configuration' do - subject { create(:procedure, chorus: { 'centre_de_cout' => '1' }) } + subject { create(:procedure, :partial_chorus) } it { is_expected.to be_valid } end context 'fully filled chorus_configuration' do - subject { create(:procedure, chorus: { 'centre_de_coup' => {}, 'domaine_fonctionnel' => {}, 'referentiel_de_programmation' => {} }) } + subject { create(:procedure, :filled_chorus) } it { is_expected.to be_valid } end @@ -33,4 +30,23 @@ describe ChorusConfiguration do end.not_to raise_error end end + + describe '#complete?' do + subject { procedure.chorus_configuration.complete? } + + context 'without data' do + let(:procedure) { create(:procedure, :empty_chorus) } + it { is_expected.to be_falsey } + end + + context 'with partial data' do + let(:procedure) { create(:procedure, :partial_chorus) } + it { is_expected.to be_falsey } + end + + context 'with all data' do + let(:procedure) { create(:procedure, :filled_chorus) } + it { is_expected.to be_truthy } + end + end end