@@ -300,6 +300,81 @@ public void AddsMultipleResponseFormatsForTypedResults()
300300 Assert . Empty ( badRequestResponseType . ApiResponseFormats ) ;
301301 }
302302
303+ [ Fact ]
304+ public void AddsResponseDescription ( )
305+ {
306+ const string expectedCreatedDescription = "A new item was created" ;
307+ const string expectedBadRequestDescription = "Validation failed for the request" ;
308+
309+ var apiDescription = GetApiDescription (
310+ [ ProducesResponseType ( typeof ( TimeSpan ) , StatusCodes . Status201Created , Description = expectedCreatedDescription ) ]
311+ [ ProducesResponseType ( StatusCodes . Status400BadRequest , Description = expectedBadRequestDescription ) ]
312+ ( ) => TypedResults . Created ( "https://example.com" , new TimeSpan ( ) ) ) ;
313+
314+ Assert . Equal ( 2 , apiDescription . SupportedResponseTypes . Count ) ;
315+
316+ var createdResponseType = apiDescription . SupportedResponseTypes [ 0 ] ;
317+
318+ Assert . Equal ( 201 , createdResponseType . StatusCode ) ;
319+ Assert . Equal ( typeof ( TimeSpan ) , createdResponseType . Type ) ;
320+ Assert . Equal ( typeof ( TimeSpan ) , createdResponseType . ModelMetadata ? . ModelType ) ;
321+ Assert . Equal ( expectedCreatedDescription , createdResponseType . Description ) ;
322+
323+ var createdResponseFormat = Assert . Single ( createdResponseType . ApiResponseFormats ) ;
324+ Assert . Equal ( "application/json" , createdResponseFormat . MediaType ) ;
325+
326+ var badRequestResponseType = apiDescription . SupportedResponseTypes [ 1 ] ;
327+
328+ Assert . Equal ( 400 , badRequestResponseType . StatusCode ) ;
329+ Assert . Equal ( typeof ( void ) , badRequestResponseType . Type ) ;
330+ Assert . Equal ( typeof ( void ) , badRequestResponseType . ModelMetadata ? . ModelType ) ;
331+ Assert . Equal ( expectedBadRequestDescription , badRequestResponseType . Description ) ;
332+ }
333+
334+ [ Fact ]
335+ public void WithEmptyMethodBody_AddsResponseDescription ( )
336+ {
337+ const string expectedCreatedDescription = "A new item was created" ;
338+ const string expectedBadRequestDescription = "Validation failed for the request" ;
339+
340+ var apiDescription = GetApiDescription (
341+ [ ProducesResponseType ( typeof ( TimeSpan ) , StatusCodes . Status201Created , Description = expectedCreatedDescription ) ]
342+ [ ProducesResponseType ( StatusCodes . Status400BadRequest , Description = expectedBadRequestDescription ) ]
343+ ( ) => new InferredJsonClass ( ) ) ;
344+
345+ Assert . Equal ( 3 , apiDescription . SupportedResponseTypes . Count ) ;
346+
347+ var rdfInferredResponseType = apiDescription . SupportedResponseTypes [ 0 ] ;
348+
349+ Assert . Equal ( 200 , rdfInferredResponseType . StatusCode ) ;
350+ Assert . Equal ( typeof ( InferredJsonClass ) , rdfInferredResponseType . Type ) ;
351+ Assert . Equal ( typeof ( InferredJsonClass ) , rdfInferredResponseType . ModelMetadata ? . ModelType ) ;
352+
353+ var rdfInferredResponseFormat = Assert . Single ( rdfInferredResponseType . ApiResponseFormats ) ;
354+ Assert . Equal ( "application/json" , rdfInferredResponseFormat . MediaType ) ;
355+ Assert . Null ( rdfInferredResponseType . Description ) ; // There is no description set for the default "200" code, so we expect it to be null.
356+
357+ var createdResponseType = apiDescription . SupportedResponseTypes [ 1 ] ;
358+
359+ Assert . Equal ( 201 , createdResponseType . StatusCode ) ;
360+ Assert . Equal ( typeof ( TimeSpan ) , createdResponseType . Type ) ;
361+ Assert . Equal ( typeof ( TimeSpan ) , createdResponseType . ModelMetadata ? . ModelType ) ;
362+ Assert . Equal ( expectedCreatedDescription , createdResponseType . Description ) ;
363+
364+ var createdResponseFormat = Assert . Single ( createdResponseType . ApiResponseFormats ) ;
365+ Assert . Equal ( "application/json" , createdResponseFormat . MediaType ) ;
366+
367+ var badRequestResponseType = apiDescription . SupportedResponseTypes [ 2 ] ;
368+
369+ Assert . Equal ( 400 , badRequestResponseType . StatusCode ) ;
370+ Assert . Equal ( typeof ( InferredJsonClass ) , badRequestResponseType . Type ) ;
371+ Assert . Equal ( typeof ( InferredJsonClass ) , badRequestResponseType . ModelMetadata ? . ModelType ) ;
372+ Assert . Equal ( expectedBadRequestDescription , badRequestResponseType . Description ) ;
373+
374+ var badRequestResponseFormat = Assert . Single ( badRequestResponseType . ApiResponseFormats ) ;
375+ Assert . Equal ( "application/json" , badRequestResponseFormat . MediaType ) ;
376+ }
377+
303378 [ Fact ]
304379 public void AddsResponseFormatsForTypedResultWithoutReturnType ( )
305380 {
0 commit comments