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); }
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); }
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); }
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); }
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)); } }