public async Task Should_clear_added_pending_operations_and_restore_ones_from_outbox_record() { var messageId = Guid.NewGuid().ToString(); var transportOperations = new[] { new TransportOperation( messageId: "42", properties: new DispatchProperties { { "Destination", "somewhere" } }, body: Array.Empty <byte>(), headers: new Dictionary <string, string>()), }; var fakeCosmosClient = new FakeCosmosClient(new FakeContainer { ReadItemStreamOutboxRecord = (id, key) => new OutboxRecord { Dispatched = false, Id = messageId, TransportOperations = transportOperations.Select(op => new StorageTransportOperation(op)) .ToArray() } }); var containerHolderHolderResolver = new ContainerHolderResolver(new FakeProvider(fakeCosmosClient), new ContainerInformation("fakeContainer", new PartitionKeyPath("")), "fakeDatabase"); var behavior = new OutboxBehavior(containerHolderHolderResolver, new JsonSerializer()); var testableContext = new TestableIncomingLogicalMessageContext(); testableContext.Extensions.Set(new PartitionKey("")); testableContext.Extensions.Set(new SetAsDispatchedHolder()); testableContext.Extensions.Set <IOutboxTransaction>(new CosmosOutboxTransaction(containerHolderHolderResolver, testableContext.Extensions)); var pendingTransportOperations = new PendingTransportOperations(); pendingTransportOperations.Add(new Transport.TransportOperation(new OutgoingMessage(null, null, null), null)); testableContext.Extensions.Set(pendingTransportOperations); await behavior.Invoke(testableContext, c => Task.CompletedTask); Assert.IsTrue(pendingTransportOperations.HasOperations, "Should have exactly one operation added found on the outbox record"); Assert.AreEqual("42", pendingTransportOperations.Operations.ElementAt(0).Message.MessageId, "Should have exactly one operation added found on the outbox record"); }