public void ActionMethodExecutor_ExecutesActionsReturningActionResultOfT(bool withFilter) { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsActionResultOfT)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); var filterContext = new ControllerEndpointFilterInvocationContext(new Controllers.ControllerActionDescriptor(), new ActionContext(), objectMethodExecutor, mapper, controller, Array.Empty <object>()); // Act var valueTask = Execute(actionMethodExecutor, filterContext, withFilter); // Assert var result = Assert.IsType <ObjectResult>(valueTask.Result); Assert.Equal("SyncObjectResultExecutor", actionMethodExecutor.GetType().Name); Assert.NotNull(result.Value); Assert.IsType <TestModel>(result.Value); Assert.Equal(typeof(TestModel), result.DeclaredType); }
public void Convert_WithIConvertToActionResultAndIResult_DelegatesToInterface() { // Arrange var mapper = new ActionResultTypeMapper(); var returnValue = new CustomConvertibleIResult(); // Act var result = mapper.Convert(returnValue, returnValue.GetType()); // Assert Assert.IsType <EmptyResult>(result); }
public void GetResultDataType_WithActionResultOfT_UnwrapsType() { // Arrange var mapper = new ActionResultTypeMapper(); var returnType = typeof(ActionResult <string>); // Act var result = mapper.GetResultDataType(returnType); // Assert Assert.Equal(typeof(string), result); }
public void GetResultDataType_WithRegularType_ReturnsType() { // Arrange var mapper = new ActionResultTypeMapper(); var returnType = typeof(string); // Act var result = mapper.GetResultDataType(returnType); // Assert Assert.Equal(typeof(string), result); }
public void ActionMethodExecutor_ThrowsIfIConvertFromIActionResult_ReturnsNull() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsCustomConvertibleFromIActionResult)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act & Assert var ex = Assert.Throws <InvalidOperationException>( () => actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>())); Assert.Equal($"Cannot return null from an action method with a return type of '{typeof(CustomConvertibleFromAction)}'.", ex.Message); }
public void Convert_WithIConvertToActionResult_DelegatesToInterface() { // Arrange var mapper = new ActionResultTypeMapper(); var expected = new EmptyResult(); var returnValue = Mock.Of <IConvertToActionResult>(r => r.Convert() == expected); // Act var result = mapper.Convert(returnValue, typeof(string)); // Assert Assert.Same(expected, result); }
public void ActionMethodExecutor_ExecutesActionsReturningSubTypeOfActionResult() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsIActionResultSubType)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.IsType <PartialViewResult>(valueTask.Result); }
public void ActionMethodExecutor_ExecutesActionsAsynchronouslyReturningIActionResultAsObject() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnIActionResultAsObjectAsync)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.IsType <OkResult>(valueTask.Result); }
public void Convert_WithIResult_DelegatesToInterface() { // Arrange var mapper = new ActionResultTypeMapper(); var returnValue = Mock.Of <IResult>(); // Act var result = mapper.Convert(returnValue, returnValue.GetType()); // Assert var httpResult = Assert.IsType <HttpActionResult>(result); Assert.Same(returnValue, httpResult.Result); }
public void ActionMethodExecutor_ExecutesActionsReturningIActionResult() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnIActionResult)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.True(valueTask.IsCompleted); Assert.IsType <ContentResult>(valueTask.Result); }
public void ActionMethodExecutor_ExecutesActionsReturningActionResultAsObject() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsIActionResultSubType)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.Equal("SyncActionResultExecutor", actionMethodExecutor.GetType().Name); Assert.IsType <ContentResult>(valueTask.Result); }
public void ActionMethodExecutor_ExecutesVoidActions() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.VoidAction)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.Equal("VoidResultExecutor", actionMethodExecutor.GetType().Name); Assert.True(controller.Executed); Assert.IsType <EmptyResult>(valueTask.Result); }
public void ActionMethodExecutor_ExecutesActionsReturnAwaitable() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsAwaitable)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var awaitableResult = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert Assert.Equal("AwaitableResultExecutor", actionMethodExecutor.GetType().Name); Assert.True(controller.Executed); Assert.IsType <EmptyResult>(awaitableResult.Result); }
public void Convert_WithRegularType_CreatesObjectResult() { // Arrange var mapper = new ActionResultTypeMapper(); var returnValue = "hello"; // Act var result = mapper.Convert(returnValue, typeof(string)); // Assert var objectResult = Assert.IsType <ObjectResult>(result); Assert.Same(returnValue, objectResult.Value); Assert.Equal(typeof(string), objectResult.DeclaredType); }
public async Task ActionMethodExecutor_ExecutesActionsAsynchronouslyReturningActionResultSubType() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnIActionResultAsync)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert await valueTask; Assert.IsType <StatusCodeResult>(valueTask.Result); }
public void ActionMethodExecutor_ExecutesActionsReturningModelAsModel() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsModelAsModel)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert var result = Assert.IsType <ObjectResult>(valueTask.Result); Assert.NotNull(result.Value); Assert.IsType <TestModel>(result.Value); }
public void ActionMethodExecutor_ExecutesActionsAsynchronouslyReturningActionResultOfT() { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnActionResultOFTAsync)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); // Act var valueTask = actionMethodExecutor.Execute(mapper, objectMethodExecutor, controller, Array.Empty <object>()); // Assert var result = Assert.IsType <ObjectResult>(valueTask.Result); Assert.NotNull(result.Value); Assert.IsType <TestModel>(result.Value); Assert.Equal(typeof(TestModel), result.DeclaredType); }
public async Task ActionMethodExecutor_ThrowsIfIConvertFromIActionResult_ReturnsNull(bool withFilter) { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsCustomConvertibleFromIActionResult)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); var filterContext = new ControllerEndpointFilterInvocationContext(new Controllers.ControllerActionDescriptor(), new ActionContext(), objectMethodExecutor, mapper, controller, Array.Empty <object>()); // Act & Assert var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => Execute(actionMethodExecutor, filterContext, withFilter).AsTask()); Assert.Equal($"Cannot return null from an action method with a return type of '{typeof(CustomConvertibleFromAction)}'.", ex.Message); }
public void ActionMethodExecutor_ExecutesActionsReturningSubTypeOfActionResult(bool withFilter) { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnsIActionResultSubType)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); var filterContext = new ControllerEndpointFilterInvocationContext(new Controllers.ControllerActionDescriptor(), new ActionContext(), objectMethodExecutor, mapper, controller, Array.Empty <object>()); // Act var valueTask = Execute(actionMethodExecutor, filterContext, withFilter); // Assert Assert.Equal("SyncActionResultExecutor", actionMethodExecutor.GetType().Name); Assert.IsType <ContentResult>(valueTask.Result); }
public async Task ActionMethodExecutor_ExecutesActionsAsynchronouslyReturningActionResultSubType(bool withFilter) { // Arrange var mapper = new ActionResultTypeMapper(); var controller = new TestController(); var objectMethodExecutor = GetExecutor(nameof(TestController.ReturnActionResultAsync)); var actionMethodExecutor = ActionMethodExecutor.GetExecutor(objectMethodExecutor); var filterContext = new ControllerEndpointFilterInvocationContext(new Controllers.ControllerActionDescriptor(), new ActionContext(), objectMethodExecutor, mapper, controller, Array.Empty <object>()); // Act var valueTask = Execute(actionMethodExecutor, filterContext, withFilter); // Assert await valueTask; Assert.Equal("TaskOfActionResultExecutor", actionMethodExecutor.GetType().Name); Assert.IsType <ViewResult>(valueTask.Result); }