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);