public void BackfillIntoExistingBucket() { var connection = TestConfiguration.GetConnection(); var context = new MongoDbContext(connection); var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(context, new BucketSetOptions { BucketSize = 2, EntityTimeProperty = "Date" }); dbSet.Add(new EntityGroup { Name = "Group1" }, new SubEntityClass { Label = "Entry1", Date = new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc) }); context.SaveChanges(); Assert.IsTrue(dbSet.Any(b => b.Group.Name == "Group1" && b.ItemCount == 1)); dbSet.AddRange(new EntityGroup { Name = "Group1" }, new[] { new SubEntityClass { Label = "Entry2", Date = new DateTime(2020, 1, 2, 0, 0, 0, DateTimeKind.Utc) }, new SubEntityClass { Label = "Entry3", Date = new DateTime(2020, 1, 3, 0, 0, 0, DateTimeKind.Utc) } }); context.SaveChanges(); var buckets = dbSet.Where(b => b.Group.Name == "Group1").ToArray(); Assert.AreEqual(2, buckets.Count()); var backfilledBucket = buckets[0]; Assert.AreEqual(new DateTime(2020, 1, 1, 0, 0, 0, DateTimeKind.Utc), backfilledBucket.Min); Assert.AreEqual(new DateTime(2020, 1, 2, 0, 0, 0, DateTimeKind.Utc), backfilledBucket.Max); Assert.AreEqual(2, backfilledBucket.ItemCount); Assert.AreEqual("Entry1", backfilledBucket.Items[0].Label); Assert.AreEqual("Entry2", backfilledBucket.Items[1].Label); var additionalBucket = buckets[1]; Assert.AreEqual(new DateTime(2020, 1, 3, 0, 0, 0, DateTimeKind.Utc), additionalBucket.Min); Assert.AreEqual(new DateTime(2020, 1, 3, 0, 0, 0, DateTimeKind.Utc), additionalBucket.Max); Assert.AreEqual(1, additionalBucket.ItemCount); Assert.AreEqual("Entry3", additionalBucket.Items[0].Label); }
public void InvalidAddArguments() { var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(new BucketSetOptions { BucketSize = 2 }); Assert.ThrowsException <ArgumentNullException>(() => dbSet.Add(null, new SubEntityClass())); Assert.ThrowsException <ArgumentNullException>(() => dbSet.AddRange(null, null)); Assert.ThrowsException <ArgumentNullException>(() => dbSet.AddRange(new EntityGroup(), null)); }
public void InvalidAddArguments() { var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(new Mock <IMongoDbContext>().Object, new BucketSetOptions { BucketSize = 2, EntityTimeProperty = "Date" }); Assert.ThrowsException <ArgumentNullException>(() => dbSet.Add(null, new SubEntityClass())); Assert.ThrowsException <ArgumentNullException>(() => dbSet.AddRange(null, null)); Assert.ThrowsException <ArgumentNullException>(() => dbSet.AddRange(new EntityGroup(), null)); }
public void IterateQueryable() { var connection = TestConfiguration.GetConnection(); var context = new MongoDbContext(connection); var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(context, new BucketSetOptions { BucketSize = 2, EntityTimeProperty = "Date" }); dbSet.Add(new EntityGroup { Name = "Group1" }, new SubEntityClass { Label = "Entry1" }); dbSet.Add(new EntityGroup { Name = "Group2" }, new SubEntityClass { Label = "Entry1" }); dbSet.Add(new EntityGroup { Name = "Group3" }, new SubEntityClass { Label = "Entry1" }); foreach (var bucket in dbSet) { Assert.AreEqual("Entry", bucket.Items[0].Label); } }
public void BackfillIntoExistingBucket() { var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(new BucketSetOptions { BucketSize = 2 }); dbSet.SetConnection(TestConfiguration.GetConnection()); dbSet.Add(new EntityGroup { Name = "Group1" }, new SubEntityClass { Label = "Entry1" }); dbSet.SaveChanges(); Assert.IsTrue(dbSet.Any(b => b.Group.Name == "Group1" && b.ItemCount == 1)); dbSet.AddRange(new EntityGroup { Name = "Group1" }, new[] { new SubEntityClass { Label = "Entry2" }, new SubEntityClass { Label = "Entry3" } }); dbSet.SaveChanges(); var buckets = dbSet.Where(b => b.Group.Name == "Group1").ToArray(); Assert.AreEqual(2, buckets.Count()); var backfilledBucket = buckets.FirstOrDefault(); Assert.AreEqual(2, backfilledBucket.ItemCount); Assert.AreEqual("Entry1", backfilledBucket.Items[0].Label); Assert.AreEqual("Entry2", backfilledBucket.Items[1].Label); var additionalBucket = buckets.LastOrDefault(); Assert.AreEqual(1, additionalBucket.ItemCount); Assert.AreEqual("Entry3", additionalBucket.Items[0].Label); }
public void SuccessfullyInsertAndQueryBackEntityBuckets() { var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(new BucketSetOptions { BucketSize = 100 }); dbSet.SetConnection(TestConfiguration.GetConnection()); dbSet.Add(new EntityGroup { Name = "Group1" }, new SubEntityClass { Label = "Entry1" }); Assert.IsFalse(dbSet.Any(b => b.Group.Name == "Group1")); dbSet.SaveChanges(); Assert.IsTrue(dbSet.Any(b => b.Group.Name == "Group1" && b.Items.Any(i => i.Label == "Entry1"))); }
public void SuccessfullyInsertAndQueryBackEntityBuckets() { var connection = TestConfiguration.GetConnection(); var context = new MongoDbContext(connection); var dbSet = new MongoDbBucketSet <EntityGroup, SubEntityClass>(context, new BucketSetOptions { BucketSize = 100, EntityTimeProperty = "Date" }); dbSet.Add(new EntityGroup { Name = "Group1" }, new SubEntityClass { Label = "Entry1", Date = new DateTime(2020, 1, 1) }); Assert.IsFalse(dbSet.Any(b => b.Group.Name == "Group1")); context.SaveChanges(); Assert.IsTrue(dbSet.Any(b => b.Group.Name == "Group1" && b.Items.Any(i => i.Label == "Entry1" && i.Date == new DateTime(2020, 1, 1)))); }