Merge pull request #10977 from tchak/champ-oui-non-improve-format-on-export
ETQ Instructeur, je veux pouvoir faire la différence entre un champ Oui/Non vide et “Non”
This commit is contained in:
commit
1b188f65b0
10 changed files with 61 additions and 18 deletions
|
@ -78,6 +78,7 @@ class API::V2::Schema < GraphQL::Schema
|
|||
Types::Champs::TextChampType,
|
||||
Types::Champs::TitreIdentiteChampType,
|
||||
Types::Champs::EngagementJuridiqueChampType,
|
||||
Types::Champs::YesNoChampType,
|
||||
Types::GeoAreas::ParcelleCadastraleType,
|
||||
Types::GeoAreas::SelectionUtilisateurType,
|
||||
Types::PersonneMoraleType,
|
||||
|
|
|
@ -509,6 +509,9 @@ class API::V2::StoredQuery
|
|||
... on CheckboxChamp {
|
||||
checked: value
|
||||
}
|
||||
... on YesNoChamp {
|
||||
selected: value
|
||||
}
|
||||
... on DecimalNumberChamp {
|
||||
decimalNumber: value
|
||||
}
|
||||
|
|
|
@ -4605,6 +4605,31 @@ type WarningMessage {
|
|||
message: String!
|
||||
}
|
||||
|
||||
type YesNoChamp implements Champ {
|
||||
"""
|
||||
L'identifiant du champDescriptor de ce champ
|
||||
"""
|
||||
champDescriptorId: String!
|
||||
id: ID!
|
||||
|
||||
"""
|
||||
Libellé du champ.
|
||||
"""
|
||||
label: String!
|
||||
prefilled: Boolean!
|
||||
|
||||
"""
|
||||
La valeur du champ sous forme texte.
|
||||
"""
|
||||
stringValue: String
|
||||
|
||||
"""
|
||||
Date de dernière modification du champ.
|
||||
"""
|
||||
updatedAt: ISO8601DateTime!
|
||||
value: Boolean
|
||||
}
|
||||
|
||||
type YesNoChampDescriptor implements ChampDescriptor {
|
||||
"""
|
||||
Description des champs d’un bloc répétable.
|
||||
|
|
|
@ -24,8 +24,14 @@ module Types
|
|||
else
|
||||
Types::Champs::TextChampType
|
||||
end
|
||||
when ::Champs::YesNoChamp, ::Champs::CheckboxChamp
|
||||
when ::Champs::CheckboxChamp
|
||||
Types::Champs::CheckboxChampType
|
||||
when ::Champs::YesNoChamp
|
||||
if context.has_fragment?(:YesNoChamp)
|
||||
Types::Champs::YesNoChampType
|
||||
else
|
||||
Types::Champs::CheckboxChampType
|
||||
end
|
||||
when ::Champs::DateChamp
|
||||
Types::Champs::DateChampType
|
||||
when ::Champs::DatetimeChamp
|
||||
|
|
17
app/graphql/types/champs/yes_no_champ_type.rb
Normal file
17
app/graphql/types/champs/yes_no_champ_type.rb
Normal file
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Types::Champs
|
||||
class YesNoChampType < Types::BaseObject
|
||||
implements Types::ChampType
|
||||
|
||||
field :value, Boolean, null: true
|
||||
|
||||
def value
|
||||
if object.blank?
|
||||
nil
|
||||
else
|
||||
object.true?
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -33,20 +33,11 @@ class TypesDeChamp::YesNoTypeDeChamp < TypesDeChamp::CheckboxTypeDeChamp
|
|||
end
|
||||
|
||||
def champ_default_value
|
||||
'Non'
|
||||
''
|
||||
end
|
||||
|
||||
def champ_default_export_value(path = :value)
|
||||
'Non'
|
||||
end
|
||||
|
||||
def champ_default_api_value(version = 2)
|
||||
case version
|
||||
when 2
|
||||
'false'
|
||||
else
|
||||
nil
|
||||
end
|
||||
''
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -212,7 +212,7 @@ describe Champ do
|
|||
context 'if nil' do
|
||||
let(:value) { nil }
|
||||
|
||||
it { expect(value_for_export).to eq('Non') }
|
||||
it { expect(value_for_export).to eq('') }
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -236,7 +236,7 @@ describe Champ do
|
|||
allow(champ_text).to receive(:type_de_champ).and_return(type_de_champ_text)
|
||||
end
|
||||
it { expect(type_de_champ_text.champ_value_for_export(champ_yes_no)).to eq(nil) }
|
||||
it { expect(type_de_champ_yes_no.champ_value_for_export(champ_text)).to eq('Non') }
|
||||
it { expect(type_de_champ_yes_no.champ_value_for_export(champ_text)).to eq('') }
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
describe Champs::CheckboxChamp do
|
||||
let(:boolean_champ) { described_class.new(value: value) }
|
||||
before { allow(boolean_champ).to receive(:type_de_champ).and_return(build(:type_de_champ_checkbox)) }
|
||||
it_behaves_like "a boolean champ"
|
||||
it_behaves_like "a boolean champ", false
|
||||
|
||||
# TODO remove when normalize_checkbox_values is over
|
||||
describe '#true?' do
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
describe Champs::YesNoChamp do
|
||||
it_behaves_like "a boolean champ" do
|
||||
it_behaves_like "a boolean champ", true do
|
||||
let(:boolean_champ) { described_class.new(value: value) }
|
||||
before { allow(boolean_champ).to receive(:type_de_champ).and_return(build(:type_de_champ_yes_no)) }
|
||||
end
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
RSpec.shared_examples "a boolean champ" do
|
||||
RSpec.shared_examples "a boolean champ" do |nullable|
|
||||
describe 'before validation' do
|
||||
subject { boolean_champ.valid? }
|
||||
|
||||
|
@ -55,7 +55,7 @@ RSpec.shared_examples "a boolean champ" do
|
|||
context 'when the value is nil' do
|
||||
let(:value) { nil }
|
||||
|
||||
it { is_expected.to eq("Non") }
|
||||
it { is_expected.to eq(nullable ? '' : 'Non') }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue