From 3e81e5a35501d293484e160d8c06e70c7db3bb32 Mon Sep 17 00:00:00 2001 From: tobias-tengler <45513122+tobias-tengler@users.noreply.github.com> Date: Tue, 25 Jun 2024 22:36:27 +0200 Subject: [PATCH] Checkin current version of snapshots --- ..._NonNull_Both_Services_Error_EntryField.md | 17 ++- ...Both_Services_Error_EntryField.md.expected | 96 ++++++++++++ ...Nullable_Both_Services_Error_EntryField.md | 4 +- ...Both_Services_Error_EntryField.md.expected | 98 ++++++++++++ ...NonNull_First_Service_Errors_EntryField.md | 32 ++-- ...irst_Service_Errors_EntryField.md.expected | 123 +++++++++++++++ ...d_NonNull_First_Service_Errors_SubField.md | 19 ++- ..._First_Service_Errors_SubField.md.expected | 97 ++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 37 +---- ...ns_TopLevel_Error_Without_Data.md.expected | 123 +++++++++++++++ ...onNull_Second_Service_Errors_EntryField.md | 17 ++- ...cond_Service_Errors_EntryField.md.expected | 97 ++++++++++++ ..._NonNull_Second_Service_Errors_SubField.md | 18 ++- ...Second_Service_Errors_SubField.md.expected | 97 ++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 10 +- ...ns_TopLevel_Error_Without_Data.md.expected | 97 ++++++++++++ ...ullable_First_Service_Errors_EntryField.md | 33 +--- ...irst_Service_Errors_EntryField.md.expected | 125 +++++++++++++++ ..._Nullable_First_Service_Errors_SubField.md | 4 +- ..._First_Service_Errors_SubField.md.expected | 99 ++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 38 +---- ...ns_TopLevel_Error_Without_Data.md.expected | 125 +++++++++++++++ ...llable_Second_Service_Errors_EntryField.md | 17 ++- ...cond_Service_Errors_EntryField.md.expected | 99 ++++++++++++ ...Nullable_Second_Service_Errors_SubField.md | 18 ++- ...Second_Service_Errors_SubField.md.expected | 99 ++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 10 +- ...ns_TopLevel_Error_Without_Data.md.expected | 99 ++++++++++++ ...ullable_First_Service_Errors_EntryField.md | 42 +---- ...irst_Service_Errors_EntryField.md.expected | 113 ++++++++++++++ ..._Nullable_First_Service_Errors_SubField.md | 4 +- ..._First_Service_Errors_SubField.md.expected | 87 +++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 38 +---- ...ns_TopLevel_Error_Without_Data.md.expected | 113 ++++++++++++++ ...llable_Second_Service_Errors_EntryField.md | 16 +- ...cond_Service_Errors_EntryField.md.expected | 87 +++++++++++ ...Nullable_Second_Service_Errors_SubField.md | 4 +- ...Second_Service_Errors_SubField.md.expected | 87 +++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 12 +- ...ns_TopLevel_Error_Without_Data.md.expected | 104 +++++++++++++ ...onNull_Second_Service_Errors_EntryField.md | 32 +++- ...cond_Service_Errors_EntryField.md.expected | 127 ++++++++++++++++ ..._NonNull_Second_Service_Errors_SubField.md | 44 +++++- ...Second_Service_Errors_SubField.md.expected | 99 ++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 24 ++- ...ns_TopLevel_Error_Without_Data.md.expected | 127 ++++++++++++++++ ...llable_Second_Service_Errors_EntryField.md | 32 +++- ...cond_Service_Errors_EntryField.md.expected | 131 ++++++++++++++++ ...Nullable_Second_Service_Errors_SubField.md | 56 +++++-- ...Second_Service_Errors_SubField.md.expected | 111 ++++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 24 ++- ...ns_TopLevel_Error_Without_Data.md.expected | 131 ++++++++++++++++ ...llable_Second_Service_Errors_EntryField.md | 35 +---- ...cond_Service_Errors_EntryField.md.expected | 143 ++++++++++++++++++ ...Nullable_Second_Service_Errors_SubField.md | 6 +- ...Second_Service_Errors_SubField.md.expected | 115 ++++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 41 +---- ...ns_TopLevel_Error_Without_Data.md.expected | 143 ++++++++++++++++++ ...d_NonNull_One_Service_Errors_EntryField.md | 17 ++- ..._One_Service_Errors_EntryField.md.expected | 79 ++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 10 +- ...ns_TopLevel_Error_Without_Data.md.expected | 79 ++++++++++ ..._Nullable_One_Service_Errors_EntryField.md | 4 +- ..._One_Service_Errors_EntryField.md.expected | 84 ++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 11 +- ...ns_TopLevel_Error_Without_Data.md.expected | 84 ++++++++++ ...ll_Both_Services_Error_SharedEntryField.md | 29 +++- ...ervices_Error_SharedEntryField.md.expected | 77 ++++++++++ ...le_Both_Services_Error_SharedEntryField.md | 16 +- ...ervices_Error_SharedEntryField.md.expected | 79 ++++++++++ ...eld_NonNull_One_Service_Errors_SubField.md | 19 ++- ...ll_One_Service_Errors_SubField.md.expected | 80 ++++++++++ ...ld_Nullable_One_Service_Errors_SubField.md | 4 +- ...le_One_Service_Errors_SubField.md.expected | 85 +++++++++++ ...ull_One_Service_Errors_SharedEntryField.md | 9 +- ...ervice_Errors_SharedEntryField.md.expected | 78 ++++++++++ ...eld_NonNull_One_Service_Errors_SubField.md | 6 +- ...ll_One_Service_Errors_SubField.md.expected | 78 ++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 14 +- ...ns_TopLevel_Error_Without_Data.md.expected | 78 ++++++++++ ...ble_One_Service_Errors_SharedEntryField.md | 11 +- ...ervice_Errors_SharedEntryField.md.expected | 80 ++++++++++ ...ld_Nullable_One_Service_Errors_SubField.md | 8 +- ...le_One_Service_Errors_SubField.md.expected | 80 ++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 16 +- ...ns_TopLevel_Error_Without_Data.md.expected | 80 ++++++++++ ...ld_Nullable_One_Service_Errors_SubField.md | 4 +- ...le_One_Service_Errors_SubField.md.expected | 87 +++++++++++ ...ble_One_Service_Errors_SharedEntryField.md | 14 +- ...ervice_Errors_SharedEntryField.md.expected | 83 ++++++++++ ...ld_Nullable_One_Service_Errors_SubField.md | 4 +- ...le_One_Service_Errors_SubField.md.expected | 83 ++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 12 +- ...ns_TopLevel_Error_Without_Data.md.expected | 83 ++++++++++ ...t_NonNull_One_Service_Errors_EntryField.md | 18 ++- ..._One_Service_Errors_EntryField.md.expected | 101 +++++++++++++ ...ent_NonNull_One_Service_Errors_SubField.md | 19 ++- ...ll_One_Service_Errors_SubField.md.expected | 101 +++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 10 +- ...ns_TopLevel_Error_Without_Data.md.expected | 101 +++++++++++++ ..._Nullable_One_Service_Errors_EntryField.md | 18 ++- ..._One_Service_Errors_EntryField.md.expected | 104 +++++++++++++ ...nt_Nullable_One_Service_Errors_SubField.md | 19 ++- ...le_One_Service_Errors_SubField.md.expected | 104 +++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 10 +- ...ns_TopLevel_Error_Without_Data.md.expected | 104 +++++++++++++ ..._Nullable_One_Service_Errors_EntryField.md | 7 +- ..._One_Service_Errors_EntryField.md.expected | 107 +++++++++++++ ...nt_Nullable_One_Service_Errors_SubField.md | 4 +- ...le_One_Service_Errors_SubField.md.expected | 107 +++++++++++++ ...ice_Returns_TopLevel_Error_Without_Data.md | 13 +- ...ns_TopLevel_Error_Without_Data.md.expected | 107 +++++++++++++ ...oth_Services_Offline_EntryField_NonNull.md | 10 +- ...ces_Offline_EntryField_NonNull.md.expected | 96 ++++++++++++ ...th_Services_Offline_EntryField_Nullable.md | 11 +- ...es_Offline_EntryField_Nullable.md.expected | 98 ++++++++++++ ...lds_NonNull_EntryField_NonNull.md.expected | 102 +++++++++++++ ...e_SubFields_NonNull_EntryField_Nullable.md | 11 +- ...ds_NonNull_EntryField_Nullable.md.expected | 98 ++++++++++++ ..._SubFields_Nullable_EntryField_Nullable.md | 38 +---- ...s_Nullable_EntryField_Nullable.md.expected | 113 ++++++++++++++ ...ne_SubFields_NonNull_EntryField_NonNull.md | 10 +- ...lds_NonNull_EntryField_NonNull.md.expected | 97 ++++++++++++ ...e_SubFields_NonNull_EntryField_Nullable.md | 10 +- ...ds_NonNull_EntryField_Nullable.md.expected | 99 ++++++++++++ ..._SubFields_Nullable_EntryField_Nullable.md | 12 +- ...s_Nullable_EntryField_Nullable.md.expected | 87 +++++++++++ ...ngle_Service_Offline_EntryField_NonNull.md | 10 +- ...ice_Offline_EntryField_NonNull.md.expected | 67 ++++++++ ...gle_Service_Offline_EntryField_Nullable.md | 11 +- ...ce_Offline_EntryField_Nullable.md.expected | 69 +++++++++ ...fline_SubField_NonNull_ListItem_NonNull.md | 24 ++- ...Field_NonNull_ListItem_NonNull.md.expected | 125 +++++++++++++++ ...line_SubField_NonNull_ListItem_Nullable.md | 24 ++- ...ield_NonNull_ListItem_Nullable.md.expected | 131 ++++++++++++++++ ...econd_Service_Offline_SubField_Nullable.md | 41 +---- ...vice_Offline_SubField_Nullable.md.expected | 143 ++++++++++++++++++ ...rvices_Offline_SharedEntryField_NonNull.md | 13 +- ...fline_SharedEntryField_NonNull.md.expected | 77 ++++++++++ ...vices_Offline_SharedEntryField_Nullable.md | 14 +- ...line_SharedEntryField_Nullable.md.expected | 79 ++++++++++ ...One_Service_Offline_EntryFields_NonNull.md | 10 +- ...ce_Offline_EntryFields_NonNull.md.expected | 79 ++++++++++ ...ne_Service_Offline_EntryFields_Nullable.md | 11 +- ...e_Offline_EntryFields_Nullable.md.expected | 84 ++++++++++ ...bField_NonNull_SharedEntryField_NonNull.md | 14 +- ...nNull_SharedEntryField_NonNull.md.expected | 78 ++++++++++ ...Field_NonNull_SharedEntryField_Nullable.md | 16 +- ...Null_SharedEntryField_Nullable.md.expected | 80 ++++++++++ ...ield_Nullable_SharedEntryField_Nullable.md | 12 +- ...able_SharedEntryField_Nullable.md.expected | 83 ++++++++++ ...ngle_Service_Offline_EntryField_NonNull.md | 10 +- ...ice_Offline_EntryField_NonNull.md.expected | 65 ++++++++ ...gle_Service_Offline_EntryField_Nullable.md | 11 +- ...ce_Offline_EntryField_Nullable.md.expected | 67 ++++++++ ...irst_Service_Offline_EntryField_NonNull.md | 10 +- ...ice_Offline_EntryField_NonNull.md.expected | 97 ++++++++++++ ...rst_Service_Offline_EntryField_Nullable.md | 11 +- ...ce_Offline_EntryField_Nullable.md.expected | 99 ++++++++++++ ...Offline_SubField_NonNull_Parent_NonNull.md | 10 +- ...ubField_NonNull_Parent_NonNull.md.expected | 101 +++++++++++++ ...ffline_SubField_NonNull_Parent_Nullable.md | 10 +- ...bField_NonNull_Parent_Nullable.md.expected | 104 +++++++++++++ ...fline_SubField_Nullable_Parent_Nullable.md | 13 +- ...Field_Nullable_Parent_Nullable.md.expected | 107 +++++++++++++ 165 files changed, 8793 insertions(+), 704 deletions(-) create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md.expected create mode 100644 src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md.expected diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md index acd33794e26..6945e0f8b40 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md @@ -7,6 +7,18 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 29 + } + ], + "path": [ + "productById" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +27,10 @@ ], "path": [ "productById" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md.expected new file mode 100644 index 00000000000..acd33794e26 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField.md.expected @@ -0,0 +1,96 @@ +# Entity_Resolver_EntryField_NonNull_Both_Services_Error_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md index 067b7e46ab7..64c24b54c70 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 2, - "column": 3 + "line": 1, + "column": 29 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md.expected new file mode 100644 index 00000000000..067b7e46ab7 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField.md.expected @@ -0,0 +1,98 @@ +# Entity_Resolver_EntryField_Nullable_Both_Services_Error_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md index 3a120a8fa1a..186a1f6352a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md @@ -9,40 +9,28 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 3, - "column": 5 + "line": 1, + "column": 29 } ], "path": [ - "productById", - "id" + "productById" ] }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { - "line": 4, - "column": 5 + "line": 2, + "column": 3 } ], "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } + "productById" ], - "path": [ - "productById", - "price" - ] + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..3a120a8fa1a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField.md.expected @@ -0,0 +1,123 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md index 7494c817f12..b6c069e647f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md @@ -9,14 +9,29 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 55 } ], "path": [ "productById", "name" ] + }, + { + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..7494c817f12 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField.md.expected @@ -0,0 +1,97 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md index 45cf2e977b0..38c8db1ce06 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,43 +6,22 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { - "line": 3, - "column": 5 + "line": 2, + "column": 3 } ], "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } + "productById" ], - "path": [ - "productById", - "name" - ] + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" - ] + "message": "Top Level Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..45cf2e977b0 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,123 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_First_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md index 021d7069ee5..6186eddf49c 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md @@ -7,6 +7,18 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 56 + } + ], + "path": [ + "productById" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +28,10 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..021d7069ee5 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,97 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md index db3e104021f..44045bd93b9 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 96 + } + ], + "path": [ + "productById", + "score" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +29,10 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..db3e104021f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,97 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md index 07ee9933557..3d35dd4d577 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +16,13 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..07ee9933557 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,97 @@ +# Entity_Resolver_SubField_NonNull_EntryField_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md index 0d7a592fafd..030f1ff2a4d 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md @@ -9,39 +9,12 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 3, - "column": 5 + "line": 1, + "column": 29 } ], "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" + "productById" ] } ], diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..0d7a592fafd --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField.md.expected @@ -0,0 +1,125 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md index 461ebc0551b..6cc6b2ad310 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 55 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..461ebc0551b --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField.md.expected @@ -0,0 +1,99 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md index e4bd3a1e2ac..8a34f59ae3a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,43 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..e4bd3a1e2ac --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,125 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md index a4f07294b5f..d49b6832cf6 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md @@ -7,6 +7,18 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 56 + } + ], + "path": [ + "productById" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +28,10 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..a4f07294b5f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,99 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md index dd180f3618d..3c926c21a63 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 96 + } + ], + "path": [ + "productById", + "score" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +29,10 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..dd180f3618d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,99 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index aec427e293f..070fc0cf155 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +16,13 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..aec427e293f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,99 @@ +# Entity_Resolver_SubField_NonNull_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md index 07b90e39965..741f09bc3c9 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md @@ -9,50 +9,16 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 3, - "column": 5 + "line": 1, + "column": 29 } ], "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" + "productById" ] } ], - "data": { - "productById": { - "id": null, - "name": null, - "price": null, - "score": 123 - } - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..07b90e39965 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField.md.expected @@ -0,0 +1,113 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": { + "productById": { + "id": null, + "name": null, + "price": null, + "score": 123 + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md index dca9e09fbd3..a9febbdcdd4 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 55 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..dca9e09fbd3 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField.md.expected @@ -0,0 +1,87 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + } + ], + "data": { + "productById": { + "id": "1", + "name": null, + "price": 123.456, + "score": 123 + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md index 474d33dec99..6a1a178ad87 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,43 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..474d33dec99 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,113 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_First_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": { + "productById": { + "id": null, + "name": null, + "price": null, + "score": 123 + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md index e15a9022f4a..54b27433cd9 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md @@ -9,24 +9,16 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 5 + "line": 1, + "column": 29 } ], "path": [ - "productById", - "score" + "productById" ] } ], - "data": { - "productById": { - "id": "1", - "name": "string", - "price": 123.456, - "score": null - } - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..e15a9022f4a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,87 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": { + "id": "1", + "name": "string", + "price": 123.456, + "score": null + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md index c51aca04eed..b1234ea9c25 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 5 + "line": 1, + "column": 52 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..c51aca04eed --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,87 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": { + "id": "1", + "name": "string", + "price": 123.456, + "score": null + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index 614bac48caf..050073f7fa3 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,17 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 6, - "column": 5 - } - ], - "path": [ - "productById", - "score" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..614bac48caf --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,104 @@ +# Entity_Resolver_SubField_Nullable_EntryField_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": { + "id": "1", + "name": "string", + "price": 123.456, + "score": null + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md index 95bc9fea6d5..0cec14e309c 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 56 + } + ], + "path": [ + "products", + 0 + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +30,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +47,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +64,10 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..95bc9fea6d5 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,127 @@ +# ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": null + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md index 7f693d1990a..bf409c13032 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md @@ -6,7 +6,24 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,7 +34,30 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Unexpected Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..7f693d1990a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,99 @@ +# ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + } + ], + "data": { + "products": null + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md index f7b54408392..17a3317d54a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +17,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +34,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +51,13 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..f7b54408392 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,127 @@ +# ResolveByKey_SubField_NonNull_ListItem_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": null + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md index 841f43abd71..590feead43f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 56 + } + ], + "path": [ + "products", + 0 + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +30,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +47,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +64,10 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..841f43abd71 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,131 @@ +# ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + null, + null, + null + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md index bf40ba2296c..eb74505b4c7 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md @@ -6,7 +6,24 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,22 +34,37 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Unexpected Execution Error" } ], "data": { "products": [ - { - "id": "1", - "name": "string", - "price": 123 - }, null, - { - "id": "3", - "name": "string", - "price": 123 - } + null, + null ] } } diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..bf40ba2296c --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,111 @@ +# ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + } + ], + "data": { + "products": [ + { + "id": "1", + "name": "string", + "price": 123 + }, + null, + { + "id": "3", + "name": "string", + "price": 123 + } + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index e8a2bba6729..f73f2aa6ce0 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +17,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +34,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +51,13 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..e8a2bba6729 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,131 @@ +# ResolveByKey_SubField_NonNull_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + null, + null, + null + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md index 76ae3e84a4b..0a36bd0d0a8 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md @@ -9,42 +9,13 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 5, - "column": 5 + "line": 1, + "column": 56 } ], "path": [ "products", - 2, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 1, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 0, - "price" + 0 ] } ], diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..76ae3e84a4b --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField.md.expected @@ -0,0 +1,143 @@ +# ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + { + "id": "1", + "name": "string", + "price": null + }, + { + "id": "2", + "name": "string", + "price": null + }, + { + "id": "3", + "name": "string", + "price": null + } + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md index 26e3f600651..96772bc85a4 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md @@ -9,13 +9,13 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 5, - "column": 5 + "line": 1, + "column": 98 } ], "path": [ "products", - 1, + 0, "price" ] } diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..26e3f600651 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField.md.expected @@ -0,0 +1,115 @@ +# ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + } + ], + "data": { + "products": [ + { + "id": "1", + "name": "string", + "price": 123 + }, + { + "id": "2", + "name": "string", + "price": null + }, + { + "id": "3", + "name": "string", + "price": 123 + } + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index fc5d68986a3..cf77283e425 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,46 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 2, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 1, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 0, - "price" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..fc5d68986a3 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,143 @@ +# ResolveByKey_SubField_Nullable_ListItem_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + { + "id": "1", + "name": "string", + "price": null + }, + { + "id": "2", + "name": "string", + "price": null + }, + { + "id": "3", + "name": "string", + "price": null + } + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md index 4fb40ab4b00..c96d2e96a7e 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md @@ -7,6 +7,18 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 30 + } + ], + "path": [ + "other" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -15,7 +27,10 @@ ], "path": [ "other" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..4fb40ab4b00 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField.md.expected @@ -0,0 +1,79 @@ +# Resolve_Parallel_EntryField_NonNull_One_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 3 + } + ], + "path": [ + "other" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md index cf7aa25ba17..283ab6e685b 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -15,7 +15,13 @@ ], "path": [ "other" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..cf7aa25ba17 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,79 @@ +# Resolve_Parallel_EntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 3 + } + ], + "path": [ + "other" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md index 978e174d29e..7f3cc1dc086 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 5, - "column": 3 + "line": 1, + "column": 30 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..978e174d29e --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField.md.expected @@ -0,0 +1,84 @@ +# Resolve_Parallel_EntryField_Nullable_One_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 3 + } + ], + "path": [ + "other" + ] + } + ], + "data": { + "viewer": { + "name": "string" + }, + "other": null + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md index d4b241b79d9..22058324cca 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 3 - } - ], - "path": [ - "other" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..d4b241b79d9 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,84 @@ +# Resolve_Parallel_EntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 3 + } + ], + "path": [ + "other" + ] + } + ], + "data": { + "viewer": { + "name": "string" + }, + "other": null + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md index 07d57aacdf9..cd8a6cb147f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md @@ -7,6 +7,30 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 24 + } + ], + "path": [ + "viewer" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 24 + } + ], + "path": [ + "viewer" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +39,10 @@ ], "path": [ "viewer" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md.expected new file mode 100644 index 00000000000..07d57aacdf9 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField.md.expected @@ -0,0 +1,77 @@ +# Resolve_Parallel_SharedEntryField_NonNull_Both_Services_Error_SharedEntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md index 6fc86cdd2db..8e4b5d9518c 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md @@ -9,8 +9,20 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 2, - "column": 3 + "line": 1, + "column": 24 + } + ], + "path": [ + "viewer" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 24 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md.expected new file mode 100644 index 00000000000..6fc86cdd2db --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField.md.expected @@ -0,0 +1,79 @@ +# Resolve_Parallel_SharedEntryField_Nullable_Both_Services_Error_SharedEntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md index 725e184b242..385a769bdf2 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md @@ -9,14 +9,29 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 5 + "line": 1, + "column": 38 } ], "path": [ "other", "userId" ] + }, + { + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 5, + "column": 3 + } + ], + "path": [ + "other" + ], + "extensions": { + "code": "HC0018" + } } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..725e184b242 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField.md.expected @@ -0,0 +1,80 @@ +# Resolve_Parallel_SubField_NonNull_EntryField_NonNull_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "other", + "userId" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md index 73130b4d1bc..323e5a4b4fe 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 5 + "line": 1, + "column": 38 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..73130b4d1bc --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,85 @@ +# Resolve_Parallel_SubField_NonNull_EntryField_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "other", + "userId" + ] + } + ], + "data": { + "viewer": { + "name": "string" + }, + "other": null + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md index 7d019f0603d..91affe4309f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md @@ -9,17 +9,16 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 24 } ], "path": [ - "viewer", - "name" + "viewer" ] } ], - "data": null + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md.expected new file mode 100644 index 00000000000..7d019f0603d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField.md.expected @@ -0,0 +1,78 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SharedEntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md index 23c3cfd5d0a..9608827a43f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 33 } ], "path": [ @@ -19,7 +19,7 @@ ] } ], - "data": null + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..23c3cfd5d0a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField.md.expected @@ -0,0 +1,78 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md index 073e885224d..fd3c8f01bab 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,20 +6,10 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "viewer", - "userId" - ] + "message": "Top Level Error" } ], - "data": null + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..073e885224d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,78 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_NonNull_One_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "viewer", + "userId" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md index 941c8c7b274..0b4b02d0da0 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md @@ -9,19 +9,16 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 24 } ], "path": [ - "viewer", - "name" + "viewer" ] } ], - "data": { - "viewer": null - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected new file mode 100644 index 00000000000..941c8c7b274 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected @@ -0,0 +1,80 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md index 2ea402cee7d..13d2dcc0366 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 33 } ], "path": [ @@ -19,9 +19,7 @@ ] } ], - "data": { - "viewer": null - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..2ea402cee7d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,80 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md index c6e2ed193ac..ebf1cc0d684 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,22 +6,10 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "viewer", - "userId" - ] + "message": "Top Level Error" } ], - "data": { - "viewer": null - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..c6e2ed193ac --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,80 @@ +# Resolve_Parallel_SubField_NonNull_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "viewer", + "userId" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md index 3caba6bab4c..7917c6a3d97 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 5 + "line": 1, + "column": 38 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..3caba6bab4c --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,87 @@ +# Resolve_Parallel_SubField_Nullable_EntryField_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "other", + "userId" + ] + } + ], + "data": { + "viewer": { + "name": "string" + }, + "other": { + "userId": null + } + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md index 00a66b5e99a..f31de40ad81 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md @@ -9,22 +9,16 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 24 } ], "path": [ - "viewer", - "name" + "viewer" ] } ], - "data": { - "viewer": { - "userId": "1", - "name": null - } - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected new file mode 100644 index 00000000000..00a66b5e99a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField.md.expected @@ -0,0 +1,83 @@ +# Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SharedEntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": { + "userId": "1", + "name": null + } + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md index 4c29c3f209f..5edc6967e73 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 4, - "column": 5 + "line": 1, + "column": 33 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..4c29c3f209f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,83 @@ +# Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": { + "userId": "1", + "name": null + } + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md index b056ff8baff..39746a0f2e7 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,17 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "viewer", - "userId" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..b056ff8baff --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,83 @@ +# Resolve_Parallel_SubField_Nullable_SharedEntryField_Nullable_One_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "viewer", + "userId" + ] + } + ], + "data": { + "viewer": { + "userId": null, + "name": "string" + } + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md index 016563d8e72..1b7e4485954 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 52 + } + ], + "path": [ + "product", + "brand" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +30,10 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..016563d8e72 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField.md.expected @@ -0,0 +1,101 @@ +# Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": null + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md index eca0d199fa4..550f6c549cb 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md @@ -7,6 +7,20 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 90 + } + ], + "path": [ + "product", + "brand", + "name" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +31,10 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..eca0d199fa4 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField.md.expected @@ -0,0 +1,101 @@ +# Resolve_Sequence_SubField_NonNull_Parent_NonNull_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": null + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md index dec8434cdb2..fdd49fc490c 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +17,13 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..dec8434cdb2 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,101 @@ +# Resolve_Sequence_SubField_NonNull_Parent_NonNull_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": null + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md index 0919cb1fe18..5ea31708061 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md @@ -7,6 +7,19 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 52 + } + ], + "path": [ + "product", + "brand" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +30,10 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..0919cb1fe18 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField.md.expected @@ -0,0 +1,104 @@ +# Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": null + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md index 2fffb22d57c..1a4f5400bb4 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md @@ -7,6 +7,20 @@ "errors": [ { "message": "Unexpected Execution Error", + "locations": [ + { + "line": 1, + "column": 90 + } + ], + "path": [ + "product", + "brand", + "name" + ] + }, + { + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +31,10 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..2fffb22d57c --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,104 @@ +# Resolve_Sequence_SubField_NonNull_Parent_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": null + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index 118d2cbbde6..69f7a708462 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +17,13 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..118d2cbbde6 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,104 @@ +# Resolve_Sequence_SubField_NonNull_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": null + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md index f87adf11e8d..421b26d5d3a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md @@ -9,14 +9,13 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 7 + "line": 1, + "column": 52 } ], "path": [ "product", - "brand", - "name" + "brand" ] } ], diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md.expected new file mode 100644 index 00000000000..f87adf11e8d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField.md.expected @@ -0,0 +1,107 @@ +# Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_EntryField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": { + "id": "1", + "name": null + } + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md index 06f0976a7e9..1864cfce5f8 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md @@ -9,8 +9,8 @@ "message": "Unexpected Execution Error", "locations": [ { - "line": 6, - "column": 7 + "line": 1, + "column": 90 } ], "path": [ diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md.expected new file mode 100644 index 00000000000..06f0976a7e9 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField.md.expected @@ -0,0 +1,107 @@ +# Resolve_Sequence_SubField_Nullable_Parent_Nullable_One_Service_Errors_SubField + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": { + "id": "1", + "name": null + } + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md index 529068a8221..db0f7f7f4d2 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md @@ -6,18 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 6, - "column": 7 - } - ], - "path": [ - "product", - "brand", - "name" - ] + "message": "Top Level Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected new file mode 100644 index 00000000000..529068a8221 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/SubgraphErrorTests.Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data.md.expected @@ -0,0 +1,107 @@ +# Resolve_Sequence_SubField_Nullable_Parent_Nullable_Second_Service_Returns_TopLevel_Error_Without_Data + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": { + "id": "1", + "name": null + } + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md index 78ee98560a7..8468d45e36a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,13 @@ ], "path": [ "productById" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..78ee98560a7 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_NonNull.md.expected @@ -0,0 +1,96 @@ +# Entity_Resolver_Both_Services_Offline_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md index a4fbc64904d..a90fdb636ca 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "productById" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..a4fbc64904d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Both_Services_Offline_EntryField_Nullable.md.expected @@ -0,0 +1,98 @@ +# Entity_Resolver_Both_Services_Offline_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..a8930f61de3 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected @@ -0,0 +1,102 @@ +# Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Cannot return null for non-nullable field.", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md index 3ec42de33dd..db463159f7a 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "productById" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..3ec42de33dd --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected @@ -0,0 +1,98 @@ +# Entity_Resolver_First_Service_Offline_SubFields_NonNull_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md index 161e429f11f..ccc7f416ed8 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md @@ -6,43 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 3, - "column": 5 - } - ], - "path": [ - "productById", - "id" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "productById", - "name" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "productById", - "price" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..161e429f11f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected @@ -0,0 +1,113 @@ +# Entity_Resolver_First_Service_Offline_SubFields_Nullable_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 3, + "column": 5 + } + ], + "path": [ + "productById", + "id" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "productById", + "name" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "productById", + "price" + ] + } + ], + "data": { + "productById": { + "id": null, + "name": null, + "price": null, + "score": 123 + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md index c1b1c79e725..60e92f8dec0 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +16,13 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..c1b1c79e725 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull.md.expected @@ -0,0 +1,97 @@ +# Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md index 62963e34f3d..9d1523d0d4d 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -16,7 +16,13 @@ "path": [ "productById", "score" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..62963e34f3d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable.md.expected @@ -0,0 +1,99 @@ +# Entity_Resolver_Second_Service_Offline_SubFields_NonNull_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +A5FE502D9F6F0548B898BC17A33BC0F2A2A13AE6 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2($__fusion_exports__1: ID!) { productById(id: $__fusion_exports__1) { score } }", + "selectionSetId": 1, + "path": [ + "productById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md index f2f03f9ccbe..404a37b45b1 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md @@ -6,17 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 6, - "column": 5 - } - ], - "path": [ - "productById", - "score" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..f2f03f9ccbe --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable.md.expected @@ -0,0 +1,87 @@ +# Entity_Resolver_Second_Service_Offline_SubFields_Nullable_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 5 + } + ], + "path": [ + "productById", + "score" + ] + } + ], + "data": { + "productById": { + "id": "1", + "name": "string", + "price": 123.456, + "score": null + } + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + score + } +} +``` + +## QueryPlan Hash + +```text +1187C75DB20A2D54D1EDC1F31D46DA85C597E294 +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price score } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_productById_2 { productById(id: \u00221\u0022) { score } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md index 58617313e5d..9fd4ffc2c89 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,13 @@ ], "path": [ "productById" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..58617313e5d --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_NonNull.md.expected @@ -0,0 +1,67 @@ +# Entity_Resolver_Single_Service_Offline_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +3E29A9FA134FCCF20127189A9DE1B4CFB4492EAE +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md index 30bc07ad689..3ff8bb6f9a0 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "productById" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..30bc07ad689 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Entity_Resolver_Single_Service_Offline_EntryField_Nullable.md.expected @@ -0,0 +1,69 @@ +# Entity_Resolver_Single_Service_Offline_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "productById" + ] + } + ], + "data": { + "productById": null + } +} +``` + +## Request + +```graphql +{ + productById(id: "1") { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +3E29A9FA134FCCF20127189A9DE1B4CFB4492EAE +``` + +## QueryPlan + +```json +{ + "document": "{ productById(id: \u00221\u0022) { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_productById_1 { productById(id: \u00221\u0022) { id name price } }", + "selectionSetId": 0 + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md index feed57bc8e0..a4a6765bc2e 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +17,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +34,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +51,13 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md.expected new file mode 100644 index 00000000000..feed57bc8e0 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull.md.expected @@ -0,0 +1,125 @@ +# ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md index 87f2a7a4cb0..664c73d2750 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -17,10 +17,13 @@ "products", 2, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -31,10 +34,13 @@ "products", 1, "price" - ] + ], + "extensions": { + "code": "HC0018" + } }, { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 5, @@ -45,7 +51,13 @@ "products", 0, "price" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md.expected new file mode 100644 index 00000000000..87f2a7a4cb0 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable.md.expected @@ -0,0 +1,131 @@ +# ResolveByKey_Second_Service_Offline_SubField_NonNull_ListItem_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + null, + null, + null + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md index a16c0d51e0e..20b350084a9 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md @@ -6,46 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 2, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 1, - "price" - ] - }, - { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 5, - "column": 5 - } - ], - "path": [ - "products", - 0, - "price" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md.expected new file mode 100644 index 00000000000..a16c0d51e0e --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.ResolveByKey_Second_Service_Offline_SubField_Nullable.md.expected @@ -0,0 +1,143 @@ +# ResolveByKey_Second_Service_Offline_SubField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 2, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 1, + "price" + ] + }, + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 5, + "column": 5 + } + ], + "path": [ + "products", + 0, + "price" + ] + } + ], + "data": { + "products": [ + { + "id": "1", + "name": "string", + "price": null + }, + { + "id": "2", + "name": "string", + "price": null + }, + { + "id": "3", + "name": "string", + "price": null + } + ] + } +} +``` + +## Request + +```graphql +{ + products { + id + name + price + } +} +``` + +## QueryPlan Hash + +```text +C991588ECF525B8EF311F2923FD2CEE9D7BE5B3A +``` + +## QueryPlan + +```json +{ + "document": "{ products { id name price } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_products_1 { products { id name __fusion_exports__1: id } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "ResolveByKeyBatch", + "subgraph": "Subgraph_2", + "document": "query fetch_products_2($__fusion_exports__1: [ID!]!) { productsById(ids: $__fusion_exports__1) { price __fusion_exports__1: id } }", + "selectionSetId": 1, + "path": [ + "productsById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 1 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Product_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md index 3eb0acf8fc0..cc07832ee3d 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,16 @@ ], "path": [ "viewer" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md.expected new file mode 100644 index 00000000000..3eb0acf8fc0 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull.md.expected @@ -0,0 +1,77 @@ +# Resolve_Parallel_Both_Services_Offline_SharedEntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md index 3d646c7c7c7..656cf6de082 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md @@ -6,16 +6,10 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "viewer" - ] + "message": "Internal Execution Error" + }, + { + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md.expected new file mode 100644 index 00000000000..3d646c7c7c7 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable.md.expected @@ -0,0 +1,79 @@ +# Resolve_Parallel_Both_Services_Offline_SharedEntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md index b4b3f5e9a2f..2946f88611b 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,13 @@ ], "path": [ "viewer" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md.expected new file mode 100644 index 00000000000..b4b3f5e9a2f --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_NonNull.md.expected @@ -0,0 +1,79 @@ +# Resolve_Parallel_One_Service_Offline_EntryFields_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md index 0a5d8992d68..0037513d5d8 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "viewer" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md.expected new file mode 100644 index 00000000000..0a5d8992d68 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_EntryFields_Nullable.md.expected @@ -0,0 +1,84 @@ +# Resolve_Parallel_One_Service_Offline_EntryFields_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": { + "viewer": null, + "other": { + "userId": "1" + } + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } + other { + userId + } +} +``` + +## QueryPlan Hash + +```text +1E9F0B5070B0EB2A79CBF03CDCC94C574189F814 +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } other { userId } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_other_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_other_2 { other { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md index 01e951fb186..162e3157dc4 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md @@ -6,20 +6,10 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "viewer", - "name" - ] + "message": "Internal Execution Error" } ], - "data": null + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md.expected new file mode 100644 index 00000000000..01e951fb186 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull.md.expected @@ -0,0 +1,78 @@ +# Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md index cb99f490b64..ab84a9e8f47 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md @@ -6,22 +6,10 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "viewer", - "name" - ] + "message": "Internal Execution Error" } ], - "data": { - "viewer": null - } + "data": {} } ``` diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md.expected new file mode 100644 index 00000000000..cb99f490b64 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable.md.expected @@ -0,0 +1,80 @@ +# Resolve_Parallel_One_Service_Offline_SubField_NonNull_SharedEntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md index 484fc474f8c..6cab0f37ad2 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md @@ -6,17 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 4, - "column": 5 - } - ], - "path": [ - "viewer", - "name" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md.expected new file mode 100644 index 00000000000..484fc474f8c --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable.md.expected @@ -0,0 +1,83 @@ +# Resolve_Parallel_One_Service_Offline_SubField_Nullable_SharedEntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 4, + "column": 5 + } + ], + "path": [ + "viewer", + "name" + ] + } + ], + "data": { + "viewer": { + "userId": "1", + "name": null + } + } +} +``` + +## Request + +```graphql +{ + viewer { + userId + name + } +} +``` + +## QueryPlan Hash + +```text +0728EE40A767B43E14FF62896779067DFF1C53FF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { userId name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Parallel", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_viewer_2 { viewer { userId } }", + "selectionSetId": 0 + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md index ac75f5f061a..9daaf733bee 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,13 @@ ], "path": [ "viewer" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..ac75f5f061a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_NonNull.md.expected @@ -0,0 +1,65 @@ +# Resolve_Parallel_Single_Service_Offline_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + viewer { + name + } +} +``` + +## QueryPlan Hash + +```text +8B6791F7C91D1B779FF099AD8C7FC0D5980195EF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md index e8223929ef3..e604e2fbe7f 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "viewer" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..e8223929ef3 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Parallel_Single_Service_Offline_EntryField_Nullable.md.expected @@ -0,0 +1,67 @@ +# Resolve_Parallel_Single_Service_Offline_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "viewer" + ] + } + ], + "data": { + "viewer": null + } +} +``` + +## Request + +```graphql +{ + viewer { + name + } +} +``` + +## QueryPlan Hash + +```text +8B6791F7C91D1B779FF099AD8C7FC0D5980195EF +``` + +## QueryPlan + +```json +{ + "document": "{ viewer { name } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_viewer_1 { viewer { name } }", + "selectionSetId": 0 + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + } + ] + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md index 5200397e3ca..8f2ce8ff3f1 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 2, @@ -15,7 +15,13 @@ ], "path": [ "product" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": null diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md.expected new file mode 100644 index 00000000000..5200397e3ca --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_NonNull.md.expected @@ -0,0 +1,97 @@ +# Resolve_Sequence_First_Service_Offline_EntryField_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "product" + ] + } + ], + "data": null +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md index 2f0d443696a..3e7cbc3b4c4 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md @@ -6,16 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 2, - "column": 3 - } - ], - "path": [ - "product" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md.expected new file mode 100644 index 00000000000..2f0d443696a --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_First_Service_Offline_EntryField_Nullable.md.expected @@ -0,0 +1,99 @@ +# Resolve_Sequence_First_Service_Offline_EntryField_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 2, + "column": 3 + } + ], + "path": [ + "product" + ] + } + ], + "data": { + "product": null + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md index db796bb0563..fa2b7c03504 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +17,13 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md.expected new file mode 100644 index 00000000000..db796bb0563 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull.md.expected @@ -0,0 +1,101 @@ +# Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_NonNull + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": null + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md index 76819155651..7488f654f89 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md @@ -6,7 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", + "message": "Cannot return null for non-nullable field.", "locations": [ { "line": 6, @@ -17,7 +17,13 @@ "product", "brand", "name" - ] + ], + "extensions": { + "code": "HC0018" + } + }, + { + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md.expected new file mode 100644 index 00000000000..76819155651 --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable.md.expected @@ -0,0 +1,104 @@ +# Resolve_Sequence_Second_Service_Offline_SubField_NonNull_Parent_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": null + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` + diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md index 5029f85a0de..93409350430 100644 --- a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md @@ -6,18 +6,7 @@ { "errors": [ { - "message": "Unexpected Execution Error", - "locations": [ - { - "line": 6, - "column": 7 - } - ], - "path": [ - "product", - "brand", - "name" - ] + "message": "Internal Execution Error" } ], "data": { diff --git a/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md.expected b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md.expected new file mode 100644 index 00000000000..5029f85a0de --- /dev/null +++ b/src/HotChocolate/Fusion/test/Core.Tests/__snapshots__/TransportErrorTests.Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable.md.expected @@ -0,0 +1,107 @@ +# Resolve_Sequence_Second_Service_Offline_SubField_Nullable_Parent_Nullable + +## Result + +```json +{ + "errors": [ + { + "message": "Unexpected Execution Error", + "locations": [ + { + "line": 6, + "column": 7 + } + ], + "path": [ + "product", + "brand", + "name" + ] + } + ], + "data": { + "product": { + "id": "1", + "brand": { + "id": "1", + "name": null + } + } + } +} +``` + +## Request + +```graphql +{ + product { + id + brand { + id + name + } + } +} +``` + +## QueryPlan Hash + +```text +10F6CB69F78A0E4FD176C0F4651E2E37CF47C9C5 +``` + +## QueryPlan + +```json +{ + "document": "{ product { id brand { id name } } }", + "rootNode": { + "type": "Sequence", + "nodes": [ + { + "type": "Resolve", + "subgraph": "Subgraph_1", + "document": "query fetch_product_1 { product { id brand { id __fusion_exports__1: id } } }", + "selectionSetId": 0, + "provides": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 0 + ] + }, + { + "type": "Resolve", + "subgraph": "Subgraph_2", + "document": "query fetch_product_2($__fusion_exports__1: ID!) { brandById(id: $__fusion_exports__1) { name } }", + "selectionSetId": 2, + "path": [ + "brandById" + ], + "requires": [ + { + "variable": "__fusion_exports__1" + } + ] + }, + { + "type": "Compose", + "selectionSetIds": [ + 2 + ] + } + ] + }, + "state": { + "__fusion_exports__1": "Brand_id" + } +} +``` +