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.");
    }