Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
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.º 4
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.º 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 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.º 7
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 <PartialViewResult>(valueTask.Result);
        }
Exemplo n.º 8
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.º 9
0
    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);
    }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
    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);
    }
Exemplo n.º 12
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.Equal("VoidResultExecutor", actionMethodExecutor.GetType().Name);
        Assert.True(controller.Executed);
        Assert.IsType <EmptyResult>(valueTask.Result);
    }
Exemplo n.º 13
0
    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);
    }
Exemplo n.º 14
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);
    }
        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.º 16
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);
        }
        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);
        }
Exemplo n.º 18
0
    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);
    }
Exemplo n.º 19
0
    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);
    }
Exemplo n.º 20
0
    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);
    }