Merge pull request #4815 from pengfeidong/fix_4780_add_mutation_dossier_change_groupe_instructeur

Fix 4780 add mutation dossier change groupe instructeur
This commit is contained in:
Paul Chavard 2020-03-05 12:59:02 +01:00 committed by GitHub
commit fc46aae349
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 113 additions and 0 deletions

View file

@ -30,6 +30,8 @@ class Api::V2::Schema < GraphQL::Schema
Types::PersonnePhysiqueType Types::PersonnePhysiqueType
when Etablissement when Etablissement
Types::PersonneMoraleType Types::PersonneMoraleType
when GroupeInstructeur
Types::GroupeInstructeurType
else else
raise GraphQL::ExecutionError.new("Unexpected object: #{obj}") raise GraphQL::ExecutionError.new("Unexpected object: #{obj}")
end end

View file

@ -0,0 +1,26 @@
module Mutations
class DossierChangerGroupeInstructeur < Mutations::BaseMutation
include DossierHelper
description "Changer le grope instructeur du dossier."
argument :dossier_id, ID, "Dossier ID", required: true, loads: Types::DossierType
argument :groupe_instructeur_id, ID, "Group instructeur a affecter", required: true, loads: Types::GroupeInstructeurType
field :dossier, Types::DossierType, null: true
field :errors, [Types::ValidationErrorType], null: true
def resolve(dossier:, groupe_instructeur:)
if dossier.groupe_instructeur == groupe_instructeur
{ errors: ["Le dossier est déjà avec le grope instructeur: '#{groupe_instructeur.label}'"] }
else
dossier.update!(groupe_instructeur: groupe_instructeur)
{ dossier: dossier }
end
end
def authorized?(dossier:, groupe_instructeur:)
dossier.groupe_instructeur.procedure == groupe_instructeur.procedure
end
end
end

View file

@ -438,6 +438,38 @@ type DossierAccepterPayload {
errors: [ValidationError!] errors: [ValidationError!]
} }
"""
Autogenerated input type of DossierChangerGroupeInstructeur
"""
input DossierChangerGroupeInstructeurInput {
"""
A unique identifier for the client performing the mutation.
"""
clientMutationId: String
"""
Dossier ID
"""
dossierId: ID!
"""
Group instructeur a affecter
"""
groupeInstructeurId: ID!
}
"""
Autogenerated return type of DossierChangerGroupeInstructeur
"""
type DossierChangerGroupeInstructeurPayload {
"""
A unique identifier for the client performing the mutation.
"""
clientMutationId: String
dossier: Dossier
errors: [ValidationError!]
}
""" """
Autogenerated input type of DossierClasserSansSuite Autogenerated input type of DossierClasserSansSuite
""" """
@ -790,6 +822,11 @@ type Mutation {
""" """
dossierAccepter(input: DossierAccepterInput!): DossierAccepterPayload dossierAccepter(input: DossierAccepterInput!): DossierAccepterPayload
"""
Changer le grope instructeur du dossier.
"""
dossierChangerGroupeInstructeur(input: DossierChangerGroupeInstructeurInput!): DossierChangerGroupeInstructeurPayload
""" """
Classer le dossier sans suite. Classer le dossier sans suite.
""" """

View file

@ -7,5 +7,6 @@ module Types
field :dossier_classer_sans_suite, mutation: Mutations::DossierClasserSansSuite field :dossier_classer_sans_suite, mutation: Mutations::DossierClasserSansSuite
field :dossier_refuser, mutation: Mutations::DossierRefuser field :dossier_refuser, mutation: Mutations::DossierRefuser
field :dossier_accepter, mutation: Mutations::DossierAccepter field :dossier_accepter, mutation: Mutations::DossierAccepter
field :dossier_changer_groupe_instructeur, mutation: Mutations::DossierChangerGroupeInstructeur
end end
end end

View file

@ -686,6 +686,53 @@ describe API::V2::GraphqlController do
expect(data[:signedBlobId]).not_to be_nil expect(data[:signedBlobId]).not_to be_nil
end end
end end
describe 'dossierChangerGroupeInstructeur' do
let(:query) do
"mutation {
dossierChangerGroupeInstructeur(input: {
dossierId: \"#{dossier.to_typed_id}\",
groupeInstructeurId: \"#{dossier.groupe_instructeur.to_typed_id}\"
}) {
errors {
message
}
}
}"
end
it "validation error" do
expect(gql_errors).to eq(nil)
expect(gql_data).to eq(dossierChangerGroupeInstructeur: {
errors: [{ message: "Le dossier est déjà avec le grope instructeur: 'défaut'" }]
})
end
context "should changer groupe instructeur" do
let!(:new_groupe_instructeur) { procedure.groupe_instructeurs.create(label: 'new groupe instructeur') }
let(:query) do
"mutation {
dossierChangerGroupeInstructeur(input: {
dossierId: \"#{dossier.to_typed_id}\",
groupeInstructeurId: \"#{new_groupe_instructeur.to_typed_id}\"
}) {
errors {
message
}
}
}"
end
it "change made" do
expect(gql_errors).to eq(nil)
expect(gql_data).to eq(dossierChangerGroupeInstructeur: {
errors: nil
})
end
end
end
end end
end end