Merge pull request #10411 from tchak/fix-dossier-projection
fix(dossier): fix projected value on linked_drop_down_list
This commit is contained in:
commit
cb85d62d78
2 changed files with 9 additions and 8 deletions
|
@ -687,7 +687,7 @@ class TypeDeChamp < ApplicationRecord
|
||||||
def champ_value(type_champ, champ)
|
def champ_value(type_champ, champ)
|
||||||
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
||||||
# special case for linked drop down champ – it's blank implementation is not what you think
|
# special case for linked drop down champ – it's blank implementation is not what you think
|
||||||
if champ.blank? && (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?)
|
if (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?) && champ.blank?
|
||||||
dynamic_type_class.champ_default_value
|
dynamic_type_class.champ_default_value
|
||||||
else
|
else
|
||||||
dynamic_type_class.champ_value(champ)
|
dynamic_type_class.champ_value(champ)
|
||||||
|
@ -697,7 +697,7 @@ class TypeDeChamp < ApplicationRecord
|
||||||
def champ_value_for_api(type_champ, champ, version = 2)
|
def champ_value_for_api(type_champ, champ, version = 2)
|
||||||
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
||||||
# special case for linked drop down champ – it's blank implementation is not what you think
|
# special case for linked drop down champ – it's blank implementation is not what you think
|
||||||
if champ.blank? && (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?)
|
if (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?) && champ.blank?
|
||||||
dynamic_type_class.champ_default_api_value(version)
|
dynamic_type_class.champ_default_api_value(version)
|
||||||
else
|
else
|
||||||
dynamic_type_class.champ_value_for_api(champ, version)
|
dynamic_type_class.champ_value_for_api(champ, version)
|
||||||
|
@ -707,7 +707,7 @@ class TypeDeChamp < ApplicationRecord
|
||||||
def champ_value_for_export(type_champ, champ, path = :value)
|
def champ_value_for_export(type_champ, champ, path = :value)
|
||||||
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
||||||
# special case for linked drop down champ – it's blank implementation is not what you think
|
# special case for linked drop down champ – it's blank implementation is not what you think
|
||||||
if champ.blank? && (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?)
|
if (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?) && champ.blank?
|
||||||
dynamic_type_class.champ_default_export_value(path)
|
dynamic_type_class.champ_default_export_value(path)
|
||||||
else
|
else
|
||||||
dynamic_type_class.champ_value_for_export(champ, path)
|
dynamic_type_class.champ_value_for_export(champ, path)
|
||||||
|
@ -717,7 +717,7 @@ class TypeDeChamp < ApplicationRecord
|
||||||
def champ_value_for_tag(type_champ, champ, path = :value)
|
def champ_value_for_tag(type_champ, champ, path = :value)
|
||||||
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
dynamic_type_class = type_champ_to_class_name(type_champ).constantize
|
||||||
# special case for linked drop down champ – it's blank implementation is not what you think
|
# special case for linked drop down champ – it's blank implementation is not what you think
|
||||||
if champ.blank? && (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?)
|
if (type_champ != TypeDeChamp.type_champs.fetch(:linked_drop_down_list) || champ.nil? || champ.value.blank?) && champ.blank?
|
||||||
''
|
''
|
||||||
else
|
else
|
||||||
dynamic_type_class.champ_value_for_tag(champ, path)
|
dynamic_type_class.champ_value_for_tag(champ, path)
|
||||||
|
|
|
@ -3,23 +3,24 @@ describe DossierProjectionService do
|
||||||
subject { described_class.project(dossiers_ids, fields) }
|
subject { described_class.project(dossiers_ids, fields) }
|
||||||
|
|
||||||
context 'with multiple dossier' do
|
context 'with multiple dossier' do
|
||||||
let!(:procedure) { create(:procedure, :with_type_de_champ) }
|
let!(:procedure) { create(:procedure, types_de_champ_public: [{}, { type: :linked_drop_down_list }]) }
|
||||||
let!(:dossier_1) { create(:dossier, procedure: procedure) }
|
let!(:dossier_1) { create(:dossier, procedure: procedure) }
|
||||||
let!(:dossier_2) { create(:dossier, :en_construction, :archived, procedure: procedure) }
|
let!(:dossier_2) { create(:dossier, :en_construction, :archived, procedure: procedure) }
|
||||||
let!(:dossier_3) { create(:dossier, :en_instruction, procedure: procedure) }
|
let!(:dossier_3) { create(:dossier, :en_instruction, procedure: procedure) }
|
||||||
|
|
||||||
let(:dossiers_ids) { [dossier_3.id, dossier_1.id, dossier_2.id] }
|
let(:dossiers_ids) { [dossier_3.id, dossier_1.id, dossier_2.id] }
|
||||||
let(:fields) do
|
let(:fields) do
|
||||||
[
|
procedure.active_revision.types_de_champ_public.map do |type_de_champ|
|
||||||
{
|
{
|
||||||
"table" => "type_de_champ",
|
"table" => "type_de_champ",
|
||||||
"column" => procedure.active_revision.types_de_champ_public[0].stable_id.to_s
|
"column" => type_de_champ.stable_id.to_s
|
||||||
}
|
}
|
||||||
]
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
before do
|
before do
|
||||||
dossier_1.champs_public.first.update(value: 'champ_1')
|
dossier_1.champs_public.first.update(value: 'champ_1')
|
||||||
|
dossier_1.champs_public.second.update(value: '["test"]')
|
||||||
dossier_2.champs_public.first.update(value: 'champ_2')
|
dossier_2.champs_public.first.update(value: 'champ_2')
|
||||||
dossier_3.champs_public.first.destroy
|
dossier_3.champs_public.first.destroy
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue