public void ShouldSetTheContentType()
        {
            HttpContextBase httpContext = Substitute.For<HttpContextBase>();
            RouteData routeData = new RouteData();
            ControllerBase controller = Substitute.For<ControllerBase>();
            ControllerContext context = new ControllerContext(httpContext, routeData, controller);

            JsonWithHttpStatusCodeResult result = new JsonWithHttpStatusCodeResult(HttpStatusCode.InternalServerError);
            result.ExecuteResult(context);

            Assert.AreEqual("application/json", httpContext.Response.ContentType, "The content type was not set.");
        }
        public void ShouldSetTheResponseStatusCode()
        {
            HttpContextBase httpContext = Substitute.For<HttpContextBase>();
            RouteData routeData = new RouteData();
            ControllerBase controller = Substitute.For<ControllerBase>();
            ControllerContext context = new ControllerContext(httpContext, routeData, controller);

            JsonWithHttpStatusCodeResult result = new JsonWithHttpStatusCodeResult((int)HttpStatusCode.InternalServerError);
            result.ExecuteResult(context);

            Assert.AreEqual(result.StatusCode, httpContext.Response.StatusCode, "The status code was not set.");
        }
        public void ShouldSerializeDataToJson()
        {
            using (StringWriter writer = new StringWriter(CultureInfo.CurrentCulture))
            {
                HttpContextBase httpContext = Substitute.For<HttpContextBase>();
                httpContext.Response.When(c => c.Write(Arg.Any<string>())).Do(c => writer.Write(c.Arg<string>()));

                RouteData routeData = new RouteData();
                ControllerBase controller = Substitute.For<ControllerBase>();
                ControllerContext context = new ControllerContext(httpContext, routeData, controller);

                JsonWithHttpStatusCodeResult result = new JsonWithHttpStatusCodeResult(HttpStatusCode.InternalServerError);
                result.Data = new { Value = 123 };
                result.ExecuteResult(context);

                writer.Flush();
                string content = writer.ToString();
                Assert.AreEqual(@"{""Value"":123}", content, "The content was not written.");
            }
        }
 public void ShouldStoreStatusCode()
 {
     HttpStatusCode statusCode = HttpStatusCode.InternalServerError;
     JsonWithHttpStatusCodeResult result = new JsonWithHttpStatusCodeResult(statusCode);
     Assert.AreEqual((int)statusCode, result.StatusCode, "The status code was not set.");
 }