public async Task DeletedDocumentsAppearInChangeFeed(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.DeleteStream(streamId, (ulong)events.Length); // Assert var documents = await this.LoadChangeFeed(client, partition, token); Assert.AreEqual(1 + events.Length + 3, documents.Count); foreach (var document in documents) { Assert.IsTrue(document.Deleted); } }
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 }); } }