diff --git a/src/GraphQLService.cpp b/src/GraphQLService.cpp index d3cd2095..a01daba5 100644 --- a/src/GraphQLService.cpp +++ b/src/GraphQLService.cpp @@ -934,9 +934,12 @@ SelectionVisitor::SelectionVisitor(const SelectionSetParams& selectionSetParams, , _variables(variables) , _typeNames(typeNames) , _resolvers(resolvers) - , _fragmentDefinitionDirectives { selectionSetParams.fragmentDefinitionDirectives } - , _fragmentSpreadDirectives { selectionSetParams.fragmentSpreadDirectives } - , _inlineFragmentDirectives { selectionSetParams.inlineFragmentDirectives } + , _fragmentDefinitionDirectives { std::make_shared( + *selectionSetParams.fragmentDefinitionDirectives) } + , _fragmentSpreadDirectives { std::make_shared( + *selectionSetParams.fragmentSpreadDirectives) } + , _inlineFragmentDirectives { std::make_shared( + *selectionSetParams.inlineFragmentDirectives) } { static const Directives s_emptyFragmentDefinitionDirectives; diff --git a/test/CoroutineTests.cpp b/test/CoroutineTests.cpp index 5cf074f8..8ba5758c 100644 --- a/test/CoroutineTests.cpp +++ b/test/CoroutineTests.cpp @@ -287,6 +287,9 @@ TEST_F(CoroutineCase, QueryEverythingThreaded) auto query = R"( query Everything { appointments { + pageInfo { + ...PageInfoFields + } edges { node { id @@ -298,6 +301,9 @@ TEST_F(CoroutineCase, QueryEverythingThreaded) } } tasks { + pageInfo { + ...PageInfoFields + } edges { node { id @@ -308,6 +314,9 @@ TEST_F(CoroutineCase, QueryEverythingThreaded) } } unreadCounts { + pageInfo { + ...PageInfoFields + } edges { node { id @@ -317,6 +326,10 @@ TEST_F(CoroutineCase, QueryEverythingThreaded) } } } + } + fragment PageInfoFields on PageInfo { + hasNextPage + hasPreviousPage })"_graphql; response::Value variables(response::Type::Map); auto state = std::make_shared(3);