Browse Source

add test for UpdateValutesRepository

MrOzOn 4 years ago
parent
commit
9fae4eb60c

+ 1 - 1
app/build.gradle

@@ -69,6 +69,6 @@ dependencies {
     androidTestImplementation 'androidx.test.ext:junit:1.1.2'
     androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
     testImplementation 'org.robolectric:robolectric:4.4'
-    testImplementation 'org.mockito:mockito-core:2.19.0'
+    testImplementation 'org.mockito:mockito-core:2.28.2'
     testImplementation "com.squareup.retrofit2:retrofit-mock:$retrofit_version"
 }

+ 5 - 5
app/src/test/java/com/mrozon/currencyconverter/data/db/CurrencyDaoTest.kt

@@ -23,9 +23,9 @@ class CurrencyDaoTest {
     @get:Rule
     var instantTaskExecutorRule = InstantTaskExecutorRule()
 
-    private val valute1 = ValuteDb("R01090B", "BYN", "Белорусский рубль", 28.7415f)
-    private val valute2 = ValuteDb("R01100", "BGN", "Болгарский лев", 44.0295f)
-    private val valute3 = ValuteDb("R01565", "PLN", "Польский злотый", 18.9354f)
+    private val valute1 = ValuteDb("R01090B", "BYN", "Белорусский рубль", 28.7415)
+    private val valute2 = ValuteDb("R01100", "BGN", "Болгарский лев", 44.0295)
+    private val valute3 = ValuteDb("R01565", "PLN", "Польский злотый", 18.9354)
 
     @Before
     fun createDb() = runBlocking {
@@ -50,7 +50,7 @@ class CurrencyDaoTest {
 
     @Test
     fun add_one_new_item() = runBlocking {
-        val valute = ValuteDb("R01775", "CHF", "Швейцарский франк", 78.7071f)
+        val valute = ValuteDb("R01775", "CHF", "Швейцарский франк", 78.7071)
         dao.insertAll(listOf(valute))
         val valutes = dao.getPlants().first()
         assertEquals(valutes.size,4)
@@ -58,7 +58,7 @@ class CurrencyDaoTest {
 
     @Test
     fun add_one_existing_item() = runBlocking {
-        val valute = ValuteDb("R01100", "CHF", "Швейцарский франк", 78.7071f)
+        val valute = ValuteDb("R01100", "CHF", "Швейцарский франк", 78.7071)
         dao.insertAll(listOf(valute))
         val valutes = dao.getPlants().first()
         assertEquals(valutes.size,3)

+ 89 - 0
app/src/test/java/com/mrozon/currencyconverter/data/repository/UpdateValutesRepositoryTest.kt

@@ -0,0 +1,89 @@
+package com.mrozon.currencyconverter.data.repository
+
+import com.mrozon.currencyconverter.CoroutineTestRule
+import com.mrozon.currencyconverter.data.db.CurrencyDao
+import com.mrozon.currencyconverter.data.network.CurrenciesResponse
+import com.mrozon.currencyconverter.data.network.CurrencyService
+import com.mrozon.currencyconverter.data.network.Valute
+import kotlinx.coroutines.ExperimentalCoroutinesApi
+import org.junit.Assert.*
+import org.junit.Before
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito
+import org.mockito.junit.MockitoJUnit
+import org.mockito.junit.MockitoRule
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+
+@ExperimentalCoroutinesApi
+@RunWith(RobolectricTestRunner::class)
+@Config(sdk = [29])
+class UpdateValutesRepositoryTest {
+
+    @get:Rule
+    val mockitoRule: MockitoRule = MockitoJUnit.rule()
+
+    @get:Rule
+    var coroutinesTestRule = CoroutineTestRule()
+
+    @Mock
+    lateinit var service: CurrencyService
+
+    @Mock
+    lateinit var dao: CurrencyDao
+
+    lateinit var repository: UpdateValutesRepository
+
+    @Before
+    fun setUp() {
+        repository = UpdateValutesRepository(service, dao)
+    }
+
+    @Test
+    fun update_success() = coroutinesTestRule.runBlockingTest {
+        val valute1 = Valute(
+            charCode = "HKD",
+            value = 93.0223,
+            previous = 93.3763,
+            iD = "R01200",
+            nominal = 10,
+            numCode = "344",
+            name = "Гонконгских долларов"
+        )
+        val valute2 = Valute(
+            charCode = "HKS",
+            value = 93.0223,
+            previous = 93.3763,
+            iD = "R01201",
+            nominal = 10,
+            numCode = "344",
+            name = "Гонконгских долларов"
+        )
+        val valute3 = Valute(
+            charCode = "HKY",
+            value = 93.0223,
+            previous = 93.3763,
+            iD = "R01203",
+            nominal = 10,
+            numCode = "344",
+            name = "Гонконгских долларов"
+        )
+        val response = CurrenciesResponse (
+            previousURL = "",
+            timestamp = "",
+            date = "",
+            previousDate = "",
+            valute = mapOf("HKD" to valute1, "HKS" to valute2, "HKY" to valute3)
+        )
+
+        Mockito.`when`(service.getCurrencies()).thenReturn(
+            response
+        )
+        repository.update()
+//        assertEquals(1,1)
+    }
+
+}