public void EmptyResult_ExecuteResult_IsANoOp() { // Arrange var emptyResult = new EmptyResult(); var httpContext = new Mock <HttpContext>(MockBehavior.Strict); var routeData = new RouteData(); var actionDescriptor = new ActionDescriptor(); var context = new ActionContext(httpContext.Object, routeData, actionDescriptor); // Act & Assert (does not throw) emptyResult.ExecuteResult(context); }
public void EmptyResult_ExecuteResult_IsANoOp() { // Arrange var emptyResult = new EmptyResult(); var httpContext = new Mock<HttpContext>(MockBehavior.Strict); var routeData = new RouteData(); var actionDescriptor = new ActionDescriptor(); var context = new ActionContext(httpContext.Object, routeData, actionDescriptor); // Act & Assert (does not throw) emptyResult.ExecuteResult(context); }
public async Task InvokeAction_InvokesAsyncActionFilter_ShortCircuit_WithResult() { // Arrange var result = new EmptyResult(); ActionExecutedContext context = null; var actionFilter1 = new Mock<IActionFilter>(MockBehavior.Strict); actionFilter1.Setup(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>())).Verifiable(); actionFilter1 .Setup(f => f.OnActionExecuted(It.IsAny<ActionExecutedContext>())) .Callback<ActionExecutedContext>(c => context = c) .Verifiable(); var actionFilter2 = new Mock<IAsyncActionFilter>(MockBehavior.Strict); actionFilter2 .Setup(f => f.OnActionExecutionAsync(It.IsAny<ActionExecutingContext>(), It.IsAny<ActionExecutionDelegate>())) .Returns<ActionExecutingContext, ActionExecutionDelegate>((c, next) => { // Notice we're not calling next c.Result = result; return Task.FromResult(true); }) .Verifiable(); var actionFilter3 = new Mock<IActionFilter>(MockBehavior.Strict); var resultFilter = new Mock<IResultFilter>(MockBehavior.Strict); resultFilter.Setup(f => f.OnResultExecuting(It.IsAny<ResultExecutingContext>())).Verifiable(); resultFilter.Setup(f => f.OnResultExecuted(It.IsAny<ResultExecutedContext>())).Verifiable(); var invoker = CreateInvoker(new IFilter[] { actionFilter1.Object, actionFilter2.Object, actionFilter3.Object, resultFilter.Object, }); // Act await invoker.InvokeAsync(); // Assert actionFilter1.Verify(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>()), Times.Once()); actionFilter1.Verify(f => f.OnActionExecuted(It.IsAny<ActionExecutedContext>()), Times.Once()); actionFilter2.Verify( f => f.OnActionExecutionAsync(It.IsAny<ActionExecutingContext>(), It.IsAny<ActionExecutionDelegate>()), Times.Once()); resultFilter.Verify(f => f.OnResultExecuting(It.IsAny<ResultExecutingContext>()), Times.Once()); resultFilter.Verify(f => f.OnResultExecuted(It.IsAny<ResultExecutedContext>()), Times.Once()); Assert.True(context.Canceled); Assert.Same(context.Result, result); }
public async Task InvokeAction_InvokesActionFilter_ShortCircuit() { // Arrange var result = new EmptyResult(); ActionExecutedContext context = null; var actionFilter1 = new Mock<IActionFilter>(MockBehavior.Strict); actionFilter1.Setup(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>())).Verifiable(); actionFilter1 .Setup(f => f.OnActionExecuted(It.IsAny<ActionExecutedContext>())) .Callback<ActionExecutedContext>(c => context = c) .Verifiable(); var actionFilter2 = new Mock<IActionFilter>(MockBehavior.Strict); actionFilter2 .Setup(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>())) .Callback<ActionExecutingContext>(c => c.Result = result) .Verifiable(); var actionFilter3 = new Mock<IActionFilter>(MockBehavior.Strict); var resultFilter = new Mock<IResultFilter>(MockBehavior.Strict); resultFilter.Setup(f => f.OnResultExecuting(It.IsAny<ResultExecutingContext>())).Verifiable(); resultFilter.Setup(f => f.OnResultExecuted(It.IsAny<ResultExecutedContext>())).Verifiable(); var invoker = CreateInvoker(new IFilter[] { actionFilter1.Object, actionFilter2.Object, actionFilter3.Object, resultFilter.Object, }); // Act await invoker.InvokeAsync(); // Assert actionFilter1.Verify(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>()), Times.Once()); actionFilter1.Verify(f => f.OnActionExecuted(It.IsAny<ActionExecutedContext>()), Times.Once()); actionFilter2.Verify(f => f.OnActionExecuting(It.IsAny<ActionExecutingContext>()), Times.Once()); resultFilter.Verify(f => f.OnResultExecuting(It.IsAny<ResultExecutingContext>()), Times.Once()); resultFilter.Verify(f => f.OnResultExecuted(It.IsAny<ResultExecutedContext>()), Times.Once()); Assert.True(context.Canceled); Assert.Same(context.Result, result); }