review(tech): utilise un code unique pr les elements de l'autocomplete, corrections de typos, amelioration du code

Co-authored-by: LeSim <mail@simon.lehericey.net>
This commit is contained in:
mfo 2023-11-09 09:59:04 +01:00 committed by Martin
parent c7d5bf8dc7
commit 87c3615774
15 changed files with 39 additions and 33 deletions

View file

@ -8,7 +8,7 @@ class Procedure::ChorusFormComponent < ApplicationComponent
def map_attribute_to_autocomplete_endpoint
{
centre_de_coup: data_sources_search_centre_couts_path,
centre_de_cout: data_sources_search_centre_couts_path,
domaine_fonctionnel: data_sources_search_domaine_fonct_path,
referentiel_de_programmation: data_sources_search_ref_programmation_path
}
@ -16,8 +16,8 @@ class Procedure::ChorusFormComponent < ApplicationComponent
def format_displayed_value(attribute_name)
case attribute_name
when :centre_de_coup
ChorusConfiguration.format_centre_de_coup_label(@chorus_configuration.centre_de_coup)
when :centre_de_cout
ChorusConfiguration.format_centre_de_cout_label(@chorus_configuration.centre_de_cout)
when :domaine_fonctionnel
ChorusConfiguration.format_domaine_fonctionnel_label(@chorus_configuration.domaine_fonctionnel)
when :referentiel_de_programmation
@ -29,8 +29,8 @@ class Procedure::ChorusFormComponent < ApplicationComponent
def format_hidden_value(attribute_name)
case attribute_name
when :centre_de_coup
@chorus_configuration.centre_de_coup.to_json
when :centre_de_cout
@chorus_configuration.centre_de_cout.to_json
when :domaine_fonctionnel
@chorus_configuration.domaine_fonctionnel.to_json
when :referentiel_de_programmation

View file

@ -1,9 +1,15 @@
= form_for([procedure, @chorus_configuration],url: admin_procedure_chorus_path(procedure), method: :put) do |f|
- map_attribute_to_autocomplete_endpoint.map do |chorus_configuration_attribute, datasource_endpoint|
- label_class_name = "#{chorus_configuration_attribute}-label"
- label_id = "#{chorus_configuration_attribute}-label"
.fr-select-group
= f.label chorus_configuration_attribute, class: 'fr-label', id: label_class_name
= render Dsfr::ComboboxComponent.new form: f, name: :chorus_configuration_attribute, url: datasource_endpoint, selected: format_displayed_value(chorus_configuration_attribute), id: chorus_configuration_attribute, class: 'fr-select', describedby: label_class_name do
= f.label chorus_configuration_attribute, class: 'fr-label', id: label_id
= render Dsfr::ComboboxComponent.new form: f,
url: datasource_endpoint,
selected: format_displayed_value(chorus_configuration_attribute),
id: chorus_configuration_attribute,
class: 'fr-select',
describedby: label_id,
name: :chorus_configuration_attribute do
= f.hidden_field chorus_configuration_attribute, data: { value_slot: 'data' }, value: format_hidden_value(chorus_configuration_attribute)
= f.submit "Enregister", class: 'fr-btn'

View file

@ -96,7 +96,7 @@ class TypesDeChampEditor::ChampComponent < ApplicationComponent
if coordinate.private?
true
else
!TypeDeChamp::PRIVATE_TYPES.include?(type_champ)
!TypeDeChamp::PRIVATE_ONLY_TYPES.include?(type_champ)
end
end

View file

@ -35,7 +35,7 @@ module Administrateurs
def configurations_params
params.require(:chorus_configuration)
.permit(:centre_de_coup, :domaine_fonctionnel, :referentiel_de_programmation)
.permit(:centre_de_cout, :domaine_fonctionnel, :referentiel_de_programmation)
end
end
end

View file

@ -10,7 +10,7 @@ class DataSources::ChorusController < ApplicationController
def search_centre_couts
result_json = APIBretagneService.new.search_centre_couts(code_or_label: params[:q])
render json: format_result(result_json:,
label_formatter: ChorusConfiguration.method(:format_centre_de_coup_label))
label_formatter: ChorusConfiguration.method(:format_centre_de_cout_label))
end
def search_ref_programmation
@ -25,7 +25,7 @@ class DataSources::ChorusController < ApplicationController
result_json.map do |item|
{
label: label_formatter.call(item),
value: "#{item[:label]} - #{item[:code_programme]}",
value: item[:code],
data: item
}
end

View file

@ -2,11 +2,11 @@ class ChorusConfiguration
include ActiveModel::Model
include ActiveModel::Attributes
attribute :centre_de_coup, :simple_json, default: '{}'
attribute :centre_de_cout, :simple_json, default: '{}'
attribute :domaine_fonctionnel, :simple_json, default: '{}'
attribute :referentiel_de_programmation, :simple_json, default: '{}'
def self.format_centre_de_coup_label(api_result)
def self.format_centre_de_cout_label(api_result)
return "" if api_result.blank?
api_result = api_result.symbolize_keys
"#{api_result[:description]} - #{api_result[:code]}"
@ -26,7 +26,7 @@ class ChorusConfiguration
def complete?
[
centre_de_coup,
centre_de_cout,
domaine_fonctionnel,
referentiel_de_programmation
].all?(&:present?)

View file

@ -1231,8 +1231,8 @@ class Dossier < ApplicationRecord
if procedure.chorusable? && procedure.chorus.complete?
columns += [
['Domaine Fonctionnel', procedure.chorus_configuration.domaine_fonctionnel.code],
['Referentiel De Programmation', procedure.chorus_configuration.referentiel_de_programmation.code],
['Centre De Coup', procedure.chorus_configuration.centre_de_coup.code]
['Référentiel De Programmation', procedure.chorus_configuration.referentiel_de_programmation.code],
['Centre De Coup', procedure.chorus_configuration.centre_de_cout.code]
]
end
columns += [

View file

@ -118,7 +118,7 @@ class TypeDeChamp < ApplicationRecord
type_champs.fetch(:epci)
]
PRIVATE_TYPES = [
PRIVATE_ONLY_TYPES = [
type_champs.fetch(:engagement_juridique)
]

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[7.0].define(version: 2023_10_26_161609) do
ActiveRecord::Schema[7.0].define(version: 2023_11_03_084116) do
# These are extensions that must be enabled in order to support this database
enable_extension "pgcrypto"
enable_extension "plpgsql"

View file

@ -38,7 +38,7 @@ describe TypesDeChampEditor::ChampComponent, type: :component do
let(:coordinate) { procedure.draft_revision.revision_types_de_champ_public.first }
it 'does not include Engagement Juridique' do
expect(page).not_to have_css(:option, text: "Engagement Juridique")
expect(page).not_to have_css('option', text: "Engagement Juridique")
end
end
@ -46,7 +46,7 @@ describe TypesDeChampEditor::ChampComponent, type: :component do
let(:coordinate) { procedure.draft_revision.revision_types_de_champ_private.first }
it 'includes Engagement Juridique' do
expect(page).to have_css(:option, text: "Engagement Juridique")
expect(page).to have_css('option', text: "Engagement Juridique")
end
end
end

View file

@ -52,10 +52,10 @@ describe Administrateurs::ChorusController, type: :controller do
let(:referentiel_de_programmation) { nil }
context "partial valid payload" do
let(:centre_de_coup) { '{"code":"D00C8DX004","label":"Aumôniers+protestant","ville":null,"code_postal":null,"description":"Aumoniers+protestants"}' }
let(:centre_de_cout) { '{"code":"D00C8DX004","label":"Aumôniers+protestant","ville":null,"code_postal":null,"description":"Aumoniers+protestants"}' }
let(:chorus_configuration_params) do
{
centre_de_coup:, domaine_fonctionnel:, referentiel_de_programmation:
centre_de_cout:, domaine_fonctionnel:, referentiel_de_programmation:
}
end
it 'updates params and redirect back to complete all infos' do
@ -64,19 +64,19 @@ describe Administrateurs::ChorusController, type: :controller do
procedure.reload
expect(procedure.chorus_configuration.centre_de_coup).to eq(JSON.parse(centre_de_coup))
expect(procedure.chorus_configuration.centre_de_cout).to eq(JSON.parse(centre_de_cout))
expect(procedure.chorus_configuration.domaine_fonctionnel).to eq(nil)
expect(procedure.chorus_configuration.referentiel_de_programmation).to eq(nil)
end
end
context "full valid payload" do
let(:centre_de_coup) { '{"code":"D00C8DX004","label":"Aumôniers+protestant","ville":null,"code_postal":null,"description":"Aumoniers+protestants"}' }
let(:centre_de_cout) { '{"code":"D00C8DX004","label":"Aumôniers+protestant","ville":null,"code_postal":null,"description":"Aumoniers+protestants"}' }
let(:domaine_fonctionnel) { '{"code":"0105-05-01","label":"Formation+des+élites+et+cadres+de+sécurité+et+de+défense","description":null,"code_programme":"105"}' }
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_cout:, domaine_fonctionnel:, referentiel_de_programmation:
}
end
@ -86,7 +86,7 @@ describe Administrateurs::ChorusController, type: :controller do
procedure.reload
expect(procedure.chorus_configuration.centre_de_coup).to eq(JSON.parse(centre_de_coup))
expect(procedure.chorus_configuration.centre_de_cout).to eq(JSON.parse(centre_de_cout))
expect(procedure.chorus_configuration.domaine_fonctionnel).to eq(JSON.parse(domaine_fonctionnel))
expect(procedure.chorus_configuration.referentiel_de_programmation).to eq(JSON.parse(referentiel_de_programmation))
end

View file

@ -428,12 +428,12 @@ FactoryBot.define do
end
trait :partial_chorus do
chorus { ChorusConfiguration.new(centre_de_coup: { a: 1 }) }
chorus { ChorusConfiguration.new(centre_de_cout: { a: 1 }) }
end
trait :filled_chorus do
chorus do
ChorusConfiguration.new(centre_de_coup: { a: 1 },
ChorusConfiguration.new(centre_de_cout: { a: 1 },
domaine_fonctionnel: { b: 2 },
referentiel_de_programmation: { c: 3 })
end

View file

@ -14,9 +14,9 @@ describe '20220705164551_remove_unused_champs' do
describe 'remove_unused_champs' do
it "with bad champs" do
expect(Champ.where(dossier: dossier).count).to eq(43)
expect(Champ.where(dossier: dossier).count).to eq(44)
run_task
expect(Champ.where(dossier: dossier).count).to eq(42)
expect(Champ.where(dossier: dossier).count).to eq(43)
end
end
end

View file

@ -26,7 +26,7 @@ describe ChorusConfiguration do
it 'works with existing args' do
expect do
cc = ChorusConfiguration.new()
cc.assign_attributes(centre_de_coup: {}, domaine_fonctionnel: {}, referentiel_de_programmation: {})
cc.assign_attributes(centre_de_cout: {}, domaine_fonctionnel: {}, referentiel_de_programmation: {})
end.not_to raise_error
end
end

View file

@ -149,7 +149,7 @@ describe ProcedureExportService do
it 'includes chorus headers' do
expected_headers = [
'Domaine Fonctionnel',
'Referentiel De Programmation',
'Référentiel De Programmation',
'Centre De Coup'
]