mirror of
https://github.com/hmalik144/Farmr.git
synced 2026-01-31 02:41:49 +00:00
- RepositoryImplTest.kt added
This commit is contained in:
@@ -34,11 +34,33 @@ dependencies {
|
||||
implementation 'androidx.activity:activity-ktx:1.4.0'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.1'
|
||||
implementation 'androidx.preference:preference:1.2.1'
|
||||
|
||||
implementation 'com.ajts.androidmads.SQLite2Excel:library:1.0.2'
|
||||
testImplementation 'junit:junit:4.12'
|
||||
/ * Unit testing * /
|
||||
testImplementation 'junit:junit:4.13.2'
|
||||
androidTestImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
|
||||
testImplementation "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
|
||||
implementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
|
||||
androidTestImplementation 'androidx.test:core-ktx:1.4.0'
|
||||
androidTestImplementation 'androidx.test:rules:1.4.0'
|
||||
/ * mockito and livedata testing * /
|
||||
testImplementation 'org.mockito:mockito-inline:2.13.0'
|
||||
implementation 'androidx.arch.core:core-testing:2.1.0'
|
||||
/ * MockK * /
|
||||
def mockk_ver = "1.10.5"
|
||||
testImplementation "io.mockk:mockk:$mockk_ver"
|
||||
androidTestImplementation "io.mockk:mockk-android:$mockk_ver"
|
||||
/ * Android Espresso * /
|
||||
def testJunitVersion = "1.1.5"
|
||||
def testRunnerVersion = "1.5.2"
|
||||
def espressoVersion = "3.5.1"
|
||||
androidTestImplementation "androidx.test.ext:junit:$testJunitVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-core:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso.idling:idling-concurrent:$espressoVersion"
|
||||
implementation "androidx.test.espresso:espresso-idling-resource:$espressoVersion"
|
||||
androidTestImplementation "androidx.test:runner:$testRunnerVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-contrib:$espressoVersion"
|
||||
androidTestImplementation "androidx.test.espresso:espresso-intents:$espressoVersion"
|
||||
androidTestImplementation "org.hamcrest:hamcrest:2.2"
|
||||
/ * Room database * /
|
||||
def room_version = "2.4.3"
|
||||
implementation "androidx.room:room-runtime:$room_version"
|
||||
@@ -48,4 +70,6 @@ dependencies {
|
||||
def kodein_version = "6.2.1"
|
||||
implementation "org.kodein.di:kodein-di-generic-jvm:$kodein_version"
|
||||
implementation "org.kodein.di:kodein-di-framework-android-x:$kodein_version"
|
||||
/ * SQLite to excel */
|
||||
implementation 'com.ajts.androidmads.SQLite2Excel:library:1.0.2'
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
package com.appttude.h_mal.farmr;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||
*/
|
||||
public class ExampleUnitTest {
|
||||
@Test
|
||||
public void addition_isCorrect() throws Exception {
|
||||
assertEquals(4, 2 + 2);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.appttude.h_mal.farmr.data
|
||||
|
||||
import com.appttude.h_mal.farmr.data.legacydb.LegacyDatabase
|
||||
import com.appttude.h_mal.farmr.data.legacydb.ShiftObject
|
||||
import com.appttude.h_mal.farmr.data.prefs.PreferenceProvider
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.mockk
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.ArgumentMatchers.anyLong
|
||||
import java.util.UUID
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertIs
|
||||
|
||||
class RepositoryImplTest {
|
||||
|
||||
private lateinit var repository: RepositoryImpl
|
||||
|
||||
@MockK
|
||||
lateinit var db: LegacyDatabase
|
||||
|
||||
@MockK
|
||||
lateinit var prefs: PreferenceProvider
|
||||
|
||||
@Before
|
||||
fun setUp() {
|
||||
MockKAnnotations.init(this)
|
||||
repository = RepositoryImpl(db, prefs)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun readDatabase_validResponse() {
|
||||
// Arrange
|
||||
val elements = listOf<ShiftObject>(
|
||||
mockk { every { id } returns anyLong() },
|
||||
mockk { every { id } returns anyLong() },
|
||||
mockk { every { id } returns anyLong() },
|
||||
mockk { every { id } returns anyLong() }
|
||||
)
|
||||
|
||||
//Act
|
||||
every { db.readShiftsFromDatabase() } returns elements
|
||||
|
||||
// Assert
|
||||
val result = repository.readShiftsFromDatabase()
|
||||
assertIs<List<ShiftObject>>(result)
|
||||
assertEquals(result.first().id, anyLong())
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.appttude.h_mal.farmr.utils
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.Observer
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import java.util.concurrent.CountDownLatch
|
||||
import java.util.concurrent.TimeUnit
|
||||
import java.util.concurrent.TimeoutException
|
||||
|
||||
fun <T> LiveData<T>.getOrAwaitValue(
|
||||
time: Long = 2,
|
||||
timeUnit: TimeUnit = TimeUnit.SECONDS
|
||||
): T {
|
||||
var data: T? = null
|
||||
val latch = CountDownLatch(1)
|
||||
val observer = object : Observer<T> {
|
||||
override fun onChanged(o: T?) {
|
||||
data = o
|
||||
latch.countDown()
|
||||
this@getOrAwaitValue.removeObserver(this)
|
||||
}
|
||||
}
|
||||
|
||||
this.observeForever(observer)
|
||||
|
||||
// Don't wait indefinitely if the LiveData is not set.
|
||||
if (!latch.await(time, timeUnit)) {
|
||||
throw TimeoutException("LiveData value was never set.")
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
return data as T
|
||||
}
|
||||
|
||||
fun sleep(millis: Long = 1000) {
|
||||
runBlocking(Dispatchers.Default) { delay(millis) }
|
||||
}
|
||||
Reference in New Issue
Block a user