From a78f77afde003c4a3fcf5dd7b6dc13dd9c85f825 Mon Sep 17 00:00:00 2001 From: ryanbrandenburg Date: Fri, 18 Mar 2016 14:33:40 -0700 Subject: [PATCH] Add StatusCode helpers to ControllerBase --- .../ControllerBase.cs | 27 +++++++- .../ControllerBaseTest.cs | 61 +++++++++++++++++++ 2 files changed, 87 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs index 7257402dcc..d34770ca35 100644 --- a/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs +++ b/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs @@ -203,6 +203,32 @@ namespace Microsoft.AspNetCore.Mvc } } + /// + /// Creates a object by specifying a . + /// + /// The status code to set on the response. + /// The created object for the response. + [NonAction] + public virtual StatusCodeResult StatusCode(int statusCode) + { + return new StatusCodeResult(statusCode); + } + + /// + /// Creates a object by specifying a and + /// + /// The status code to set on the response. + /// The value to set on the . + /// The created object for the response. + [NonAction] + public virtual ObjectResult StatusCode(int statusCode, object value) + { + var result = new ObjectResult(value); + result.StatusCode = statusCode; + + return result; + } + /// /// Creates a object by specifying a string. /// @@ -266,7 +292,6 @@ namespace Microsoft.AspNetCore.Mvc return result; } - /// /// Creates a object that produces an empty No Content (204) response. /// diff --git a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs index 37235898da..75437ad81d 100644 --- a/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs +++ b/test/Microsoft.AspNetCore.Mvc.Core.Test/ControllerBaseTest.cs @@ -1061,6 +1061,54 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test Assert.Equal(contentType, contentResult.ContentType); } + [Fact] + public void Controller_StatusCode_SetObject() + { + // Arrange + var statusCode = 204; + var value = new { Value = 42 }; + + var statusCodeController = new StatusCodeController(); + + // Act + var result = (ObjectResult)statusCodeController.StatusCode_Object(statusCode, value); + + // Assert + Assert.Equal(statusCode, result.StatusCode); + Assert.Equal(value, result.Value); + } + + [Fact] + public void Controller_StatusCode_SetObjectNull() + { + // Arrange + var statusCode = 204; + object value = null; + + var statusCodeController = new StatusCodeController(); + + // Act + var result = statusCodeController.StatusCode_Object(statusCode, value); + + // Assert + Assert.Equal(statusCode, result.StatusCode); + Assert.Equal(value, result.Value); + } + + [Fact] + public void Controller_StatusCode_SetsStatusCode() + { + // Arrange + var statusCode = 205; + var statusCodeController = new StatusCodeController(); + + // Act + var result = statusCodeController.StatusCode_Int(statusCode); + + // Assert + Assert.Equal(statusCode, result.StatusCode); + } + public static IEnumerable RedirectTestData { get @@ -1640,6 +1688,19 @@ namespace Microsoft.AspNetCore.Mvc.Core.Test } } + private class StatusCodeController : ControllerBase + { + public StatusCodeResult StatusCode_Int(int statusCode) + { + return StatusCode(statusCode); + } + + public ObjectResult StatusCode_Object(int statusCode, object value) + { + return StatusCode(statusCode, value); + } + } + private class ContentController : ControllerBase { public IActionResult Content_WithNoEncoding()