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 Conventions_InsertsConvention() { // Arrange ODataOptions options = new ODataOptions(); Assert.Empty(options.Conventions); // Guard Mock <IODataControllerActionConvention> mock = new Mock <IODataControllerActionConvention>(); // Act options.Conventions.Add(mock.Object); // & Assert IODataControllerActionConvention convention = Assert.Single(options.Conventions); Assert.Same(mock.Object, convention); }
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); }); }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="model"></param> /// <param name="configureAction"></param> /// <returns></returns> //public ODataRoutingConventions AddModel(string name, IEdmModel model, Action<IContainerBuilder> configureAction) //{ //} /// <summary> /// /// </summary> /// <param name="convention"></param> /// <returns></returns> public ODataRoutingOptions AddConvention(IODataControllerActionConvention convention) { Conventions.Add(convention); return(null); }