From 4a62487c28613812ff7bdca9f27270498d6b043e Mon Sep 17 00:00:00 2001 From: Anusha Kolan Date: Tue, 21 Jul 2026 13:23:51 -0700 Subject: [PATCH 1/2] Use entity description for stored procedure GraphQL field --- .../GraphQLStoredProcedureBuilder.cs | 6 ++++- .../Sql/StoredProcedureBuilderTests.cs | 27 +++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/Service.GraphQLBuilder/GraphQLStoredProcedureBuilder.cs b/src/Service.GraphQLBuilder/GraphQLStoredProcedureBuilder.cs index ad3786fd36..4052198efd 100644 --- a/src/Service.GraphQLBuilder/GraphQLStoredProcedureBuilder.cs +++ b/src/Service.GraphQLBuilder/GraphQLStoredProcedureBuilder.cs @@ -104,10 +104,14 @@ public static FieldDefinitionNode GenerateStoredProcedureSchema( fieldDefinitionNodeDirectives.Add(authorizeDirective!); } + string description = !string.IsNullOrWhiteSpace(entity.Description) + ? entity.Description + : $"Execute Stored-Procedure {name.Value} and get results from the database"; + return new( location: null, new NameNode(GenerateStoredProcedureGraphQLFieldName(name.Value, entity)), - new StringValueNode($"Execute Stored-Procedure {name.Value} and get results from the database"), + new StringValueNode(description), inputValues, new NonNullTypeNode(new ListTypeNode(new NonNullTypeNode(new NamedTypeNode(name)))), fieldDefinitionNodeDirectives diff --git a/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs b/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs index 8530a3d6b2..98388b95d1 100644 --- a/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs +++ b/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs @@ -355,6 +355,27 @@ public void StoredProcedure_RequiredWithDefault_KeepsDefaultValue() Assert.AreEqual("Demo Title", ((StringValueNode)arg.DefaultValue!).Value); } + [TestMethod] + public void StoredProcedure_Description_UsesEntityDescription() + { + const string entityDescription = "Entity description from config"; + + DatabaseObject spDbObj = new DatabaseStoredProcedure(schemaName: "dbo", tableName: "spDescriptionTest") + { + SourceType = EntitySourceType.StoredProcedure, + StoredProcedureDefinition = new() + }; + + FieldDefinitionNode field = BuildSchemaAndGetExecuteField( + spDbObj: spDbObj, + configParameters: new List(), + graphQLTypeName: "SpDescriptionType", + entityName: "SpDescription", + entityDescription: entityDescription); + + Assert.AreEqual(entityDescription, field.Description?.Value); + } + /// /// Helper that builds a query schema for a stored-procedure entity and returns /// the generated execute* field so individual tests can assert on its argument @@ -364,12 +385,14 @@ private static FieldDefinitionNode BuildSchemaAndGetExecuteField( DatabaseObject spDbObj, List configParameters, string graphQLTypeName, - string entityName) + string entityName, + string? entityDescription = null) { Entity spEntity = GraphQLTestHelpers.GenerateStoredProcedureEntity( graphQLTypeName: graphQLTypeName, graphQLOperation: GraphQLOperation.Query, - parameters: configParameters); + parameters: configParameters) with + { Description = entityDescription }; ObjectTypeDefinitionNode objectType = CreateGraphQLTypeForEntity(spEntity, entityName, spDbObj); From 4184731a881a87ba338acaafea7587b837d0a734 Mon Sep 17 00:00:00 2001 From: Anusha Kolan Date: Mon, 27 Jul 2026 16:30:03 -0700 Subject: [PATCH 2/2] Added extra test. --- .../Sql/StoredProcedureBuilderTests.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs b/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs index 98388b95d1..afe9e2591b 100644 --- a/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs +++ b/src/Service.Tests/GraphQLBuilder/Sql/StoredProcedureBuilderTests.cs @@ -376,6 +376,27 @@ public void StoredProcedure_Description_UsesEntityDescription() Assert.AreEqual(entityDescription, field.Description?.Value); } + [TestMethod] + public void StoredProcedure_Description_UsesDefaultWhenEntityDescriptionIsNull() + { + DatabaseObject spDbObj = new DatabaseStoredProcedure(schemaName: "dbo", tableName: "spDescriptionTest") + { + SourceType = EntitySourceType.StoredProcedure, + StoredProcedureDefinition = new() + }; + + FieldDefinitionNode field = BuildSchemaAndGetExecuteField( + spDbObj: spDbObj, + configParameters: new List(), + graphQLTypeName: "SpDescriptionType", + entityName: "SpDescription", + entityDescription: null); + + // When entityDescription is null, verify the field uses the default generated description + string expectedDescription = "Execute Stored-Procedure SpDescriptionType and get results from the database"; + Assert.AreEqual(expectedDescription, field.Description?.Value); + } + /// /// Helper that builds a query schema for a stored-procedure entity and returns /// the generated execute* field so individual tests can assert on its argument