Skip to content

Commit 38606e9

Browse files
committed
Add more tests
1 parent 4730e8f commit 38606e9

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

src/Mvc/Mvc.ApiExplorer/test/ApiResponseTypeProviderTest.cs

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)