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 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 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 <ContentResult>(valueTask.Result); }
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_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 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 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.True(controller.Executed); Assert.IsType <EmptyResult>(valueTask.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); Assert.Equal(typeof(TestModel), result.DeclaredType); }