Beispiel #1
0
        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 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);
        }