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)); }
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); }); }