add cnaf champ
This commit is contained in:
parent
354735ace4
commit
c76d1043fa
3 changed files with 82 additions and 0 deletions
42
app/models/champs/cnaf_champ.rb
Normal file
42
app/models/champs/cnaf_champ.rb
Normal file
|
@ -0,0 +1,42 @@
|
|||
# == Schema Information
|
||||
#
|
||||
# Table name: champs
|
||||
#
|
||||
# id :integer not null, primary key
|
||||
# data :jsonb
|
||||
# fetch_external_data_exceptions :string is an Array
|
||||
# private :boolean default(FALSE), not null
|
||||
# row :integer
|
||||
# type :string
|
||||
# value :string
|
||||
# value_json :jsonb
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# dossier_id :integer
|
||||
# etablissement_id :integer
|
||||
# external_id :string
|
||||
# parent_id :bigint
|
||||
# type_de_champ_id :integer
|
||||
#
|
||||
class Champs::CnafChamp < Champs::TextChamp
|
||||
store_accessor :value_json, :numero_allocataire, :code_postal
|
||||
|
||||
def fetch_external_data?
|
||||
true
|
||||
end
|
||||
|
||||
def fetch_external_data
|
||||
APIParticulier::CnafAdapter.new(
|
||||
procedure.api_particulier_token,
|
||||
numero_allocataire,
|
||||
code_postal,
|
||||
procedure.api_particulier_sources
|
||||
).to_params
|
||||
end
|
||||
|
||||
def external_id
|
||||
if numero_allocataire.present? && code_postal.present?
|
||||
{ code_postal: code_postal, numero_allocataire: numero_allocataire }.to_json
|
||||
end
|
||||
end
|
||||
end
|
|
@ -185,6 +185,10 @@ FactoryBot.define do
|
|||
type_de_champ { association :type_de_champ_annuaire_education, procedure: dossier.procedure }
|
||||
end
|
||||
|
||||
factory :champ_cnaf, class: 'Champs::CnafChamp' do
|
||||
type_de_champ { association :type_de_champ_cnaf, procedure: dossier.procedure }
|
||||
end
|
||||
|
||||
factory :champ_siret, class: 'Champs::SiretChamp' do
|
||||
association :type_de_champ, factory: [:type_de_champ_siret]
|
||||
association :etablissement, factory: [:etablissement]
|
||||
|
|
36
spec/models/champs/cnaf_champ_spec.rb
Normal file
36
spec/models/champs/cnaf_champ_spec.rb
Normal file
|
@ -0,0 +1,36 @@
|
|||
describe Champs::CnafChamp, type: :model do
|
||||
let(:champ) { described_class.new }
|
||||
|
||||
describe 'numero_allocataire and code_postal' do
|
||||
before do
|
||||
champ.numero_allocataire = '1234567'
|
||||
champ.code_postal = '12345'
|
||||
end
|
||||
|
||||
it 'saves numero_allocataire and code_postal' do
|
||||
expect(champ.numero_allocataire).to eq('1234567')
|
||||
expect(champ.code_postal).to eq('12345')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'external_id' do
|
||||
context 'when only one data is given' do
|
||||
before do
|
||||
champ.numero_allocataire = '1234567'
|
||||
champ.save
|
||||
end
|
||||
|
||||
it { expect(champ.external_id).to be_nil }
|
||||
end
|
||||
|
||||
context 'when all data required for an external fetch are given' do
|
||||
before do
|
||||
champ.numero_allocataire = '1234567'
|
||||
champ.code_postal = '12345'
|
||||
champ.save
|
||||
end
|
||||
|
||||
it { expect(JSON.parse(champ.external_id)).to eq({ "code_postal" => "12345", "numero_allocataire" => "1234567" }) }
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue