예제 #1
0
        public void ReadDeltaLink_Returns_DeltaLink(bool typed)
        {
            // Arrange
            Mock <IODataDeserializerProvider> deserializerProvider = new Mock <IODataDeserializerProvider>();
            ODataDeltaResourceSetDeserializer deserializer         = new ODataDeltaResourceSetDeserializer(deserializerProvider.Object);

            Uri                   source  = new Uri("Customers(8)", UriKind.RelativeOrAbsolute);
            Uri                   target  = new Uri("Orders(10645)", UriKind.RelativeOrAbsolute);
            ODataDeltaLink        link    = new ODataDeltaLink(source, target, "Orders");
            ODataDeltaLinkWrapper wrapper = new ODataDeltaLinkWrapper(link);

            IEdmModel      model    = GetEdmModel();
            IEdmEntityType customer = model.SchemaElements.OfType <IEdmEntityType>().First(c => c.Name == "Customer");
            IEdmStructuredTypeReference elementType = new EdmEntityTypeReference(customer, true);

            ODataDeserializerContext context = new ODataDeserializerContext
            {
                Model        = model,
                ResourceType = typeof(DeltaSet <>)
            };

            if (typed)
            {
                context.ResourceType = typeof(DeltaSet <>);
            }
            else
            {
                context.ResourceType = typeof(EdmChangedObjectCollection);
            }

            // Act
            object deltaLinkObject = deserializer.ReadDeltaLink(wrapper, elementType, context);

            // Assert
            if (typed)
            {
                DeltaLink <Customer> deltaLink = Assert.IsType <DeltaLink <Customer> >(deltaLinkObject);
                Assert.Equal(source, deltaLink.Source);
                Assert.Equal(target, deltaLink.Target);
                Assert.Equal("Orders", deltaLink.Relationship);
            }
            else
            {
                EdmDeltaLink deltaLink = Assert.IsType <EdmDeltaLink>(deltaLinkObject);
                Assert.Equal(source, deltaLink.Source);
                Assert.Equal(target, deltaLink.Target);
                Assert.Equal("Orders", deltaLink.Relationship);
            }
        }
예제 #2
0
        public void CtorDeltaLinkOfT_Sets_PropertyValue()
        {
            // Arrange & Act
            DeltaLink <A> link = new DeltaLink <A>(typeof(B))
            {
                Source       = new Uri("http://source"),
                Target       = new Uri("http://target"),
                Relationship = "any"
            };

            // Assert
            Assert.Equal("http://source", link.Source.OriginalString);
            Assert.Equal("http://target", link.Target.OriginalString);
            Assert.Equal("any", link.Relationship);
            Assert.Equal(DeltaItemKind.DeltaLink, link.Kind);
            Assert.Equal(typeof(B), link.StructuredType);
            Assert.Equal(typeof(A), link.ExpectedClrType);
        }