Jonathan Mew
05/15/2019, 10:55 AMJonathan Mew
05/15/2019, 10:55 AMJonathan Mew
05/15/2019, 10:56 AMJonathan Mew
05/15/2019, 10:57 AMspand
05/15/2019, 11:02 AMconnnect(manager = yourOwnManager)
spand
05/15/2019, 11:03 AMspand
05/15/2019, 11:04 AMJonathan Mew
05/15/2019, 11:07 AMJonathan Mew
05/15/2019, 11:08 AMTransactionManager
means implementing newTransaction()
, means implementing a TransactionImpl
, means incorporating a override val connection
😕 and Connection
is heftyJonathan Mew
05/15/2019, 11:16 AMoverride val connection: Connection get() {throw ...}
Jonathan Mew
05/15/2019, 11:17 AMimport org.jetbrains.exposed.sql.Database
import org.jetbrains.exposed.sql.Database.Companion.connect
import org.jetbrains.exposed.sql.Transaction
import org.jetbrains.exposed.sql.transactions.TransactionInterface
import org.jetbrains.exposed.sql.transactions.TransactionManager
import java.sql.Connection
fun setupTestTransactionManager() =
connect(
getNewConnection = { throw IllegalStateException("Should never need an actual connection for tests") },
manager = { db -> DoNothingTransactionManager(db) })
class DoNothingTransactionManager(db: Database): TransactionManager {
private val placeholderTransaction: Transaction = Transaction(DoNothingTransactionImpl(db))
override var defaultIsolationLevel: Int = Connection.TRANSACTION_SERIALIZABLE
override fun currentOrNull(): Transaction? = placeholderTransaction
override fun newTransaction(isolation: Int): Transaction = placeholderTransaction
}
class DoNothingTransactionImpl(override val db: Database): TransactionInterface {
override val connection: Connection
get() { throw IllegalStateException("Should never need an actual connection for tests") }
override val outerTransaction: Transaction? = null
override fun close() {}
override fun commit() {}
override fun rollback() {}
}
Jonathan Mew
05/15/2019, 11:17 AMspand
05/15/2019, 11:17 AMJonathan Mew
05/15/2019, 11:18 AMJonathan Mew
05/15/2019, 11:19 AMspand
05/15/2019, 11:21 AM