Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }