public void GetPathByAddressReturnsCorrectODataPathWithPathBase(string pathBase)
        {
            // Arrange
            int address = 1;
            IPerRouteContainer container = new PerRouteContainer();

            container.AddRoute("odata", "ms/{data}");

            IServiceProvider serviceProvider = new ServiceCollection()
                                               .AddSingleton <IPerRouteContainer>(container)
                                               .BuildServiceProvider();

            HttpContext httpContext = new DefaultHttpContext
            {
                RequestServices = serviceProvider
            };

            httpContext.Request.PathBase = pathBase;
            httpContext.ODataFeature().RouteName = "odata";
            RouteValueDictionary values          = new RouteValueDictionary();

            values["odataPath"] = "";

            RouteValueDictionary ambientValues = new RouteValueDictionary();

            ambientValues["data"] = 2;

            // Act
            Mock <LinkGenerator>       mock          = new Mock <LinkGenerator>();
            ODataEndpointLinkGenerator linkGenerator = new ODataEndpointLinkGenerator(mock.Object);
            string path = linkGenerator.GetPathByAddress(httpContext, address, values, ambientValues);

            // Assert
            Assert.Equal(pathBase + "/ms/2", path);
        }
        public void BindPrefixTemplateWithGuidParameterWorksAsExpected(string prefix, string expect)
        {
            // Arrange
            RouteValueDictionary values = new RouteValueDictionary
                                          (
                new
            {
                tid = "003890b9972e4092aef80e882f1e0999"
            }
                                          );

            // Act
            string actual = ODataEndpointLinkGenerator.BindPrefixTemplate(prefix, values, null);

            // Assert
            Assert.Equal(expect, actual);
        }
        public void BindPrefixTemplateWorksAsExpected(string prefix, string expect)
        {
            // Arrange
            RouteValueDictionary values = new RouteValueDictionary
                                          (
                new
            {
                abc = "abcValue",
                xyz = "xyzValue"
            }
                                          );

            // Act
            string actual = ODataEndpointLinkGenerator.BindPrefixTemplate(prefix, values, null);

            // Assert
            Assert.Equal(expect, actual);
        }
        public void GetUriByAddressCallInnerLinkGeneratorGetUriByAddress()
        {
            // Arrange
            int address = 1;
            RouteValueDictionary values      = new RouteValueDictionary();
            FragmentString       fragment    = new FragmentString();
            Mock <LinkGenerator> mock        = new Mock <LinkGenerator>();
            HttpContext          httpContext = new DefaultHttpContext();

            mock.Setup(g => g.GetUriByAddress(httpContext, address, values, null, null, null, null, fragment, null)).Verifiable();

            // Act
            ODataEndpointLinkGenerator linkGenerator = new ODataEndpointLinkGenerator(mock.Object);

            linkGenerator.GetUriByAddress(httpContext, address, values, null, null, null, null, fragment, null);

            // Assert
            mock.Verify();
        }
        public void GetPathByAddressCallInnerLinkGeneratorGetPathByAddress()
        {
            // Arrange
            int address = 1;
            RouteValueDictionary values   = new RouteValueDictionary();
            PathString           pathBase = new PathString();
            FragmentString       fragment = new FragmentString();
            LinkOptions          options  = null;
            Mock <LinkGenerator> mock     = new Mock <LinkGenerator>();

            mock.Setup(g => g.GetPathByAddress(address, values, pathBase, fragment, options)).Verifiable();

            // Act
            ODataEndpointLinkGenerator linkGenerator = new ODataEndpointLinkGenerator(mock.Object);

            linkGenerator.GetPathByAddress(address, values, pathBase, fragment, options);

            // Assert
            mock.Verify();
        }