diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2301a84..7ce5dda 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,4 +43,4 @@ dependencies { androidTestImplementation(TestLibraries.espressoCore) } -apply(mapOf("plugin" to "com.google.gms.google-services")) \ No newline at end of file +//apply(mapOf("plugin" to "com.google.gms.google-services")) \ No newline at end of file diff --git a/buildSrc/build/classes/kotlin/main/AndroidxLibraries.class b/buildSrc/build/classes/kotlin/main/AndroidxLibraries.class index 1861b01..e5f1e50 100644 Binary files a/buildSrc/build/classes/kotlin/main/AndroidxLibraries.class and b/buildSrc/build/classes/kotlin/main/AndroidxLibraries.class differ diff --git a/buildSrc/build/classes/kotlin/main/FirebaseLibraries.class b/buildSrc/build/classes/kotlin/main/FirebaseLibraries.class index 54028fa..97bedc3 100644 Binary files a/buildSrc/build/classes/kotlin/main/FirebaseLibraries.class and b/buildSrc/build/classes/kotlin/main/FirebaseLibraries.class differ diff --git a/buildSrc/build/classes/kotlin/main/TestLibraries.class b/buildSrc/build/classes/kotlin/main/TestLibraries.class index a1ae7d4..6ba2786 100644 Binary files a/buildSrc/build/classes/kotlin/main/TestLibraries.class and b/buildSrc/build/classes/kotlin/main/TestLibraries.class differ diff --git a/buildSrc/build/classes/kotlin/main/ThirdPartyLibraries.class b/buildSrc/build/classes/kotlin/main/ThirdPartyLibraries.class index 16f4495..3b3c4e4 100644 Binary files a/buildSrc/build/classes/kotlin/main/ThirdPartyLibraries.class and b/buildSrc/build/classes/kotlin/main/ThirdPartyLibraries.class differ diff --git a/buildSrc/build/classes/kotlin/main/Versions.class b/buildSrc/build/classes/kotlin/main/Versions.class index 4ff86c3..1d7b959 100644 Binary files a/buildSrc/build/classes/kotlin/main/Versions.class and b/buildSrc/build/classes/kotlin/main/Versions.class differ diff --git a/buildSrc/build/kotlin/compileKotlin/build-history.bin b/buildSrc/build/kotlin/compileKotlin/build-history.bin index 4b1e137..5b4bd66 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/build-history.bin and b/buildSrc/build/kotlin/compileKotlin/build-history.bin differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab index 7a7ae45..220962d 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at index 6736953..5c952ef 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/inputs/source-to-output.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab index b1594d4..d1596a3 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at index dc1013d..c652451 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab index 0af1be7..8d8340d 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at index 836103a..b0d236b 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/constants.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab index 3c3687b..d461982 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at index dc1013d..c652451 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab index a9671d8..d09bc84 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at index 441bafb..71094df 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/proto.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab index cfa8ace..c72208c 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at index 94fe2c1..10bd0d6 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab index 4cc5a1d..38fd31d 100644 --- a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab +++ b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/counters.tab @@ -1,2 +1,2 @@ -10 -4 \ No newline at end of file +11 +5 \ No newline at end of file diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab index e1d8433..5c2e2a3 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at index 263bcd3..afce831 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/file-to-id.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab index 907fea4..c15616b 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream index 8ad02ff..b73411e 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len index c15663d..296694d 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.keystream.len differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len index fd5292d..a541356 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.len differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at index 4c8eef2..4025dfb 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i index 5f2acb4..fd27401 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/id-to-file.tab_i differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab index ab28cf0..57993c9 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream index 46316a9..664f61d 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len index 6a294aa..be9fd94 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.keystream.len differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len index 73e7fcf..709f734 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.len differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at index fcf2d9e..725a74c 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab.values.at differ diff --git a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i index a727ad1..7643688 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i and b/buildSrc/build/kotlin/compileKotlin/caches-jvm/lookups/lookups.tab_i differ diff --git a/buildSrc/build/kotlin/compileKotlin/last-build.bin b/buildSrc/build/kotlin/compileKotlin/last-build.bin index 2959e73..36b641b 100644 Binary files a/buildSrc/build/kotlin/compileKotlin/last-build.bin and b/buildSrc/build/kotlin/compileKotlin/last-build.bin differ diff --git a/buildSrc/build/libs/buildSrc.jar b/buildSrc/build/libs/buildSrc.jar index b4cdd95..734d6dc 100644 Binary files a/buildSrc/build/libs/buildSrc.jar and b/buildSrc/build/libs/buildSrc.jar differ diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index b5b267a..3bdfbd9 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -1,12 +1,13 @@ object CoreLibraries { const val kotlin = "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${Versions.kotlinVersion}" - const val coroutines = "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.0-M2" + + const val coroutines = + "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Versions.coroutinesVersion}" const val koin = "org.koin:koin-android:${Versions.coinVersion}" const val koinViewModel = "org.koin:koin-android-viewmodel:${Versions.coinVersion}" } - object ThirdPartyLibraries { const val retrofit = "com.squareup.retrofit2:retrofit:2.6.0" const val moshi = "com.squareup.moshi:moshi-kotlin:${Versions.moshiVersion}" @@ -35,4 +36,9 @@ object TestLibraries { const val runnner = "com.android.support.test:runner:${Versions.testRunnerVersion}" const val espressoCore = "com.android.support.test.espresso:espresso-core:${Versions.espressoCoreVersion}" + const val mockk = "io.mockk:mockk:${Versions.mockKversion}" + + const val archCoreTesting = "android.arch.core:core-testing:1.0.0" + const val coroutinesTesting = + "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutinesVersion}" } \ No newline at end of file diff --git a/buildSrc/src/main/java/Versions.kt b/buildSrc/src/main/java/Versions.kt index a7e87a9..ff9d0b4 100644 --- a/buildSrc/src/main/java/Versions.kt +++ b/buildSrc/src/main/java/Versions.kt @@ -5,6 +5,7 @@ object Release { object Versions { + const val mockKversion = "1.9.3" /** * Sdk Versions */ @@ -17,6 +18,7 @@ object Versions { */ const val gradleVersion = "3.5.0-beta05" const val kotlinVersion = "1.3.41" + const val coroutinesVersion = "1.3.0-M2" const val appCompatVersion = "1.0.2" const val firebaseVersion = "17.0.0" const val constraintLayoutVersion = "1.1.3" diff --git a/meetupviewmodel/build.gradle.kts b/meetupviewmodel/build.gradle.kts index 0e1174a..df31c62 100644 --- a/meetupviewmodel/build.gradle.kts +++ b/meetupviewmodel/build.gradle.kts @@ -10,6 +10,10 @@ dependencies { implementation(AndroidxLibraries.viewModel) implementation(CoreLibraries.koin) implementation(CoreLibraries.koinViewModel) + testImplementation(TestLibraries.mockk) + testImplementation(TestLibraries.jUnit) + testImplementation(TestLibraries.archCoreTesting) + testImplementation(TestLibraries.coroutinesTesting) } android { @@ -18,6 +22,9 @@ android { minSdkVersion(Versions.minSdkVersion) targetSdkVersion(Versions.targetSdkVersion) } + testOptions { + unitTests.isReturnDefaultValues = true + } } buildscript { diff --git a/meetupviewmodel/src/main/java/com/gdgistanbul/viewmodel/MeetupViewModel.kt b/meetupviewmodel/src/main/java/com/gdgistanbul/viewmodel/MeetupViewModel.kt index c81abf3..0937dc9 100644 --- a/meetupviewmodel/src/main/java/com/gdgistanbul/viewmodel/MeetupViewModel.kt +++ b/meetupviewmodel/src/main/java/com/gdgistanbul/viewmodel/MeetupViewModel.kt @@ -8,10 +8,8 @@ import com.gdgistanbul.model.Event import com.gdgistanbul.repo.MeetupRepo import kotlinx.coroutines.launch -class MeetupViewModel(val meetupRepo: MeetupRepo) : ViewModel() { - init { - refreshEvents() - } +class MeetupViewModel(private val meetupRepo: MeetupRepo) : ViewModel() { + val eventsLiveData = MutableLiveData>() val toastLiveData = MutableLiveData() diff --git a/meetupviewmodel/src/test/java/com/gdgistanbul/viewmodel/MeetupViewModelTest.kt b/meetupviewmodel/src/test/java/com/gdgistanbul/viewmodel/MeetupViewModelTest.kt new file mode 100644 index 0000000..63a9b9e --- /dev/null +++ b/meetupviewmodel/src/test/java/com/gdgistanbul/viewmodel/MeetupViewModelTest.kt @@ -0,0 +1,62 @@ +package com.gdgistanbul.viewmodel + +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import androidx.lifecycle.Observer +import com.gdgistanbul.model.Event +import com.gdgistanbul.repo.MeetupRepo +import io.mockk.MockKAnnotations +import io.mockk.coEvery +import io.mockk.impl.annotations.MockK +import io.mockk.mockk +import io.mockk.verify +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.newSingleThreadContext +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.test.resetMain +import kotlinx.coroutines.test.setMain +import org.junit.After +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TestRule + +class MeetupViewModelTest { + @get:Rule + var rule: TestRule = InstantTaskExecutorRule() + + private val mainThreadSurrogate = newSingleThreadContext("UI thread") + + @MockK + lateinit var meetupRepo: MeetupRepo + + @Before + fun initTests() { + Dispatchers.setMain(mainThreadSurrogate) + MockKAnnotations.init(this) + } + + @Test + fun `refreshEvents success`() = runBlocking { + val eventList: List = mockk() + coEvery { meetupRepo.getEvents() } returns eventList + val observer: Observer> = mockk() + val viewModel = MeetupViewModel(meetupRepo) + viewModel.eventsLiveData.observeForever(observer) + viewModel.refreshEvents().join() + verify { observer.onChanged(eventList) } + + } + + + @Test + fun `refreshEvents failure`() = runBlocking { + + val viewModel: MeetupViewModel = MeetupViewModel(meetupRepo) + } + + @After + fun tearDown() { + Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher + mainThreadSurrogate.close() + } +} \ No newline at end of file