fix(hack): fix and test hack for procedures using groupe instructeur api
This commit is contained in:
parent
f675d2d1a7
commit
10524643fb
6 changed files with 71 additions and 7 deletions
|
@ -29,12 +29,7 @@ module Mutations
|
||||||
|
|
||||||
# ugly hack to keep retro compatibility
|
# ugly hack to keep retro compatibility
|
||||||
# do not judge
|
# 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))
|
groupe_instructeur.procedure.update_groupe_instructeur_routing_roules!
|
||||||
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
|
|
||||||
|
|
||||||
result = { groupe_instructeur: }
|
result = { groupe_instructeur: }
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,11 @@ module Mutations
|
||||||
|
|
||||||
def resolve(groupe_instructeur:, label: nil, closed: nil)
|
def resolve(groupe_instructeur:, label: nil, closed: nil)
|
||||||
if groupe_instructeur.update({ label:, closed: }.compact)
|
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: }
|
{ groupe_instructeur: }
|
||||||
else
|
else
|
||||||
{ errors: groupe_instructeur.errors.full_messages }
|
{ 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 ProcedureStatsConcern
|
||||||
include EncryptableConcern
|
include EncryptableConcern
|
||||||
include InitiationProcedureConcern
|
include InitiationProcedureConcern
|
||||||
|
include ProcedureGroupeInstructeurAPIHackConcern
|
||||||
|
|
||||||
include Discard::Model
|
include Discard::Model
|
||||||
self.discard_column = :hidden_at
|
self.discard_column = :hidden_at
|
||||||
|
|
|
@ -17,7 +17,8 @@ features = [
|
||||||
:dossier_pdf_vide,
|
:dossier_pdf_vide,
|
||||||
:hide_instructeur_email,
|
:hide_instructeur_email,
|
||||||
:procedure_routage_api,
|
:procedure_routage_api,
|
||||||
:routing_rules
|
:routing_rules,
|
||||||
|
:groupe_instructeur_api_hack
|
||||||
]
|
]
|
||||||
|
|
||||||
def database_exists?
|
def database_exists?
|
||||||
|
|
|
@ -651,6 +651,27 @@ describe API::V2::GraphqlController do
|
||||||
}
|
}
|
||||||
end
|
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
|
context 'validation error' do
|
||||||
it {
|
it {
|
||||||
expect(gql_errors).to be_nil
|
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: }])
|
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
|
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
|
end
|
||||||
|
|
||||||
context 'groupeInstructeurAjouterInstructeurs' do
|
context 'groupeInstructeurAjouterInstructeurs' do
|
||||||
|
|
Loading…
Reference in a new issue