Esempio n. 1
0
        public async Task DeletedSnapshotAppearsInChangeFeed(bool partitioned)
        {
            // Arrange
            var partition = partitioned ? Guid.NewGuid().ToString() : null;

            var client = await CosmosSetup.GetClient(this.Database, this.Collection, partitioned : partitioned);

            var store = new EventStore(client, this.Database, this.Collection, partition);

            var streamId = Guid.NewGuid().ToString();
            var events   = TestSetup.GetEvents(10);

            await store.WriteToStream(streamId, events);

            await store.CreateSnapshot(streamId, 2, 2);

            await store.CreateSnapshot(streamId, 4, 4);

            await store.CreateSnapshot(streamId, 8, 8);

            // Act
            var token = await this.GetCurrentChangeFeedToken(client, partition);

            await store.DeleteSnapshots(streamId, 8);

            // Assert
            var documents = await this.LoadChangeFeed(client, partition, token);

            Assert.AreEqual(2, documents.Count);
            var snapshots = documents.OfType <SnapshotDocument>().ToList();

            Assert.AreEqual(2, snapshots.Count);

            foreach (var snapshot in snapshots)
            {
                Assert.IsTrue(snapshot.Deleted);
                Assert.Contains(snapshot.Version, new[] { 2, 4 });
            }
        }