Merge pull request #9198 from tchak/fix-groupe-instructeur-api-hack
fix(hack): fix and test hack for procedures using groupe instructeur api
This commit is contained in:
commit
01653440e7
6 changed files with 71 additions and 7 deletions
|
@ -29,12 +29,7 @@ module Mutations
|
|||
|
||||
# ugly hack to keep retro compatibility
|
||||
# do not judge
|
||||
if !ENV['OLD_GROUPE_INSTRUCTEURS_CREATE_API_PROCEDURE_ID'].nil? && demarche_number.in?(ENV['OLD_GROUPE_INSTRUCTEURS_CREATE_API_PROCEDURE_ID']&.split(',')&.map(&:to_i))
|
||||
stable_id = procedure.groupe_instructeurs.first.routing_rule.left.stable_id
|
||||
tdc = procedure.published_revision.types_de_champ.find_by(stable_id: stable_ids)
|
||||
tdc.update(options: tdc.options['drop_down_options'].push(groupe_instructeur.label))
|
||||
groupe_instructeur.update(routing_rule: ds_eq(champ_value(stable_id), constant(groupe_instruteur.label)))
|
||||
end
|
||||
groupe_instructeur.procedure.update_groupe_instructeur_routing_roules!
|
||||
|
||||
result = { groupe_instructeur: }
|
||||
|
||||
|
|
|
@ -11,6 +11,11 @@ module Mutations
|
|||
|
||||
def resolve(groupe_instructeur:, label: nil, closed: nil)
|
||||
if groupe_instructeur.update({ label:, closed: }.compact)
|
||||
|
||||
# ugly hack to keep retro compatibility
|
||||
# do not judge
|
||||
groupe_instructeur.procedure.update_groupe_instructeur_routing_roules!
|
||||
|
||||
{ groupe_instructeur: }
|
||||
else
|
||||
{ errors: groupe_instructeur.errors.full_messages }
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
module ProcedureGroupeInstructeurAPIHackConcern
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
include Logic
|
||||
|
||||
# ugly hack to keep retro compatibility
|
||||
# do not judge
|
||||
def update_groupe_instructeur_routing_roules!
|
||||
if feature_enabled?(:groupe_instructeur_api_hack)
|
||||
stable_id = groupe_instructeurs.first.routing_rule.left.stable_id
|
||||
tdc = published_revision.types_de_champ.find_by(stable_id:)
|
||||
|
||||
drop_down_options = groupe_instructeurs.active.map do |groupe_instructeur|
|
||||
groupe_instructeur.update!(routing_rule: ds_eq(champ_value(stable_id), constant(groupe_instructeur.label)))
|
||||
groupe_instructeur.label
|
||||
end
|
||||
|
||||
tdc.update!(drop_down_options:)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -64,6 +64,7 @@ class Procedure < ApplicationRecord
|
|||
include ProcedureStatsConcern
|
||||
include EncryptableConcern
|
||||
include InitiationProcedureConcern
|
||||
include ProcedureGroupeInstructeurAPIHackConcern
|
||||
|
||||
include Discard::Model
|
||||
self.discard_column = :hidden_at
|
||||
|
|
|
@ -17,7 +17,8 @@ features = [
|
|||
:dossier_pdf_vide,
|
||||
:hide_instructeur_email,
|
||||
:procedure_routage_api,
|
||||
:routing_rules
|
||||
:routing_rules,
|
||||
:groupe_instructeur_api_hack
|
||||
]
|
||||
|
||||
def database_exists?
|
||||
|
|
|
@ -651,6 +651,27 @@ describe API::V2::GraphqlController do
|
|||
}
|
||||
end
|
||||
|
||||
context 'with api hack' do
|
||||
include Logic
|
||||
let(:types_de_champ_public) { [{ type: :drop_down_list }] }
|
||||
let(:groupe_instructeur) { procedure.groupe_instructeurs.first }
|
||||
let(:routing_champ) { procedure.active_revision.types_de_champ.first }
|
||||
|
||||
before do
|
||||
groupe_instructeur.update(routing_rule: ds_eq(champ_value(routing_champ.stable_id), constant(groupe_instructeur.label)))
|
||||
create(:groupe_instructeur, procedure: procedure)
|
||||
Flipper.enable(:groupe_instructeur_api_hack, procedure)
|
||||
end
|
||||
|
||||
it {
|
||||
expect(gql_errors).to be_nil
|
||||
expect(gql_data[:groupeInstructeurModifier][:errors]).to be_nil
|
||||
expect(gql_data[:groupeInstructeurModifier][:groupeInstructeur][:id]).to eq(dossier.groupe_instructeur.to_typed_id)
|
||||
expect(routing_champ.reload.drop_down_list_options).to match_array(procedure.groupe_instructeurs.active.map(&:label))
|
||||
expect(procedure.groupe_instructeurs.active.map(&:routing_rule)).to match_array(procedure.groupe_instructeurs.active.map { ds_eq(champ_value(routing_champ.stable_id), constant(_1.label)) })
|
||||
}
|
||||
end
|
||||
|
||||
context 'validation error' do
|
||||
it {
|
||||
expect(gql_errors).to be_nil
|
||||
|
@ -684,6 +705,26 @@ describe API::V2::GraphqlController do
|
|||
expect(gql_data[:groupeInstructeurCreer][:groupeInstructeur][:instructeurs]).to match_array([{ id: admin.instructeur.to_typed_id, email: admin.instructeur.email }, { id: Instructeur.last.to_typed_id, email: }])
|
||||
}
|
||||
end
|
||||
|
||||
context 'with api hack' do
|
||||
include Logic
|
||||
let(:types_de_champ_public) { [{ type: :drop_down_list }] }
|
||||
let(:groupe_instructeur) { procedure.groupe_instructeurs.first }
|
||||
let(:routing_champ) { procedure.active_revision.types_de_champ.first }
|
||||
|
||||
before do
|
||||
groupe_instructeur.update(routing_rule: ds_eq(champ_value(routing_champ.stable_id), constant(groupe_instructeur.label)))
|
||||
Flipper.enable(:groupe_instructeur_api_hack, procedure)
|
||||
end
|
||||
|
||||
it {
|
||||
expect(gql_errors).to be_nil
|
||||
expect(gql_data[:groupeInstructeurCreer][:errors]).to be_nil
|
||||
expect(gql_data[:groupeInstructeurCreer][:groupeInstructeur][:id]).not_to be_nil
|
||||
expect(routing_champ.reload.drop_down_list_options).to match_array(procedure.groupe_instructeurs.map(&:label))
|
||||
expect(procedure.groupe_instructeurs.map(&:routing_rule)).to match_array(procedure.groupe_instructeurs.map { ds_eq(champ_value(routing_champ.stable_id), constant(_1.label)) })
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
context 'groupeInstructeurAjouterInstructeurs' do
|
||||
|
|
Loading…
Reference in a new issue