| 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() |
| } |
| |
| } |