Merge pull request #7241 from tchak/fix-graphql-dossier-deleted-user

API : correction d'une exception sur les dossiers comportant des usagers supprimés
This commit is contained in:
Pierre de La Morinerie 2022-05-04 16:23:23 +02:00 committed by GitHub
commit 137cb619d5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 44 additions and 2 deletions

View file

@ -9,7 +9,11 @@ class API::V2::Schema < GraphQL::Schema
context_class API::V2::Context
def self.id_from_object(object, type_definition, ctx)
object.to_typed_id
if object.is_a?(Hash)
object[:id]
else
object.to_typed_id
end
end
def self.object_from_id(id, query_ctx)

View file

@ -69,7 +69,7 @@ module Types
def usager
if object.user_deleted?
{ email: object.user_email_for(:display), id: -1 }
{ email: object.user_email_for(:display), id: '<deleted>' }
else
Loaders::Record.for(User).load(object.user_id)
end

View file

@ -56,6 +56,31 @@ RSpec.describe Types::DossierType, type: :graphql do
it { expect(data[:dossier][:champs][1][:__typename]).to eq "AddressChamp" }
end
describe 'dossier with user' do
let(:dossier) { create(:dossier, :en_construction) }
let(:query) { DOSSIER_WITH_USAGER_QUERY }
let(:variables) { { number: dossier.id } }
it { expect(data[:dossier][:usager]).not_to be_nil }
end
describe 'dossier with deleted user' do
let(:dossier) { create(:dossier, :en_construction) }
let(:query) { DOSSIER_WITH_USAGER_QUERY }
let(:variables) { { number: dossier.id } }
let(:email) { dossier.user.email }
before do
dossier.update(user_id: nil, deleted_user_email_never_send: email)
end
it {
expect(data[:dossier][:usager]).not_to be_nil
expect(data[:dossier][:usager][:email]).to eq(email)
expect(data[:dossier][:usager][:id]).to eq('<deleted>')
}
end
DOSSIER_QUERY = <<-GRAPHQL
query($number: Int!) {
dossier(number: $number) {
@ -65,6 +90,19 @@ RSpec.describe Types::DossierType, type: :graphql do
}
GRAPHQL
DOSSIER_WITH_USAGER_QUERY = <<-GRAPHQL
query($number: Int!) {
dossier(number: $number) {
id
number
usager {
id
email
}
}
}
GRAPHQL
DOSSIER_WITH_ATTESTATION_QUERY = <<-GRAPHQL
query($number: Int!) {
dossier(number: $number) {