diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 0a08e7271..386e032dc 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -77,4 +77,9 @@ dependencies { add("kspIosX64", libs.ktorfit.ksp) add("kspIosArm64", libs.ktorfit.ksp) add("kspIosSimulatorArm64", libs.ktorfit.ksp) -} \ No newline at end of file + testImplementation ("org.jetbrains.kotlin:kotlin-test:1.8.21") + testImplementation ("org.jetbrains.kotlin:kotlin-test-junit:1.8.21") + testImplementation ("io.mockk:mockk:1.13.4") // Mocking library + testImplementation ("androidx.test.ext:junit:1.1.5") // JUnit for Android + testImplementation ("androidx.test:core:1.4.0") // For Android testing support +} diff --git a/core/network/src/test/kotlin/com/example/NetworkClientTest.kt b/core/network/src/test/kotlin/com/example/NetworkClientTest.kt new file mode 100644 index 000000000..a7ec587ab --- /dev/null +++ b/core/network/src/test/kotlin/com/example/NetworkClientTest.kt @@ -0,0 +1,36 @@ +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Test + +// Example class (Replace this with the actual NetworkClient class you're testing) +class NetworkClient { + fun fetchData(url: String): String { + // Normally, this would make a network request + return "Real Response" + } +} + +// Unit Test for NetworkClient +class NetworkClientTest { + + @Test + fun `test fetchData returns expected response`() = runBlocking { + // Arrange: Create a mock of NetworkClient + val mockClient = mockk() + + // Mock behavior + every { mockClient.fetchData("https://example.com") } returns "Mocked Response" + + // Act: Call the method + val response = mockClient.fetchData("https://example.com") + + // Assert: Verify the response + assertEquals("Mocked Response", response) + + // Verify that fetchData was called once + verify(exactly = 1) { mockClient.fetchData("https://example.com") } + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c14ff5498..e32c60684 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -113,6 +113,7 @@ jbSavedState = "1.2.2" packageName = "MifosWallet" packageNamespace = "org.mifospay.desktop" packageVersion = "1.0.0" +lifecycleRuntimeKtx = "2.8.7" [libraries] accompanist-pager = { group = "com.google.accompanist", name = "accompanist-pager", version.ref = "accompanist" } @@ -312,6 +313,8 @@ moko-permission = { group = "dev.icerock.moko", name = "permissions", version.re moko-permission-compose = { group = "dev.icerock.moko", name = "permissions-compose", version.ref = "mokoPermission" } window-size = { group = "dev.chrisbanes.material3", name = "material3-window-size-class-multiplatform", version.ref = "windowsSizeClass" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" } +androidx-ui-graphics = { group = "androidx.compose.ui", name = "ui-graphics" } [bundles] androidx-compose-ui-test = [ diff --git a/settings.gradle.kts b/settings.gradle.kts index 01128d4d5..63aa068fc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -76,3 +76,4 @@ include(":feature:upi-setup") include(":feature:qr") include(":libs:mifos-passcode") +include(":core:network:networkclienttest")