refactor(champ): simplify siret champ
This commit is contained in:
parent
edba12705b
commit
3384b535c5
6 changed files with 24 additions and 38 deletions
|
@ -2,9 +2,9 @@ class Champs::SiretController < ApplicationController
|
|||
before_action :authenticate_logged_user!
|
||||
|
||||
def show
|
||||
@position = params[:position]
|
||||
extract_siret
|
||||
find_etablisement
|
||||
@champ = policy_scope(Champ).find(params[:champ_id])
|
||||
@siret = read_param_value(@champ.input_name, 'value')
|
||||
@etablissement = @champ.etablissement
|
||||
|
||||
if @siret.empty?
|
||||
return clear_siret_and_etablissement
|
||||
|
@ -34,22 +34,6 @@ class Champs::SiretController < ApplicationController
|
|||
|
||||
private
|
||||
|
||||
def extract_siret
|
||||
if params[:dossier].key?(:champs_attributes)
|
||||
@siret = params[:dossier][:champs_attributes][@position][:value]
|
||||
@attribute = "dossier[champs_attributes][#{@position}][etablissement_attributes]"
|
||||
else
|
||||
@siret = params[:dossier][:champs_private_attributes][@position][:value]
|
||||
@attribute = "dossier[champs_private_attributes][#{@position}][etablissement_attributes]"
|
||||
end
|
||||
end
|
||||
|
||||
def find_etablisement
|
||||
@champ = policy_scope(Champ).find(params[:champ_id])
|
||||
@etablissement = @champ.etablissement
|
||||
@procedure_id = @champ.dossier.procedure.id
|
||||
end
|
||||
|
||||
def find_etablissement_with_siret
|
||||
APIEntrepriseService.create_etablissement(@champ, @siret, current_user.id)
|
||||
end
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
<%= render_to_element(".siret-info-#{@position}",
|
||||
<%= render_to_element("##{@champ.input_group_id} .siret-info",
|
||||
partial: 'shared/champs/siret/etablissement',
|
||||
locals: {
|
||||
siret: @siret,
|
||||
attribute: @attribute,
|
||||
etablissement: @etablissement }) %>
|
||||
locals: { siret: @siret, etablissement: @etablissement }) %>
|
||||
|
|
|
@ -2,11 +2,11 @@
|
|||
id: champ.input_id,
|
||||
aria: { describedby: champ.describedby_id },
|
||||
placeholder: champ.libelle,
|
||||
data: { remote: true, debounce: true, url: champs_siret_path(form.index), params: { champ_id: champ&.id }.to_query, spinner: true },
|
||||
data: { remote: true, debounce: true, url: champs_siret_path(champ.id), spinner: true },
|
||||
required: champ.mandatory?,
|
||||
pattern: "[0-9]{14}",
|
||||
title: "Le numéro de SIRET doit comporter exactement 14 chiffres"
|
||||
.spinner.right.hidden
|
||||
.siret-info{ class: "siret-info-#{form.index}" }
|
||||
.siret-info
|
||||
- if champ.etablissement.present?
|
||||
= render partial: 'shared/dossiers/editable_champs/etablissement_titre', locals: { etablissement: champ.etablissement }
|
||||
|
|
|
@ -141,9 +141,9 @@ Rails.application.routes.draw do
|
|||
end
|
||||
|
||||
namespace :champs do
|
||||
get ':position/siret', to: 'siret#show', as: :siret
|
||||
get ':position/dossier_link', to: 'dossier_link#show', as: :dossier_link
|
||||
post ':position/carte', to: 'carte#show', as: :carte
|
||||
get ':champ_id/siret', to: 'siret#show', as: :siret
|
||||
|
||||
get ':champ_id/carte/features', to: 'carte#index', as: :carte_features
|
||||
post ':champ_id/carte/features', to: 'carte#create'
|
||||
|
|
|
@ -1,23 +1,22 @@
|
|||
describe Champs::SiretController, type: :controller do
|
||||
let(:user) { create(:user) }
|
||||
let(:procedure) do
|
||||
tdc_siret = build(:type_de_champ_siret, procedure: nil)
|
||||
create(:procedure, :published, types_de_champ: [tdc_siret])
|
||||
end
|
||||
let(:procedure) { create(:procedure, :published, :with_siret) }
|
||||
|
||||
describe '#show' do
|
||||
let(:dossier) { create(:dossier, user: user, procedure: procedure) }
|
||||
let(:champ) { dossier.champs.first }
|
||||
|
||||
let(:champs_attributes) do
|
||||
champ_attributes = []
|
||||
champ_attributes[champ.id] = { value: siret }
|
||||
champ_attributes
|
||||
end
|
||||
let(:params) do
|
||||
{
|
||||
champ_id: champ.id,
|
||||
dossier: {
|
||||
champs_attributes: {
|
||||
'1' => { value: siret.to_s }
|
||||
}
|
||||
},
|
||||
position: '1'
|
||||
champs_attributes: champs_attributes
|
||||
}
|
||||
}
|
||||
end
|
||||
let(:siret) { '' }
|
||||
|
@ -47,7 +46,7 @@ describe Champs::SiretController, type: :controller do
|
|||
end
|
||||
|
||||
it 'clears any information or error message' do
|
||||
expect(response.body).to include('.siret-info-1')
|
||||
expect(response.body).to include("##{champ.input_group_id} .siret-info")
|
||||
expect(response.body).to include('innerHTML = ""')
|
||||
end
|
||||
end
|
||||
|
@ -120,7 +119,7 @@ describe Champs::SiretController, type: :controller do
|
|||
end
|
||||
|
||||
context 'when user is not signed in' do
|
||||
subject! { get :show, params: { position: '1' }, format: :js, xhr: true }
|
||||
subject! { get :show, params: { champ_id: champ.id }, format: :js, xhr: true }
|
||||
|
||||
it { expect(response.code).to eq('401') }
|
||||
end
|
||||
|
|
|
@ -154,6 +154,12 @@ FactoryBot.define do
|
|||
end
|
||||
end
|
||||
|
||||
trait :with_siret do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
build(:type_de_champ_siret, procedure: procedure)
|
||||
end
|
||||
end
|
||||
|
||||
trait :with_yes_no do
|
||||
after(:build) do |procedure, _evaluator|
|
||||
build(:type_de_champ_yes_no, procedure: procedure)
|
||||
|
|
Loading…
Add table
Reference in a new issue