You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.7 KiB
113 lines
3.7 KiB
2 years ago
|
package cash.z.ecc.android
|
||
|
|
||
|
import cash.z.ecc.android.feedback.Feedback
|
||
|
import cash.z.ecc.android.sdk.db.entity.PendingTransaction
|
||
|
import cash.z.ecc.android.sdk.db.entity.isCreated
|
||
|
import cash.z.ecc.android.sdk.db.entity.isCreating
|
||
|
import cash.z.ecc.android.sdk.db.entity.isMined
|
||
|
import cash.z.ecc.android.sdk.db.entity.isSubmitSuccess
|
||
|
import cash.z.ecc.android.ui.send.SendViewModel
|
||
|
import com.nhaarman.mockitokotlin2.verify
|
||
|
import com.nhaarman.mockitokotlin2.whenever
|
||
|
import kotlinx.coroutines.Dispatchers
|
||
|
import kotlinx.coroutines.newSingleThreadContext
|
||
|
import kotlinx.coroutines.test.setMain
|
||
|
import org.junit.Assert.assertEquals
|
||
|
import org.junit.Before
|
||
|
import org.junit.Test
|
||
|
import org.mockito.Mock
|
||
|
import org.mockito.MockitoAnnotations
|
||
|
import org.mockito.Spy
|
||
|
|
||
|
class SendViewModelTest {
|
||
|
|
||
|
@Mock lateinit var creatingTx: PendingTransaction
|
||
|
@Mock lateinit var createdTx: PendingTransaction
|
||
|
@Mock lateinit var submittedTx: PendingTransaction
|
||
|
@Mock lateinit var minedTx: PendingTransaction
|
||
|
|
||
|
@Mock
|
||
|
lateinit var feedback: Feedback
|
||
|
|
||
|
@Spy
|
||
|
lateinit var sendViewModel: SendViewModel
|
||
|
|
||
|
@Before
|
||
|
fun setUp() {
|
||
|
MockitoAnnotations.initMocks(this)
|
||
|
Dispatchers.setMain(newSingleThreadContext("Main thread"))
|
||
|
|
||
|
whenever(creatingTx.id).thenReturn(7)
|
||
|
whenever(creatingTx.submitAttempts).thenReturn(0)
|
||
|
|
||
|
whenever(createdTx.id).thenReturn(7)
|
||
|
whenever(createdTx.raw).thenReturn(byteArrayOf(0x1))
|
||
|
|
||
|
whenever(submittedTx.id).thenReturn(7)
|
||
|
whenever(submittedTx.raw).thenReturn(byteArrayOf(0x1))
|
||
|
whenever(submittedTx.submitAttempts).thenReturn(1)
|
||
|
|
||
|
whenever(minedTx.id).thenReturn(7)
|
||
|
whenever(minedTx.raw).thenReturn(byteArrayOf(0x1))
|
||
|
whenever(minedTx.submitAttempts).thenReturn(1)
|
||
|
whenever(minedTx.minedHeight).thenReturn(500_001)
|
||
|
|
||
|
sendViewModel.feedback = feedback
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
fun testUpdateMetrics_creating() {
|
||
|
// doNothing().whenever(sendViewModel).report(any())
|
||
|
|
||
|
// assertEquals(true, creatingTx.isCreating())
|
||
|
// sendViewModel.updateMetrics(creatingTx)
|
||
|
//
|
||
|
// verify(sendViewModel).report("7.metric.tx.initialized")
|
||
|
// assertEquals(1, sendViewModel.metrics.size)
|
||
|
// verifyZeroInteractions(feedback)
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
fun testUpdateMetrics_created() {
|
||
|
assertEquals(false, createdTx.isCreating())
|
||
|
assertEquals(true, createdTx.isCreated())
|
||
|
// sendViewModel.updateMetrics(creatingTx)
|
||
|
// sendViewModel.updateMetrics(createdTx)
|
||
|
// Thread.sleep(100)
|
||
|
// println(sendViewModel.metrics)
|
||
|
//
|
||
|
// verify(sendViewModel).report("7.metric.tx.created")
|
||
|
// assertEquals(1, sendViewModel.metrics.size)
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
fun testUpdateMetrics_submitted() {
|
||
|
assertEquals(false, submittedTx.isCreating())
|
||
|
assertEquals(false, submittedTx.isCreated())
|
||
|
assertEquals(true, submittedTx.isSubmitSuccess())
|
||
|
// sendViewModel.updateMetrics(creatingTx)
|
||
|
// sendViewModel.updateMetrics(createdTx)
|
||
|
// sendViewModel.updateMetrics(submittedTx)
|
||
|
assertEquals(5, sendViewModel.metrics.size)
|
||
|
|
||
|
Thread.sleep(100)
|
||
|
assertEquals(1, sendViewModel.metrics.size)
|
||
|
|
||
|
verify(feedback).report(sendViewModel.metrics.values.first())
|
||
|
}
|
||
|
|
||
|
@Test
|
||
|
fun testUpdateMetrics_mined() {
|
||
|
assertEquals(true, minedTx.isMined())
|
||
|
assertEquals(true, minedTx.isSubmitSuccess())
|
||
|
// sendViewModel.updateMetrics(creatingTx)
|
||
|
// sendViewModel.updateMetrics(createdTx)
|
||
|
// sendViewModel.updateMetrics(submittedTx)
|
||
|
// sendViewModel.updateMetrics(minedTx)
|
||
|
// assertEquals(7, sendViewModel.metrics.size)
|
||
|
//
|
||
|
// Thread.sleep(100)
|
||
|
// assertEquals(0, sendViewModel.metrics.size)
|
||
|
}
|
||
|
}
|