public void GenerateFunctionLink_GeneratesLinkWithCast_IfEntitySetTypeDoesnotMatchActionEntityType_ForSingleton()
        {
            // Arrange
            var request           = RequestFactory.CreateFromModel(_model.Model);
            var serializerContext = ODataSerializerContextFactory.Create(_model.Model, _model.Mary, request);
            var entityContext     = new ResourceContext(serializerContext, _model.SpecialCustomer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsSpecialCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Mary/NS.SpecialCustomer/NS.IsSpecialUpgraded()", link.AbsoluteUri);
        }
        public void GenerateFunctionLink_GeneratesLinkWithoutCast_IfEntitySetTypeMatchesActionEntityType()
        {
            // Arrange
            var request           = RequestFactory.CreateFromModel(_model.Model);
            var serializerContext = ODataSerializerContextFactory.Create(_model.Model, _model.Customers, request);
            var entityContext     = new ResourceContext(serializerContext, _model.Customer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Customers(42)/NS.IsUpgradedWithParam(city=@city)", link.AbsoluteUri);
        }
        public void GenerateFunctionLink_GeneratesLinkWithDownCast_IfElementTypeDerivesFromBindingParameterType_ForSingleton()
        {
            // Arrange
            IEdmSingleton me                = new EdmSingleton(_model.Container, "Me", _model.SpecialCustomer);
            var           request           = RequestFactory.CreateFromModel(_model.Model);
            var           serializerContext = ODataSerializerContextFactory.Create(_model.Model, me, request);
            var           entityContext     = new ResourceContext(serializerContext, _model.SpecialCustomer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Me/NS.Customer/NS.IsUpgradedWithParam(city=@city)", link.AbsoluteUri);
        }
        public void GenerateFunctionLink_GeneratesLinkWithCast_IfEntitySetTypeDoesnotMatchActionEntityType_ForSingleton()
        {
            // Arrange
            HttpRequestMessage request = GetODataRequest(_model.Model);
            var serializerContext      = new ODataSerializerContext {
                Model = _model.Model, NavigationSource = _model.Mary, Url = request.GetUrlHelper()
            };
            var entityContext = new ResourceContext(serializerContext, _model.SpecialCustomer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsSpecialCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Mary/NS.SpecialCustomer/NS.IsSpecialUpgraded()", link.AbsoluteUri);
        }
        public void GenerateFunctionLink_GeneratesLinkWithoutCast_IfEntitySetTypeMatchesActionEntityType()
        {
            // Arrange
            HttpRequestMessage request = GetODataRequest(_model.Model);
            var serializerContext      = new ODataSerializerContext {
                Model = _model.Model, NavigationSource = _model.Customers, Url = request.GetUrlHelper()
            };
            var entityContext = new ResourceContext(serializerContext, _model.Customer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Customers(42)/NS.IsUpgradedWithParam(city=@city)", link.AbsoluteUri);
        }
Exemplo n.º 6
0
        internal static Uri GenerateFunctionLink(this ResourceContext resourceContext, string bindingParameterType,
                                                 string functionName, IEnumerable <string> parameterNames)
        {
            Contract.Assert(resourceContext.EdmModel != null);

            if (resourceContext.EdmModel == null)
            {
                return(null);
            }

            IEdmModel         model         = resourceContext.EdmModel;
            IEdmTypeReference typeReference = model.FindDeclaredType(bindingParameterType).ToEdmTypeReference(true);
            IEdmOperation     operation     = model.FindDeclaredOperations(functionName).First();

            return(resourceContext.GenerateFunctionLink(typeReference, operation, parameterNames));
        }
Exemplo n.º 7
0
        public void GenerateFunctionLink_GeneratesLinkWithCast_IfEntitySetTypeDoesnotMatchActionEntityType()
        {
            // Arrange
            var          request           = RequestFactory.Create(_model);
            var          serializerContext = ODataSerializerContextFactory.Create(_model, _customers, request);
            var          entityContext     = new ResourceContext(serializerContext, _specialCustomer.AsReference(), new { ID = 42 });
            IEdmFunction isSpecialUpgraded = _model.SchemaElements.OfType <IEdmFunction>().First(c => c.Name == "IsSpecialUpgraded");

            Assert.NotNull(isSpecialUpgraded);

            // Act
            Uri link = entityContext.GenerateFunctionLink(isSpecialUpgraded);

            // Assert
            Assert.Equal("http://localhost/Customers(42)/NS.SpecialCustomer/NS.IsSpecialUpgraded()", link.AbsoluteUri);
        }
        public void GenerateFunctionLink_GeneratesLinkWithDownCast_IfElementTypeDerivesFromBindingParameterType_ForSingleton()
        {
            // Arrange
            IEdmSingleton      me      = new EdmSingleton(_model.Container, "Me", _model.SpecialCustomer);
            HttpRequestMessage request = GetODataRequest(_model.Model);
            var serializerContext      = new ODataSerializerContext {
                Model = _model.Model, NavigationSource = me, Url = request.GetUrlHelper()
            };
            var entityContext = new ResourceContext(serializerContext, _model.SpecialCustomer.AsReference(), new { ID = 42 });

            // Act
            Uri link = entityContext.GenerateFunctionLink(_model.IsCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Me/NS.Customer/NS.IsUpgradedWithParam(city=@city)", link.AbsoluteUri);
        }
Exemplo n.º 9
0
        public void GenerateFunctionLink_GeneratesLinkWithDownCast_IfElementTypeDerivesFromBindingParameterType_ForSingleton()
        {
            // Arrange
            IEdmSingleton me                 = new EdmSingleton(_model.EntityContainer, "Me", _specialCustomer);
            HttpRequest   request            = RequestFactory.Create(_model);
            var           serializerContext  = ODataSerializerContextFactory.Create(_model, me, request);
            var           entityContext      = new ResourceContext(serializerContext, _specialCustomer.AsReference(), new { ID = 42 });
            IEdmFunction  isCustomerUpgraded = _model.SchemaElements.OfType <IEdmFunction>().First(c => c.Name == "IsUpgradedWithParam");

            Assert.NotNull(isCustomerUpgraded);

            // Act
            Uri link = entityContext.GenerateFunctionLink(isCustomerUpgraded);

            // Assert
            Assert.Equal("http://localhost/Me/NS.Customer/NS.IsUpgradedWithParam(city=@city)", link.AbsoluteUri);
        }