예제 #1
0
        public void AppliesToActionForGetActionWorksAsExpected(string actionName, string expectedTemplate)
        {
            // Arrange
            ControllerModel controller = ControllerModelHelpers.BuildControllerModel <CustomersController>(actionName);
            ActionModel     action     = controller.Actions.First();

            ODataControllerActionContext context = ODataControllerActionContextHelpers.BuildContext(string.Empty, EdmModel, controller);

            context.Action = action;

            EntitySetRoutingConvention entitySetConvention = ConventionHelpers.CreateConvention <EntitySetRoutingConvention>();

            // Act
            bool returnValue = entitySetConvention.AppliesToAction(context);

            Assert.True(returnValue);

            // Assert
            Assert.Equal(2, action.Selectors.Count);
            Assert.Equal(new[]
            {
                $"/{expectedTemplate}",
                $"/{expectedTemplate}/$count"
            },
                         action.Selectors.Select(s => s.AttributeRouteModel.Template));
        }
예제 #2
0
        public void AppliesToControllerAndActionOnEntitySetRoutingConvention_Throws_Context()
        {
            // Arrange
            EntitySetRoutingConvention convention = new EntitySetRoutingConvention();

            // Act & Assert
            ExceptionAssert.ThrowsArgumentNull(() => convention.AppliesToController(null), "context");
            ExceptionAssert.ThrowsArgumentNull(() => convention.AppliesToAction(null), "context");
        }
예제 #3
0
        public void AppliesToControllerReturnsExpectedForController(Type controllerType, bool expected)
        {
            // Arrange
            ControllerModel controller                       = ControllerModelHelpers.BuildControllerModel(controllerType);
            ODataControllerActionContext context             = ODataControllerActionContextHelpers.BuildContext(string.Empty, EdmModel, controller);
            EntitySetRoutingConvention   entitySetConvention = ConventionHelpers.CreateConvention <EntitySetRoutingConvention>();

            // Act
            bool actual = entitySetConvention.AppliesToController(context);

            // Assert
            Assert.Equal(expected, actual);
        }
예제 #4
0
        public void AppliesToActionDoesNothingForNonConventionAction(string actionName)
        {
            // Arrange
            ControllerModel controller = ControllerModelHelpers.BuildControllerModel <AnotherCustomersController>(actionName);
            ActionModel     action     = controller.Actions.First();

            ODataControllerActionContext context = ODataControllerActionContextHelpers.BuildContext(string.Empty, EdmModel, controller);

            context.Action = controller.Actions.First();

            EntitySetRoutingConvention entitySetConvention = ConventionHelpers.CreateConvention <EntitySetRoutingConvention>();

            // Act
            entitySetConvention.AppliesToAction(context);

            // Assert
            Assert.Empty(action.Selectors);
        }
예제 #5
0
        public void AppliesToActionForPostActionWorksAsExpected(string actionName, string expected)
        {
            // Arrange
            ControllerModel controller = ControllerModelHelpers.BuildControllerModel <CustomersController>(actionName);
            ActionModel     action     = controller.Actions.First();

            ODataControllerActionContext context = ODataControllerActionContextHelpers.BuildContext(string.Empty, EdmModel, controller);

            context.Action = controller.Actions.First();

            EntitySetRoutingConvention entitySetConvention = ConventionHelpers.CreateConvention <EntitySetRoutingConvention>();

            // Act
            bool returnValue = entitySetConvention.AppliesToAction(context);

            Assert.True(returnValue);

            // Assert
            SelectorModel selector = Assert.Single(action.Selectors);

            Assert.Equal(expected, selector.AttributeRouteModel.Template);
        }
        public void AppliesToAction_Works_ForPatchActionWorksAsExpected(Type controllerType, string actionName, string expected, bool ignoreCase)
        {
            // Arrange
            ControllerModel controller = ControllerModelHelpers.BuildControllerModel(controllerType, actionName);
            ActionModel     action     = controller.Actions.First();

            ODataControllerActionContext context = ODataControllerActionContextHelpers.BuildContext(string.Empty, EdmModel, controller);

            context.Action = controller.Actions.First();
            context.Options.RouteOptions.EnableActionNameCaseInsensitive = ignoreCase;

            EntitySetRoutingConvention entitySetConvention = ConventionHelpers.CreateConvention <EntitySetRoutingConvention>();

            // Act
            bool returnValue = entitySetConvention.AppliesToAction(context);

            Assert.True(returnValue);

            // Assert
            SelectorModel selector = Assert.Single(action.Selectors);

            Assert.Equal(expected, selector.AttributeRouteModel.Template);
        }