From 18552647d15dd3b0672270288ea68922b8ea31af Mon Sep 17 00:00:00 2001 From: Isanz Date: Tue, 7 May 2024 15:16:09 +0200 Subject: [PATCH] [] -- Testing --- app/build.gradle.kts | 2 + .../inmomarket/ExampleInstrumentedTest.kt | 24 -------- .../inmomarket/InmomarketInstrumentedTest.kt | 58 +++++++++++++++++++ gradle/libs.versions.toml | 24 ++++---- 4 files changed, 74 insertions(+), 34 deletions(-) delete mode 100644 app/src/androidTest/java/com/isanz/inmomarket/ExampleInstrumentedTest.kt create mode 100644 app/src/androidTest/java/com/isanz/inmomarket/InmomarketInstrumentedTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9bc15c3..7bc981e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -73,6 +73,8 @@ dependencies { implementation(libs.gson) implementation(libs.converter.gson) implementation(libs.play.services.ads) + implementation(libs.mockito.core) + implementation(libs.androidx.navigation.testing) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/androidTest/java/com/isanz/inmomarket/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/isanz/inmomarket/ExampleInstrumentedTest.kt deleted file mode 100644 index afa9ae2..0000000 --- a/app/src/androidTest/java/com/isanz/inmomarket/ExampleInstrumentedTest.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.isanz.inmomarket - -import androidx.test.platform.app.InstrumentationRegistry -import androidx.test.ext.junit.runners.AndroidJUnit4 - -import org.junit.Test -import org.junit.runner.RunWith - -import org.junit.Assert.* - -/** - * Instrumented test, which will execute on an Android device. - * - * See [testing documentation](http://d.android.com/tools/testing). - */ -@RunWith(AndroidJUnit4::class) -class ExampleInstrumentedTest { - @Test - fun useAppContext() { - // Context of the app under test. - val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.isanz.inmomarket", appContext.packageName) - } -} \ No newline at end of file diff --git a/app/src/androidTest/java/com/isanz/inmomarket/InmomarketInstrumentedTest.kt b/app/src/androidTest/java/com/isanz/inmomarket/InmomarketInstrumentedTest.kt new file mode 100644 index 0000000..e98e608 --- /dev/null +++ b/app/src/androidTest/java/com/isanz/inmomarket/InmomarketInstrumentedTest.kt @@ -0,0 +1,58 @@ +package com.isanz.inmomarket + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import com.isanz.inmomarket.ui.add.AddViewModel +import com.isanz.inmomarket.ui.chat.ChatViewModel +import com.isanz.inmomarket.ui.home.HomeViewModel +import com.isanz.inmomarket.ui.profile.ProfileViewModel +import com.isanz.inmomarket.ui.search.SearchViewModel +import com.isanz.inmomarket.ui.settings.SettingsViewModel +import com.isanz.inmomarket.utils.Constants +import com.isanz.inmomarket.utils.entities.Message +import com.isanz.inmomarket.utils.entities.Property +import org.junit.Assert.* +import org.junit.Test +import org.junit.runner.RunWith +import java.lang.reflect.Method + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class InmomarketInstrumentedTest { + @Test + fun viewModelsNotNull() { + val chatViewModel = ChatViewModel() + assertNotNull(chatViewModel) + val homeViewModel = HomeViewModel() + assertNotNull(homeViewModel) + val addViewModel = AddViewModel() + assertNotNull(addViewModel) + val searchViewModel = SearchViewModel() + assertNotNull(searchViewModel) + val profileViewModel = ProfileViewModel() + assertNotNull(profileViewModel) + val settingsViewModel = SettingsViewModel() + assertNotNull(settingsViewModel) + } + + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.isanz.inmomarket", appContext.packageName) + } + + @Test + fun chatMessageHasRightFormat() { + val chatViewModel = ChatViewModel() + val createMesssageMetoth: Method = ChatViewModel::class.java.getDeclaredMethod("createMessage", String::class.java, String::class.java) + createMesssageMetoth.isAccessible = true + val message : Message = createMesssageMetoth.invoke(chatViewModel, "Hello", "123") as Message + assertEquals("Hello", message.message ) + assertEquals("123", message.senderId) + } +} \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c3eaf15..7bf0848 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,30 +1,30 @@ [versions] agp = "8.3.2" kotlin = "1.9.0" -coreKtx = "1.13.0" +coreKtx = "1.13.1" junit = "4.13.2" junitVersion = "1.1.5" espressoCore = "3.5.1" appcompat = "1.6.1" -material = "1.11.0" +material = "1.12.0" constraintlayout = "2.1.4" lifecycleLivedataKtx = "2.7.0" lifecycleViewmodelKtx = "2.7.0" navigationFragmentKtx = "2.7.7" navigationUiKtx = "2.7.7" googleServices = "4.4.1" -firebaseFirestore = "24.11.1" +firebaseFirestore = "25.0.0" annotation = "1.7.1" firebaseUiAuth = "8.0.2" activity = "1.9.0" -firebaseAuth = "22.3.1" -firebaseDatabase = "20.3.1" +firebaseAuth = "23.0.0" +firebaseDatabase = "21.0.0" legacySupportV4 = "1.0.0" -fragmentKtx = "1.6.2" +fragmentKtx = "1.7.0" glide = "5.0.0-rc01" firebaseStorageKtx = "20.3.0" -firebaseStorage = "20.3.0" -firebaseCrashlytics = "18.6.4" +firebaseStorage = "21.0.0" +firebaseCrashlytics = "19.0.0" gradle = "8.1.4" firebaseCrashlyticsGradle = "2.9.9" kotlinxCoroutinesAndroid = "1.8.1-Beta" @@ -36,6 +36,8 @@ retrofit = "2.11.0" gson = "2.10.1" converterGson = "2.11.0" playServicesAds = "23.0.0" +mockitoCore = "5.11.0" +navigationTesting = "2.8.0-alpha08" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -59,7 +61,7 @@ firebase-database = { group = "com.google.firebase", name = "firebase-database", androidx-legacy-support-v4 = { group = "androidx.legacy", name = "legacy-support-v4", version.ref = "legacySupportV4" } androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragmentKtx" } glide = { group = "com.github.bumptech.glide", name = "glide", version.ref = "glide" } -firebase-storage-ktx = { group = "com.google.firebase", name = "firebase-storage-ktx", version.ref = "firebaseStorageKtx" } +firebase-storage-ktx = { group = "com.google.firebase", name = "firebase-storage-ktx", version = "21.0.0" } firebase-storage = { group = "com.google.firebase", name = "firebase-storage", version.ref = "firebaseStorage" } firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics", version.ref = "firebaseCrashlytics" } gradle = { group = "com.android.tools.build", name = "gradle", version.ref = "gradle" } @@ -67,13 +69,15 @@ firebase-crashlytics-gradle = { group = "com.google.firebase", name = "firebase- kotlinx-coroutines-android = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-android", version.ref = "kotlinxCoroutinesAndroid" } kotlinx-coroutines-play-services = { group = "org.jetbrains.kotlinx", name = "kotlinx-coroutines-play-services", version.ref = "kotlinxCoroutinesPlayServices" } androidx-biometric = { group = "androidx.biometric", name = "biometric", version.ref = "biometric" } -androidx-transition = { group = "androidx.transition", name = "transition", version = "1.5.0-rc02" } +androidx-transition = { group = "androidx.transition", name = "transition", version = "1.5.0" } places = { group = "com.google.android.libraries.places", name = "places", version.ref = "places" } play-services-maps = { group = "com.google.android.gms", name = "play-services-maps", version.ref = "playServicesMaps" } retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit" } gson = { group = "com.google.code.gson", name = "gson", version.ref = "gson" } converter-gson = { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "converterGson" } play-services-ads = { group = "com.google.android.gms", name = "play-services-ads", version.ref = "playServicesAds" } +mockito-core = { group = "org.mockito", name = "mockito-core", version.ref = "mockitoCore" } +androidx-navigation-testing = { group = "androidx.navigation", name = "navigation-testing", version.ref = "navigationTesting" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" }