public void OnProvidersExecuted_AddODataRoutingSelector_WhenAttributeRoutingConvention()
        {
            // Arrange
            ODataOptions options = new ODataOptions();

            options.AddModel("odata", _model);

            LoggerFactory            loggerFactory = new LoggerFactory();
            var                      logger        = new Logger <AttributeRoutingConvention>(loggerFactory);
            IODataPathTemplateParser parser        = new DefaultODataPathTemplateParser();

            IODataControllerActionConvention[] conventions = new IODataControllerActionConvention[]
            {
                new AttributeRoutingConvention(logger, parser)
            };

            ODataRoutingApplicationModelProvider provider        = CreateProvider(options, conventions);
            ApplicationModelProviderContext      providerContext = CreateProviderContext(typeof(AttributeRoutingController));

            // Act
            provider.OnProvidersExecuted(providerContext);

            // Assert
            ControllerModel controller = Assert.Single(providerContext.Result.Controllers);

            ActionModel action = Assert.Single(controller.Actions);

            Assert.Equal("AnyMethodNameHere", action.ActionMethod.Name);
            Assert.Single(action.Parameters);
            Assert.Equal(2, action.Selectors.Count);
            Assert.Equal(new[] { "odata/Customers({key})/Name", "odata/Customers/{key}/Name" }, action.Selectors.Select(s => s.AttributeRouteModel.Template));
        }
Exemplo n.º 2
0
        public void OnProvidersExecuted_AddODataRoutingSelector_WhenEntityRoutingConvention()
        {
            // Arrange
            ODataOptions options = new ODataOptions();

            options.AddModel("odata", _model);

            IODataControllerActionConvention[] conventions = new IODataControllerActionConvention[]
            {
                new EntityRoutingConvention()
            };

            ODataRoutingApplicationModelProvider provider = CreateProvider(options, conventions);

            Type controllerType = typeof(CustomersController);
            ApplicationModelProviderContext providerContext = CreateProviderContext(controllerType);

            // Act
            provider.OnProvidersExecuted(providerContext);

            // Assert
            ControllerModel controller = Assert.Single(providerContext.Result.Controllers);

            Assert.Equal(2, controller.Actions.Count);
            Assert.Collection(controller.Actions,
                              e =>
            {
                // Get()
                Assert.Equal("Get", e.ActionMethod.Name);
                Assert.Empty(e.Parameters);
                var selector = Assert.Single(e.Selectors);
                Assert.Null(selector.AttributeRouteModel);
            },
                              e =>
            {
                // Get(int key)
                Assert.Equal("Get", e.ActionMethod.Name);
                Assert.Single(e.Parameters);
                Assert.Equal(2, e.Selectors.Count);
                Assert.Equal(new[] { "/odata/Customers({key})", "/odata/Customers/{key}" }, e.Selectors.Select(s => s.AttributeRouteModel.Template));
            });
        }
        public void OnProvidersExecuting_DoesNothing()
        {
            // Arrange
            ODataOptions options = new ODataOptions();

            options.AddModel("odata", _model);

            IODataControllerActionConvention[] conventions = new IODataControllerActionConvention[]
            {
                new EntitySetRoutingConvention()
            };

            ODataRoutingApplicationModelProvider provider = CreateProvider(options, conventions);

            Type controllerType = typeof(CustomersController);
            ApplicationModelProviderContext providerContext = CreateProviderContext(controllerType);

            // Act
            provider.OnProvidersExecuting(providerContext);

            // Assert
            var controller = Assert.Single(providerContext.Result.Controllers);

            Assert.Collection(controller.Actions,
                              e =>
            {
                // Get()
                Assert.Equal("Get", e.ActionMethod.Name);
                Assert.Empty(e.Parameters);
                Assert.Empty(e.Selectors);
            },
                              e =>
            {
                // Get(int key)
                Assert.Equal("Get", e.ActionMethod.Name);
                Assert.Single(e.Parameters);
                Assert.Empty(e.Selectors);
            });
        }