mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-11-12 18:10:18 +00:00
add tests for cruds
This commit is contained in:
21
repos/exposed/src/jvmTest/kotlin/Database.kt
Normal file
21
repos/exposed/src/jvmTest/kotlin/Database.kt
Normal file
@@ -0,0 +1,21 @@
|
||||
package full
|
||||
|
||||
import com.benasher44.uuid.uuid4
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.transactions.transactionManager
|
||||
import org.sqlite.JDBC
|
||||
import java.io.File
|
||||
import java.sql.Connection
|
||||
|
||||
fun filename() = "${uuid4()}.local.sql".also {
|
||||
val file = File(it)
|
||||
file.createNewFile()
|
||||
file.deleteOnExit()
|
||||
}
|
||||
fun createDatabase(filename: String) = Database.connect(
|
||||
url = "jdbc:sqlite:$filename",
|
||||
driver = JDBC::class.qualifiedName!!
|
||||
).also {
|
||||
it.transactionManager.defaultIsolationLevel = Connection.TRANSACTION_SERIALIZABLE
|
||||
it.connector().close()
|
||||
}
|
||||
77
repos/exposed/src/jvmTest/kotlin/ExposedCRUDRepoTests.kt
Normal file
77
repos/exposed/src/jvmTest/kotlin/ExposedCRUDRepoTests.kt
Normal file
@@ -0,0 +1,77 @@
|
||||
package full
|
||||
|
||||
import CommonCRUDRepoTests
|
||||
import com.benasher44.uuid.uuid4
|
||||
import dev.inmo.micro_utils.repos.CRUDRepo
|
||||
import dev.inmo.micro_utils.repos.create
|
||||
import dev.inmo.micro_utils.repos.deleteById
|
||||
import dev.inmo.micro_utils.repos.exposed.AbstractExposedCRUDRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.initTable
|
||||
import korlibs.time.seconds
|
||||
import kotlinx.coroutines.test.TestResult
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.ISqlExpressionBuilder
|
||||
import org.jetbrains.exposed.sql.Op
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import org.jetbrains.exposed.sql.statements.InsertStatement
|
||||
import org.jetbrains.exposed.sql.statements.UpdateBuilder
|
||||
import java.io.File
|
||||
import javax.xml.crypto.Data
|
||||
import kotlin.test.*
|
||||
|
||||
class ExposedCRUDRepoTests : CommonCRUDRepoTests() {
|
||||
class Repo(override val database: Database) : AbstractExposedCRUDRepo<CommonCRUDRepoTests.Registered, String, CommonCRUDRepoTests.New>() {
|
||||
val idColumn = text("_id")
|
||||
val dataColumn = text("data")
|
||||
|
||||
override val primaryKey: PrimaryKey = PrimaryKey(idColumn)
|
||||
|
||||
override val ResultRow.asId: String
|
||||
get() = get(idColumn)
|
||||
override val ResultRow.asObject: CommonCRUDRepoTests.Registered
|
||||
get() = CommonCRUDRepoTests.Registered(
|
||||
asId,
|
||||
get(dataColumn)
|
||||
)
|
||||
override val selectById: ISqlExpressionBuilder.(String) -> Op<Boolean> = { idColumn.eq(it) }
|
||||
|
||||
init {
|
||||
initTable()
|
||||
}
|
||||
|
||||
override fun update(id: String?, value: CommonCRUDRepoTests.New, it: UpdateBuilder<Int>) {
|
||||
it[idColumn] = id ?: uuid4().toString()
|
||||
it[dataColumn] = value.data
|
||||
}
|
||||
|
||||
override fun InsertStatement<Number>.asObject(value: CommonCRUDRepoTests.New): CommonCRUDRepoTests.Registered {
|
||||
return CommonCRUDRepoTests.Registered(
|
||||
get(idColumn),
|
||||
get(dataColumn)
|
||||
)
|
||||
}
|
||||
}
|
||||
val filename = filename()
|
||||
var database: Database? = null
|
||||
override val repoCreator: suspend () -> CRUDRepo<Registered, String, New> = { Repo(database!!) }
|
||||
@BeforeTest
|
||||
fun beforeTest() {
|
||||
database = createDatabase(filename)
|
||||
}
|
||||
@AfterTest
|
||||
fun afterTest() {
|
||||
database = null
|
||||
File(filename).delete()
|
||||
}
|
||||
|
||||
@Test
|
||||
override fun creatingWorksProperly(): TestResult {
|
||||
return super.creatingWorksProperly()
|
||||
}
|
||||
|
||||
@Test
|
||||
override fun removingWorksProperly(): TestResult {
|
||||
return super.removingWorksProperly()
|
||||
}
|
||||
}
|
||||
67
repos/exposed/src/jvmTest/kotlin/ExposedKeyValueRepoTests.kt
Normal file
67
repos/exposed/src/jvmTest/kotlin/ExposedKeyValueRepoTests.kt
Normal file
@@ -0,0 +1,67 @@
|
||||
package full
|
||||
|
||||
import CommonKeyValueRepoTests
|
||||
import com.benasher44.uuid.uuid4
|
||||
import dev.inmo.micro_utils.repos.*
|
||||
import dev.inmo.micro_utils.repos.exposed.initTable
|
||||
import dev.inmo.micro_utils.repos.exposed.keyvalue.AbstractExposedKeyValueRepo
|
||||
import korlibs.time.seconds
|
||||
import kotlinx.coroutines.test.TestResult
|
||||
import kotlinx.coroutines.test.runTest
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.statements.InsertStatement
|
||||
import org.jetbrains.exposed.sql.statements.UpdateBuilder
|
||||
import java.io.File
|
||||
import kotlin.test.*
|
||||
|
||||
class ExposedKeyValueRepoTests : CommonKeyValueRepoTests() {
|
||||
class Repo(override val database: Database) : AbstractExposedKeyValueRepo<String, String>(database) {
|
||||
override val keyColumn = text("_id")
|
||||
val dataColumn = text("data")
|
||||
|
||||
override val primaryKey: PrimaryKey = PrimaryKey(keyColumn)
|
||||
|
||||
override val ResultRow.asKey: String
|
||||
get() = get(keyColumn)
|
||||
override val selectByValue: ISqlExpressionBuilder.(String) -> Op<Boolean> = { dataColumn.eq(it) }
|
||||
override val ResultRow.asObject: String
|
||||
get() = get(dataColumn)
|
||||
override val selectById: ISqlExpressionBuilder.(String) -> Op<Boolean> = { keyColumn.eq(it) }
|
||||
|
||||
init {
|
||||
initTable()
|
||||
}
|
||||
|
||||
override fun update(k: String, v: String, it: UpdateBuilder<Int>) {
|
||||
it[keyColumn] = k
|
||||
it[dataColumn] = v
|
||||
}
|
||||
|
||||
override fun insertKey(k: String, v: String, it: UpdateBuilder<Int>) {
|
||||
it[keyColumn] = k
|
||||
}
|
||||
}
|
||||
val filename = filename()
|
||||
var database: Database? = null
|
||||
@BeforeTest
|
||||
fun beforeTest() {
|
||||
database = createDatabase(filename)
|
||||
}
|
||||
@AfterTest
|
||||
fun afterTest() {
|
||||
database = null
|
||||
File(filename).delete()
|
||||
}
|
||||
|
||||
override val repoCreator: suspend () -> KeyValueRepo<String, String> = { Repo(database!!) }
|
||||
|
||||
@Test
|
||||
override fun creatingWorksProperly(): TestResult {
|
||||
return super.creatingWorksProperly()
|
||||
}
|
||||
|
||||
@Test
|
||||
override fun unsettingWorksProperly(): TestResult {
|
||||
return super.unsettingWorksProperly()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package full
|
||||
|
||||
import CommonKeyValuesRepoTests
|
||||
import dev.inmo.micro_utils.repos.*
|
||||
import dev.inmo.micro_utils.repos.exposed.initTable
|
||||
import dev.inmo.micro_utils.repos.exposed.onetomany.AbstractExposedKeyValuesRepo
|
||||
import kotlinx.coroutines.test.TestResult
|
||||
import org.jetbrains.exposed.sql.Database
|
||||
import org.jetbrains.exposed.sql.ISqlExpressionBuilder
|
||||
import org.jetbrains.exposed.sql.Op
|
||||
import org.jetbrains.exposed.sql.ResultRow
|
||||
import org.jetbrains.exposed.sql.statements.UpdateBuilder
|
||||
import java.io.File
|
||||
import kotlin.test.*
|
||||
|
||||
class ExposedKeyValuesRepoTests : CommonKeyValuesRepoTests() {
|
||||
override val testSequencesSize: Int = 100
|
||||
class Repo(override val database: Database) : AbstractExposedKeyValuesRepo<String, String>(database) {
|
||||
|
||||
override val keyColumn = text("_id")
|
||||
val dataColumn = text("data")
|
||||
|
||||
override val ResultRow.asKey: String
|
||||
get() = get(keyColumn)
|
||||
override val selectByValue: ISqlExpressionBuilder.(String) -> Op<Boolean> = { dataColumn.eq(it) }
|
||||
override val ResultRow.asObject: String
|
||||
get() = get(dataColumn)
|
||||
override val selectById: ISqlExpressionBuilder.(String) -> Op<Boolean> = { keyColumn.eq(it) }
|
||||
|
||||
init {
|
||||
initTable()
|
||||
}
|
||||
|
||||
override fun insert(k: String, v: String, it: UpdateBuilder<Int>) {
|
||||
it[keyColumn] = k
|
||||
it[dataColumn] = v
|
||||
}
|
||||
}
|
||||
val filename = filename()
|
||||
var database: Database? = null
|
||||
@BeforeTest
|
||||
fun beforeTest() {
|
||||
database = createDatabase(filename)
|
||||
}
|
||||
@AfterTest
|
||||
fun afterTest() {
|
||||
database = null
|
||||
File(filename).delete()
|
||||
}
|
||||
|
||||
override val repoCreator: suspend () -> KeyValuesRepo<String, String> = { Repo(database!!) }
|
||||
|
||||
@Test
|
||||
override fun creatingWorksProperly(): TestResult {
|
||||
super.creatingWorksProperly()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user