From 8d7dbb9f1940a8b304b268bf33eb8c85248c602b Mon Sep 17 00:00:00 2001 From: MarianKijewski Date: Thu, 7 May 2026 18:26:44 +0200 Subject: [PATCH 1/4] Test database connection failure --- build.gradle.kts | 1 + .../com/wire/apps/polls/setup/SetupTest.kt | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt diff --git a/build.gradle.kts b/build.gradle.kts index a2187bb..2eccbd3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -63,6 +63,7 @@ dependencies { testImplementation("io.mockk", "mockk", "1.13.16") testImplementation("org.jetbrains.kotlinx", "kotlinx-coroutines-test", "1.7.3") testImplementation("org.junit.jupiter", "junit-jupiter-params", "5.10.0") + testImplementation("io.ktor", "ktor-server-test-host", ktorVersion) } ktlint { diff --git a/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt new file mode 100644 index 0000000..ae613f0 --- /dev/null +++ b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt @@ -0,0 +1,23 @@ +import com.wire.apps.polls.dao.DatabaseSetup +import com.wire.apps.polls.setup.connectDatabase +import io.ktor.server.testing.testApplication +import io.mockk.every +import io.mockk.mockkObject +import kotlin.test.Test +import kotlin.test.assertFailsWith + +class SetupTest { + @Test + fun `connectDatabase throws when connection failed`() = + testApplication { + // Arrange + mockkObject(DatabaseSetup) + + every { DatabaseSetup.isConnected() } returns false + + // Act & Assert + assertFailsWith { + application.connectDatabase() + } + } +} From a864f1981d60f66e82819b9448c6d6a1c281ab10 Mon Sep 17 00:00:00 2001 From: MarianKijewski Date: Thu, 7 May 2026 18:27:00 +0200 Subject: [PATCH 2/4] Throw on db connection failure --- .../kotlin/com/wire/apps/polls/setup/KtorInstallation.kt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/main/kotlin/com/wire/apps/polls/setup/KtorInstallation.kt b/src/main/kotlin/com/wire/apps/polls/setup/KtorInstallation.kt index 1991afc..4783839 100644 --- a/src/main/kotlin/com/wire/apps/polls/setup/KtorInstallation.kt +++ b/src/main/kotlin/com/wire/apps/polls/setup/KtorInstallation.kt @@ -72,11 +72,7 @@ fun Application.connectDatabase() { installationLogger.info { "DB connected." } migrateDatabase(dbConfig) } else { - // TODO verify handling, maybe exit the App? - installationLogger.error { - "It was not possible to connect to db database! " + - "The application will start but it won't work." - } + error("Unable to connect to the database") } } From 40003d06a0009069466fe2e7fe9a07343aa55907 Mon Sep 17 00:00:00 2001 From: MarianKijewski Date: Thu, 7 May 2026 18:37:04 +0200 Subject: [PATCH 3/4] Add package in test file --- src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt index ae613f0..adcc571 100644 --- a/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt +++ b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt @@ -1,5 +1,6 @@ +package com.wire.apps.polls.setup + import com.wire.apps.polls.dao.DatabaseSetup -import com.wire.apps.polls.setup.connectDatabase import io.ktor.server.testing.testApplication import io.mockk.every import io.mockk.mockkObject From f8576c59872d6e938476a8202dd585282e8f1207 Mon Sep 17 00:00:00 2001 From: MarianKijewski Date: Thu, 7 May 2026 18:38:20 +0200 Subject: [PATCH 4/4] Post test clean up --- src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt index adcc571..35b27c0 100644 --- a/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt +++ b/src/test/kotlin/com/wire/apps/polls/setup/SetupTest.kt @@ -4,6 +4,7 @@ import com.wire.apps.polls.dao.DatabaseSetup import io.ktor.server.testing.testApplication import io.mockk.every import io.mockk.mockkObject +import io.mockk.unmockkObject import kotlin.test.Test import kotlin.test.assertFailsWith @@ -20,5 +21,7 @@ class SetupTest { assertFailsWith { application.connectDatabase() } + + unmockkObject(DatabaseSetup) } }