예제 #1
0
        public async Task watching_with_filter_builders_CSD()
        {
            var guid = Guid.NewGuid().ToString();

            var watcher    = DB.Watcher <Flower>("test-with-filter-builders-csd");
            var allFlowers = new List <Flower>();

            watcher.Start(
                EventType.Created | EventType.Updated,
                b => b.Eq(d => d.FullDocument.Name, guid));

            await Task.Delay(500);

            watcher.OnChangesCSDAsync += async csDocs =>
            {
                allFlowers.AddRange(csDocs.Select(x => x.FullDocument));
                await Task.CompletedTask;
            };

            await new[] {
                new Flower {
                    Name = guid
                },
                new Flower {
                    Name = "exclude me"
                },
                new Flower {
                    Name = guid
                },
                new Flower {
                    Name = guid
                },
            }.SaveAsync();

            var flower = new Flower {
                Name = guid
            };
            await flower.SaveAsync();

            await flower.DeleteAsync();

            await Task.Delay(500);

            Assert.AreEqual(4, allFlowers.Count);
        }
예제 #2
0
        public async Task watching_with_projection_works()
        {
            var watcher    = DB.Watcher <Flower>("test-with-projection");
            var allFlowers = new List <Flower>();

            watcher.Start(
                EventType.Created | EventType.Updated,
                f => new Flower {
                Color = f.Color
            },
                f => f.FullDocument.Color == "red");

            await Task.Delay(500);

            watcher.OnChangesAsync += async flowers =>
            {
                allFlowers.AddRange(flowers);
                await Task.CompletedTask;
            };

            await new[] {
                new Flower {
                    Name = "test", Color = "red"
                },
                new Flower {
                    Name = "test", Color = "red"
                },
                new Flower {
                    Name = "test", Color = "red"
                }
            }.SaveAsync();

            var flower = new Flower {
                Name = "test"
            };
            await flower.SaveAsync();

            await flower.DeleteAsync();

            await Task.Delay(500);

            Assert.AreEqual(3, allFlowers.Count);
            Assert.IsTrue(allFlowers[0].Name == null && allFlowers[0].Color == "red");
        }
예제 #3
0
        public async Task watching_with_filter_builders()
        {
            var guid = Guid.NewGuid().ToString();

            var watcher    = DB.Watcher <Flower>("test-with-filter-builders");
            var allFlowers = new List <Flower>();

            watcher.Start(
                EventType.Created | EventType.Updated,
                b => b.Eq(d => d.FullDocument.Name, guid));

            await Task.Delay(500);

            watcher.OnChanges +=
                flowers => allFlowers.AddRange(flowers);

            await new[] {
                new Flower {
                    Name = guid
                },
                new Flower {
                    Name = guid
                },
                new Flower {
                    Name = guid
                }
            }.SaveAsync();

            var flower = new Flower {
                Name = guid
            };
            await flower.SaveAsync();

            await flower.DeleteAsync();

            await Task.Delay(500);

            Assert.AreEqual(4, allFlowers.Count);
        }
예제 #4
0
        public async Task watching_works()
        {
            var watcher    = DB.Watcher <Flower>("test");
            var allFlowers = new List <Flower>();

            watcher.Start(
                EventType.Created | EventType.Updated,
                f => f.FullDocument.Name == "test");

            await Task.Delay(500);

            watcher.OnChanges +=
                flowers => allFlowers.AddRange(flowers);

            await new[] {
                new Flower {
                    Name = "test"
                },
                new Flower {
                    Name = "test"
                },
                new Flower {
                    Name = "test"
                }
            }.SaveAsync();

            var flower = new Flower {
                Name = "test"
            };
            await flower.SaveAsync();

            await flower.DeleteAsync();

            await Task.Delay(500);

            Assert.AreEqual(4, allFlowers.Count);
        }