123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package com.chameth.yaotp.viewmodel
-
- import androidx.arch.core.executor.testing.InstantTaskExecutorRule
- import com.chameth.yaotp.accounts.Account
- import com.nhaarman.mockitokotlin2.*
- import org.junit.Assert.assertEquals
- import org.junit.Rule
- import org.junit.Test
-
- class OtpListViewModelTest {
-
- @get:Rule
- val instantTaskExecutorRule = InstantTaskExecutorRule()
-
- private val viewModel = OtpListViewModel()
- private val observer = mock<OtpListViewModel.AccountObserver>()
-
- @Test
- fun testAddAccount_incrementsNumberOfAccounts() {
- assertEquals(0, viewModel.numberOfAccounts)
- viewModel.addAccount(mock())
- assertEquals(1, viewModel.numberOfAccounts)
- viewModel.addAccount(mock())
- assertEquals(2, viewModel.numberOfAccounts)
- }
-
- @Test
- fun testRemoveAccount_decrementsNumberOfAccounts() {
- val account1 = mock<Account>()
- val account2 = mock<Account>()
- viewModel.addAccount(account1)
- viewModel.addAccount(account2)
- viewModel.removeAccount(account1)
- assertEquals(1, viewModel.numberOfAccounts)
- viewModel.removeAccount(account2)
- assertEquals(0, viewModel.numberOfAccounts)
- }
-
- @Test
- fun testRemoveAccount_withNonExistantAccount_doesNothing() {
- val account1 = mock<Account>()
- val account2 = mock<Account>()
- viewModel.addAccount(account1)
- viewModel.addObserver(observer)
- viewModel.removeAccount(account2)
-
- verifyNoMoreInteractions(observer)
- }
-
- @Test
- fun testAddAccount_notifiesRegisteredObservers() {
- viewModel.addAccount(mock())
- viewModel.addObserver(observer)
- viewModel.addAccount(mock())
- viewModel.removeObserver(observer)
- viewModel.addAccount(mock())
-
- verify(observer).accountAdded(1)
- verify(observer, never()).accountAdded(0)
- verify(observer, never()).accountAdded(2)
- }
-
- @Test
- fun testRemoveAccount_notifiesRegisteredObservers() {
- val account1 = mock<Account>()
- val account2 = mock<Account>()
- val account3 = mock<Account>()
- viewModel.addAccount(account1)
- viewModel.addAccount(account2)
- viewModel.addAccount(account3)
- viewModel.removeAccount(account1)
- viewModel.addObserver(observer)
- viewModel.removeAccount(account3)
- viewModel.removeObserver(observer)
- viewModel.removeAccount(account2)
-
- verify(observer).accountRemoved(1)
- verify(observer, never()).accountRemoved(0)
- }
-
- @Test
- fun testGetViewModel_returnsCorrectViewModel() {
- viewModel.addAccount(mock { on { label } doReturn "Foo" })
- viewModel.addAccount(mock { on { label } doReturn "Bar" })
-
- assertEquals("Foo", viewModel.getViewModelForAccount(0).label.value)
- assertEquals("Bar", viewModel.getViewModelForAccount(1).label.value)
- }
-
- }
|