private async Task ActAndAssert(AuditRecord audit)
        {
            var repo = new SqlServerAuditRepository();

            using (var connection = _databaseFixture.ConnectionFactory.CreateDatabaseConnection())
            {
                connection.Open();
                using (var transaction = connection.BeginTransaction())
                {
                    var createdAudit = await repo.CreateAudit(audit, transaction).ConfigureAwait(false);

                    var auditResult = await connection.QuerySingleOrDefaultAsync <AuditRecord>(
                        $"SELECT AuditId, Action, ActorName, AuditDate, EntityUri, MemberKey, State, RedactedState FROM {Tables.Audit} WHERE AuditId = @AuditId",
                        new { createdAudit.AuditId },
                        transaction
                        ).ConfigureAwait(false);

                    Assert.NotNull(auditResult);
                    Assert.Equal(audit.Action, auditResult.Action);
                    Assert.Equal(audit.ActorName, auditResult.ActorName);
                    Assert.Equal(audit.AuditDate, auditResult.AuditDate);
                    Assert.Equal(audit.EntityUri, auditResult.EntityUri);
                    Assert.Equal(audit.MemberKey, auditResult.MemberKey);
                    Assert.Equal(audit.State, auditResult.State);
                    Assert.Equal(audit.RedactedState, auditResult.RedactedState);

                    transaction.Rollback();
                }
            }
        }
        public async Task Create_audit_throws_ArgumentNullException_if_transaction_is_null()
        {
            var repo = new SqlServerAuditRepository();

            await Assert.ThrowsAsync <ArgumentNullException>(async() => await repo.CreateAudit(new AuditRecord(), null).ConfigureAwait(false)).ConfigureAwait(false);
        }