public async Task <bool> WriteNewDataWithAuditCommitFails()
        {
            MockDataStream
            .Setup(x => x.Commit <BasicEntity>(ExpectedAuditedEntity.Id))
            .ReturnsAsync(false);
            MockDataStream
            .Setup(x => x.Exists <AuditedEntity>(ExpectedAuditedEntity.Id))
            .ReturnsAsync(false);
            var result = await DataManager.Write(ExpectedAuditedEntity);

            MockAudit
            .Verify(x => x.DiscardEvents(ExpectedAuditedEntity));
            MockDataStream
            .Verify(x => x.Rollback(It.IsAny <int>(), It.IsAny <DataEntity>()), Times.Never);
            MockIndexer
            .Verify(x => x.Index(It.IsAny <DataEntity>()), Times.Never);
            MockAudit
            .Verify(x => x.UpdateEvent(It.IsAny <DataEntity>(), It.IsAny <DataEntity>()), Times.Never);
            MockAudit
            .Verify(x => x.CommitEvents(It.IsAny <DataEntity>()), Times.Never);
            return(result);
        }
        public async Task <bool> RestoreDataWithAuditingWhenDoesNotExistButCommitEventFails()
        {
            MockDataStream
            .SetupSequence(x => x.Exists <AuditedEntity>(ExpectedAuditedEntity.Id))
            .ReturnsAsync(false)
            .ReturnsAsync(true);
            MockDataStream
            .Setup(x => x.Undelete <AuditedEntity>(ExpectedAuditedEntity.Id))
            .ReturnsAsync(true);
            MockAudit
            .Setup(x => x.UndeleteEvent(ExpectedAuditedEntity))
            .ReturnsAsync(true);
            MockAudit
            .Setup(x => x.CommitEvents(ExpectedAuditedEntity))
            .ReturnsAsync(false);
            var result = await DataManager.Restore <AuditedEntity>(ExpectedAuditedEntity.Id);

            MockAudit
            .Verify(x => x.DiscardEvents(ExpectedAuditedEntity), Times.Once);
            MockDataStream
            .Verify(x => x.Delete <AuditedEntity>(ExpectedAuditedEntity.Id), Times.Once);
            return(result);
        }