blob: b3ad2ef62bc82d11cbfef211267c31439544d6fc [file] [log] [blame]
package org.apache.fineract.online
import android.content.Context
import io.reactivex.Observable
import org.apache.fineract.FakeRemoteDataSource
import org.apache.fineract.data.datamanager.DataManagerAccounting
import org.apache.fineract.data.models.accounts.LedgerPage
import org.apache.fineract.exceptions.NoConnectivityException
import org.apache.fineract.ui.online.accounting.accounts.LedgerContract
import org.apache.fineract.ui.online.accounting.ledgers.LedgerPresenter
import org.apache.fineract.util.RxSchedulersOverrideRule
import org.junit.After
import org.junit.Assert.assertEquals
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.`when`
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnitRunner
@RunWith(MockitoJUnitRunner::class)
class LedgerPresenterTest {
@Rule
@JvmField
val overrideSchedulersRule = RxSchedulersOverrideRule()
@Mock
lateinit var mockedView: LedgerContract.View
@Mock
lateinit var mockedAccountingDataManager: DataManagerAccounting
@Mock
lateinit var mockedContext: Context
lateinit var ledgerPresenter: LedgerPresenter
lateinit var ledgerPage: LedgerPage
@Before
fun setup() {
ledgerPresenter = LedgerPresenter(mockedContext, mockedAccountingDataManager)
ledgerPresenter.attachView(mockedView)
ledgerPage = FakeRemoteDataSource.getLedgerPage()
}
@Test
fun testGetLedgerPage() {
`when`(mockedAccountingDataManager.fetchLedgers()).thenReturn(Observable.just(ledgerPage))
ledgerPresenter.getLedgersPage()
verify(mockedView).showProgressbar()
verify(mockedView).hideProgressbar()
verify(mockedView).showLedgers(ledgerPage.ledgers!!)
}
@Test
fun testGetLedgerPageEmpty() {
`when`(mockedAccountingDataManager.fetchLedgers())
.thenReturn(Observable.just(LedgerPage(ledgers = ArrayList())))
ledgerPresenter.getLedgersPage()
verify(mockedView).showProgressbar()
verify(mockedView).hideProgressbar()
verify(mockedView).showEmptyLedgers()
}
@Test
fun testGetLedgerPageFail() {
val exception = NoConnectivityException()
`when`(mockedAccountingDataManager.fetchLedgers())
.thenReturn(Observable.error(exception))
ledgerPresenter.getLedgersPage()
verify(mockedView).showProgressbar()
verify(mockedView).hideProgressbar()
verify(mockedView).showNoInternetConnection()
}
@After
fun tearDown() {
ledgerPresenter.detachView()
}
}