@@ -186,6 +186,66 @@ public void GetApiResponseTypes_ReturnsResponseTypesFromApiConventionItem()
186186 } ) ;
187187 }
188188
189+ [ Fact ]
190+ public void GetApiResponseTypes_ReturnsDescriptionFromProducesResponseType ( )
191+ {
192+ // Arrange
193+
194+ const string expectedOkDescription = "All is well" ;
195+ const string expectedBadRequestDescription = "Invalid request" ;
196+ const string expectedNotFoundDescription = "Something was not found" ;
197+
198+ var actionDescriptor = GetControllerActionDescriptor (
199+ typeof ( GetApiResponseTypes_ReturnsResponseTypesFromDefaultConventionsController ) ,
200+ nameof ( GetApiResponseTypes_ReturnsResponseTypesFromDefaultConventionsController . DeleteBase ) ) ;
201+
202+ actionDescriptor . Properties [ typeof ( ApiConventionResult ) ] = new ApiConventionResult ( new [ ]
203+ {
204+ new ProducesResponseTypeAttribute ( 200 ) { Description = expectedOkDescription } ,
205+ new ProducesResponseTypeAttribute ( 400 ) { Description = expectedBadRequestDescription } ,
206+ new ProducesResponseTypeAttribute ( 404 ) { Description = expectedNotFoundDescription } ,
207+ } ) ;
208+
209+ var provider = GetProvider ( ) ;
210+
211+ // Act
212+ var result = provider . GetApiResponseTypes ( actionDescriptor ) ;
213+
214+ // Assert
215+ Assert . Collection (
216+ result . OrderBy ( r => r . StatusCode ) ,
217+ responseType =>
218+ {
219+ Assert . Equal ( 200 , responseType . StatusCode ) ;
220+ Assert . Equal ( typeof ( BaseModel ) , responseType . Type ) ;
221+ Assert . False ( responseType . IsDefaultResponse ) ;
222+ Assert . Equal ( expectedOkDescription , responseType . Description ) ;
223+ Assert . Collection (
224+ responseType . ApiResponseFormats ,
225+ format =>
226+ {
227+ Assert . Equal ( "application/json" , format . MediaType ) ;
228+ Assert . IsType < TestOutputFormatter > ( format . Formatter ) ;
229+ } ) ;
230+ } ,
231+ responseType =>
232+ {
233+ Assert . Equal ( 400 , responseType . StatusCode ) ;
234+ Assert . Equal ( typeof ( void ) , responseType . Type ) ;
235+ Assert . False ( responseType . IsDefaultResponse ) ;
236+ Assert . Empty ( responseType . ApiResponseFormats ) ;
237+ Assert . Equal ( expectedBadRequestDescription , responseType . Description ) ;
238+ } ,
239+ responseType =>
240+ {
241+ Assert . Equal ( 404 , responseType . StatusCode ) ;
242+ Assert . Equal ( typeof ( void ) , responseType . Type ) ;
243+ Assert . False ( responseType . IsDefaultResponse ) ;
244+ Assert . Empty ( responseType . ApiResponseFormats ) ;
245+ Assert . Equal ( expectedNotFoundDescription , responseType . Description ) ;
246+ } ) ;
247+ }
248+
189249 [ ApiConventionType ( typeof ( DefaultApiConventions ) ) ]
190250 public class GetApiResponseTypes_ReturnsResponseTypesFromDefaultConventionsController : ControllerBase
191251 {
0 commit comments