mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-21 18:08:25 +00:00
Test db migrations for all supported databases
This commit is contained in:
@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright 2020 Docspell Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package docspell.store.migrate
|
||||
import cats.effect._
|
||||
import cats.effect.unsafe.implicits._
|
||||
|
||||
object Docker {
|
||||
|
||||
def exists: IO[Boolean] =
|
||||
IO(Runtime.getRuntime.exec(Array("docker", "--version")).waitFor() == 0).attempt
|
||||
.map(_.fold(_ => false, identity))
|
||||
|
||||
def existsUnsafe: Boolean =
|
||||
exists.unsafeRunSync()
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2020 Docspell Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package docspell.store.migrate
|
||||
|
||||
import cats.effect.IO
|
||||
import cats.effect.unsafe.implicits._
|
||||
|
||||
import docspell.store.StoreFixture
|
||||
|
||||
import munit.FunSuite
|
||||
|
||||
class H2MigrateTest extends FunSuite {
|
||||
|
||||
test("h2 empty schema migration") {
|
||||
val jdbc = StoreFixture.memoryDB("h2test")
|
||||
val result = FlywayMigrate.run[IO](jdbc).unsafeRunSync()
|
||||
assert(result.migrationsExecuted > 0)
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright 2020 Docspell Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package docspell.store.migrate
|
||||
|
||||
import cats.effect._
|
||||
import cats.effect.unsafe.implicits._
|
||||
|
||||
import docspell.common.LenientUri
|
||||
import docspell.store.JdbcConfig
|
||||
|
||||
import com.dimafeng.testcontainers.MariaDBContainer
|
||||
import com.dimafeng.testcontainers.munit.TestContainerForAll
|
||||
import munit._
|
||||
import org.testcontainers.utility.DockerImageName
|
||||
|
||||
class MariaDbMigrateTest extends FunSuite with TestContainerForAll {
|
||||
override val containerDef: MariaDBContainer.Def =
|
||||
MariaDBContainer.Def(DockerImageName.parse("mariadb:10.5"))
|
||||
|
||||
test("mariadb empty schema migration") {
|
||||
assume(Docker.existsUnsafe, "docker doesn't exist!")
|
||||
withContainers { cnt =>
|
||||
val jdbc =
|
||||
JdbcConfig(LenientUri.unsafe(cnt.jdbcUrl), cnt.dbUsername, cnt.dbPassword)
|
||||
val result = FlywayMigrate.run[IO](jdbc).unsafeRunSync()
|
||||
assert(result.migrationsExecuted > 0)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright 2020 Docspell Contributors
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package docspell.store.migrate
|
||||
|
||||
import cats.effect._
|
||||
import cats.effect.unsafe.implicits._
|
||||
|
||||
import docspell.common.LenientUri
|
||||
import docspell.store.JdbcConfig
|
||||
|
||||
import com.dimafeng.testcontainers.PostgreSQLContainer
|
||||
import com.dimafeng.testcontainers.munit.TestContainerForAll
|
||||
import munit._
|
||||
import org.testcontainers.utility.DockerImageName
|
||||
|
||||
class PostgresqlMigrateTest extends FunSuite with TestContainerForAll {
|
||||
override val containerDef: PostgreSQLContainer.Def =
|
||||
PostgreSQLContainer.Def(DockerImageName.parse("postgres:13"))
|
||||
|
||||
test("postgres empty schema migration") {
|
||||
assume(Docker.existsUnsafe, "docker doesn't exist!")
|
||||
withContainers { cnt =>
|
||||
val jdbc =
|
||||
JdbcConfig(LenientUri.unsafe(cnt.jdbcUrl), cnt.username, cnt.password)
|
||||
val result = FlywayMigrate.run[IO](jdbc).unsafeRunSync()
|
||||
assert(result.migrationsExecuted > 0)
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user