Exemplo n.º 1
0
        public void OdataObjectCollectionJsonNetSerializerTests()
        {
            // Arrange
            var user1 = new User {
                Id = 1, Name = "User1"
            };
            var user2 = new User {
                Id = 2, Name = "User2"
            };
            var user3 = new User {
                Id = 3, Name = "User3"
            };
            var odataObject1 = user1.AsOdata <User, int>();
            var odataObject2 = user2.AsOdata <User, int>();
            var odataObject3 = user3.AsOdata <User, int>();
            var expected     = "{\"Count\":3,\"Entities\":[{\"Id\":1,\"Object\":{\"Id\":1,\"Name\":\"User1\",\"UserTypeId\":0},\"Uri\":null},{\"Id\":2,\"Object\":{\"Id\":2,\"Name\":\"User2\",\"UserTypeId\":0},\"Uri\":null},{\"Id\":3,\"Object\":{\"Id\":3,\"Name\":\"User3\",\"UserTypeId\":0},\"Uri\":null}],\"Entity\":\"User\",\"TotalCount\":3}";
            var collection   = new OdataObjectCollection <User, int>();

            collection.AddRange(new[] { odataObject1, odataObject2, odataObject3 });
            var settings = new JsonSerializerSettings()
            {
                ContractResolver = new OrderedContractResolver()
            };

            // Act
            var json = JsonConvert.SerializeObject(collection, settings);

            // Assert
            Assert.AreEqual(expected, json);
        }
Exemplo n.º 2
0
        public void OdataObjectCollectionDataContractSerializerTests()
        {
            // Arrange
            var user1 = new User {
                Id = 1, Name = "User1"
            };
            var user2 = new User {
                Id = 2, Name = "User2"
            };
            var user3 = new User {
                Id = 3, Name = "User3"
            };
            var odataObject1 = user1.AsOdata <User, int>();
            var odataObject2 = user2.AsOdata <User, int>();
            var odataObject3 = user3.AsOdata <User, int>();
            var collection   = new OdataObjectCollection <User, int>();

            collection.AddRange(new[] { odataObject1, odataObject2, odataObject3 });
            var expected   = "{\"Count\":3,\"Entity\":\"User\",\"RelatedEntityCollection\":[],\"TotalCount\":3,\"Entities\":[{\"Uri\":null,\"Id\":1,\"Object\":{\"Id\":1,\"Name\":\"User1\",\"UserTypeId\":0},\"RelatedEntityCollection\":[],\"PropertyUris\":[]},{\"Uri\":null,\"Id\":2,\"Object\":{\"Id\":2,\"Name\":\"User2\",\"UserTypeId\":0},\"RelatedEntityCollection\":[],\"PropertyUris\":[]},{\"Uri\":null,\"Id\":3,\"Object\":{\"Id\":3,\"Name\":\"User3\",\"UserTypeId\":0},\"RelatedEntityCollection\":[],\"PropertyUris\":[]}]}";
            var serializer = new DataContractJsonSerializer(typeof(OdataObjectCollection <User, int>), new[] { typeof(OdataObject <User, int>) });

            // Act
            var json = Serialize(collection, serializer);

            // Assert
            Assert.AreEqual(expected, json);
        }
        public async Task RelatedEntityFilterConverter_Convert_RelatedEntity_Works_Array()
        {
            // Arrange
            var        relatedEntityFilterConverter = CreateRelatedEntityFilterConverter <A>();
            var        bName  = "My B 27";
            Filter <A> filter = new Filter <A> {
                Left = "B.Name", Method = "in", Right = new ArrayFilter <A, string> {
                    Array = new[] { bName }
                }
            };

            _CsdlSchema.Entities.Add(typeof(A).Name, typeof(A).ToCsdl());
            _CsdlSchema.Entities.Add(typeof(B).Name, typeof(B).ToCsdl());
            var expectedFilter = $"$Filter=Name in ('{bName}')";
            var b27            = new B {
                Id = 27, Name = bName
            };
            var odataObjectB27 = new OdataObject();
            var b27Json        = JsonConvert.SerializeObject(b27);

            odataObjectB27.Object = new JRaw(b27Json);
            var odataBCollection = new OdataObjectCollection {
                odataObjectB27
            };

            _MockRelatedEntityFilterDataProvider.Setup(m => m.ProvideAsync(nameof(B), expectedFilter))
            .ReturnsAsync(odataBCollection);

            // Act
            var result = await relatedEntityFilterConverter.ConvertAsync(filter);

            // Assert
            Assert.AreEqual("BId in (27)", result.ToString());
            _MockRepository.VerifyAll();
        }
        public async Task RelatedEntityFilterConverter_Convert_RelatedEntity_PropertyOtherThandId_Works()
        {
            // Arrange
            var            relatedEntityFilterConverter = CreateRelatedEntityFilterConverter <User2>();
            Filter <User2> filter = new Filter <User2> {
                Left = "UserType.Id", Method = "eq", Right = "3"
            };

            _CsdlSchema.Entities.Add(typeof(User2).Name, typeof(User2).ToCsdl());
            _CsdlSchema.Entities.Add(typeof(UserType).Name, typeof(UserType).ToCsdl());
            var expectedUrlParams = $"$Filter=Id eq 3";
            var userType3         = new B {
                Id = 27, Name = "Name 3"
            };
            var odataObjectUserType3 = new OdataObject();
            var userType3Json        = JsonConvert.SerializeObject(userType3);

            odataObjectUserType3.Object = new JRaw(userType3Json);
            var odataBCollection = new OdataObjectCollection {
                odataObjectUserType3
            };

            _MockRelatedEntityFilterDataProvider.Setup(m => m.ProvideAsync(nameof(UserType), expectedUrlParams))
            .ReturnsAsync(odataBCollection);

            // Act
            var result = await relatedEntityFilterConverter.ConvertAsync(filter);

            // Assert
            Assert.AreEqual("UserTypeName in ('Name 3')", result.ToString());
            _MockRepository.VerifyAll();
        }
        public void TotalCountReturnsCountIfLessThenCount()
        {
            // Arrange
            var collection = new OdataObjectCollection {
                new OdataObject()
            };

            // Act and Assert
            Assert.AreEqual(1, collection.TotalCount);
        }
Exemplo n.º 6
0
        public void ImplicitConversionNullTest()
        {
            // Arrange
            OdataObjectCollection obj = null;

            // Act
            RelatedEntityCollection c = obj;

            // Assert
            Assert.IsNull(c);
        }
        public void TotalCountReturnsTotalCountIfGreaterThenCount()
        {
            // Arrange
            var collection = new OdataObjectCollection {
                TotalCount = 10
            };

            collection.Add(new OdataObject());

            // Act and Assert
            Assert.AreEqual(10, collection.TotalCount);
        }
Exemplo n.º 8
0
        public void ImplicitConversionDefaultNewTest()
        {
            // Arrange
            var obj = new OdataObjectCollection();

            // Act
            RelatedEntityCollection c = obj;

            // Assert
            Assert.IsNotNull(c);
            Assert.IsNull(c.Entity);
            Assert.AreEqual(0, c.Count);
        }
Exemplo n.º 9
0
 public async Task <OdataObjectCollection <T, TId> > GetWithCache(IEnumerable <TId> ids, Func <string, HttpContent, Task <HttpResponseMessage> > methodIfNotCached, string url)
 {
     if (UseCache)
     {
         if (Cache.Keys.Except(ids).Any())
         {
             return(await UpdateCache(ids, methodIfNotCached, url));
         }
         var collection = new OdataObjectCollection <T, TId>();
         collection.AddRange(ids.Where(Cache.ContainsKey).Select(id => Cache[id]));
         return(collection);
     }
     else
     {
         return(await UpdateCache(ids, methodIfNotCached, url));
     }
 }