public async Task StartTransactionAsync_should_return_MongoTransaction_if_transactions_supported()
        {
            var session = NSubstitute.Substitute.For <IClientSessionHandle>();
            var client  = NSubstitute.Substitute.For <IMongoClient>();

            client.StartSession()
            .ReturnsForAnyArgs(session);

            var logger    = NSubstitute.Substitute.For <ILogger <MongoTransactionManager> >();
            var dbContext = NSubstitute.Substitute.For <IDbContext>();
            var sut       = new MongoTransactionManager(client, logger, dbContext);

            var result = await sut.StartTransactionAsync();

            result.Should().BeOfType <MongoTransaction>();
        }
        public async Task StartTransactionAsync_should_return_NullTransaction_if_transactions_not_supported()
        {
            var session = NSubstitute.Substitute.For <IClientSessionHandle>();

            session.When(s => s.StartTransaction(Arg.Any <TransactionOptions>()))
            .Throw <NotSupportedException>();
            var client = NSubstitute.Substitute.For <IMongoClient>();

            client.StartSession()
            .ReturnsForAnyArgs(session);

            var logger    = NSubstitute.Substitute.For <ILogger <MongoTransactionManager> >();
            var dbContext = NSubstitute.Substitute.For <IDbContext>();
            var sut       = new MongoTransactionManager(client, logger, dbContext);

            var result = await sut.StartTransactionAsync();

            result.Should().BeOfType <NullTransaction>();
        }