public async Task ExecuteResultAsync_SetsObjectValueOfFormatter(object value) { // Arrange var url = "testAction"; var formatter = CreateMockFormatter(); var httpContext = GetHttpContext(formatter); object actual = null; formatter.Setup(f => f.WriteAsync(It.IsAny <OutputFormatterWriteContext>())) .Callback((OutputFormatterWriteContext context) => actual = context.Object) .Returns(Task.FromResult(0)); var actionContext = GetActionContext(httpContext); var urlHelper = GetMockUrlHelper(url); var routeValues = new RouteValueDictionary(new Dictionary <string, string>() { { "test", "case" }, { "sample", "route" } }); // Act var result = new AcceptedAtRouteResult( routeName: "sample", routeValues: routeValues, value: value); result.UrlHelper = urlHelper; await result.ExecuteResultAsync(actionContext); // Assert Assert.Same(value, actual); }
public async Task ExecuteResultAsync_SetsStatusCodeAndLocationHeader(object values) { // Arrange var expectedUrl = "testAction"; var formatter = CreateMockFormatter(); var httpContext = GetHttpContext(formatter); var actionContext = GetActionContext(httpContext); var urlHelper = GetMockUrlHelper(expectedUrl); // Act var result = new AcceptedAtRouteResult(routeValues: values, value: null); result.UrlHelper = urlHelper; await result.ExecuteResultAsync(actionContext); // Assert Assert.Equal(StatusCodes.Status202Accepted, httpContext.Response.StatusCode); Assert.Equal(expectedUrl, httpContext.Response.Headers["Location"]); }
public async Task ExecuteResultAsync_ThrowsIfRouteUrlIsNull() { // Arrange var formatter = CreateMockFormatter(); var httpContext = GetHttpContext(formatter); var actionContext = GetActionContext(httpContext); var urlHelper = GetMockUrlHelper(returnValue: null); // Act var result = new AcceptedAtRouteResult( routeName: null, routeValues: new Dictionary <string, object>(), value: null); result.UrlHelper = urlHelper; // Assert await ExceptionAssert.ThrowsAsync <InvalidOperationException>(() => result.ExecuteResultAsync(actionContext), "No route matches the supplied values."); }