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:
commit
137cb619d5
3 changed files with 44 additions and 2 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Add table
Reference in a new issue