diff --git a/app/models/champs/departement_champ.rb b/app/models/champs/departement_champ.rb index ef86957ca..ac9e177be 100644 --- a/app/models/champs/departement_champ.rb +++ b/app/models/champs/departement_champ.rb @@ -55,7 +55,7 @@ class Champs::DepartementChamp < Champs::TextChamp end def value=(code) - if code&.size == 2 + if [2, 3].include?(code&.size) self.external_id = code super(APIGeoService.departement_name(code)) elsif code.blank? diff --git a/spec/controllers/api/v2/graphql_controller_spec.rb b/spec/controllers/api/v2/graphql_controller_spec.rb index 6110bf69a..7e3b6326e 100644 --- a/spec/controllers/api/v2/graphql_controller_spec.rb +++ b/spec/controllers/api/v2/graphql_controller_spec.rb @@ -37,6 +37,7 @@ describe API::V2::GraphqlController do end before do + allow(APIGeoService).to receive(:departement_name).with('01').and_return('Ain') instructeur.assign_to_procedure(procedure) end diff --git a/spec/factories/champ.rb b/spec/factories/champ.rb index eba6e8610..08b388523 100644 --- a/spec/factories/champ.rb +++ b/spec/factories/champ.rb @@ -117,7 +117,7 @@ FactoryBot.define do factory :champ_departements, class: 'Champs::DepartementChamp' do type_de_champ { association :type_de_champ_departements, procedure: dossier.procedure } - value { '971 - Guadeloupe' } + value { '01' } end factory :champ_communes, class: 'Champs::CommuneChamp' do diff --git a/spec/lib/tasks/deployment/20220705164551_remove_unused_champs_spec.rb b/spec/lib/tasks/deployment/20220705164551_remove_unused_champs_spec.rb index 3443bfc56..b55f42c2d 100644 --- a/spec/lib/tasks/deployment/20220705164551_remove_unused_champs_spec.rb +++ b/spec/lib/tasks/deployment/20220705164551_remove_unused_champs_spec.rb @@ -9,7 +9,10 @@ describe '20220705164551_remove_unused_champs' do rake_task.invoke end - before { champ_repetition.champs.first.update(type_de_champ: create(:type_de_champ)) } + before do + allow(APIGeoService).to receive(:departement_name).with('01').and_return('Ain') + champ_repetition.champs.first.update(type_de_champ: create(:type_de_champ)) + end after { rake_task.reenable } describe 'remove_unused_champs' do diff --git a/spec/models/champs/departement_champ_spec.rb b/spec/models/champs/departement_champ_spec.rb index cf42229e1..1c88c2f60 100644 --- a/spec/models/champs/departement_champ_spec.rb +++ b/spec/models/champs/departement_champ_spec.rb @@ -9,7 +9,7 @@ describe Champs::DepartementChamp, type: :model do let(:champ) { described_class.new } describe 'value', vcr: { cassette_name: 'api_geo_departements' } do - it 'with code' do + it 'with code having 2 chars' do champ.value = '01' expect(champ.external_id).to eq('01') expect(champ.code).to eq('01') @@ -19,6 +19,16 @@ describe Champs::DepartementChamp, type: :model do expect(champ.to_s).to eq('01 – Ain') end + it 'with code having 3 chars' do + champ.value = '971' + expect(champ.external_id).to eq('971') + expect(champ.code).to eq('971') + expect(champ.name).to eq('Guadeloupe') + expect(champ.value).to eq('Guadeloupe') + expect(champ.selected).to eq('971') + expect(champ.to_s).to eq('971 – Guadeloupe') + end + it 'with nil' do champ.write_attribute(:value, 'Ain') champ.write_attribute(:external_id, '01') diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 1769f1d7d..165870ec8 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -1669,6 +1669,7 @@ describe Dossier do end describe "#destroy" do + before { allow(APIGeoService).to receive(:departement_name).with('01').and_return('Ain') } let(:procedure) { create(:procedure, :with_all_champs, :with_all_annotations) } let(:transfer) { create(:dossier_transfer) } let(:dossier) { create(:dossier, :with_populated_champs, :with_populated_annotations, transfer: transfer, procedure: procedure) } diff --git a/spec/services/procedure_export_service_spec.rb b/spec/services/procedure_export_service_spec.rb index 3f3d93f08..efa2e01e2 100644 --- a/spec/services/procedure_export_service_spec.rb +++ b/spec/services/procedure_export_service_spec.rb @@ -3,6 +3,9 @@ require 'csv' describe ProcedureExportService do let(:procedure) { create(:procedure, :published, :for_individual, :with_all_champs) } let(:service) { ProcedureExportService.new(procedure, procedure.dossiers) } + before do + allow(APIGeoService).to receive(:departement_name).with('01').and_return('Ain') + end describe 'to_xlsx' do subject do