mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Unit-Tests for Campaigns (#3258)
This commit is contained in:
parent
4150e5fa40
commit
7b9e792efc
2 changed files with 90 additions and 3 deletions
|
|
@ -0,0 +1,77 @@
|
|||
package fr.free.nrw.commons.campaigns
|
||||
|
||||
import com.nhaarman.mockito_kotlin.verify
|
||||
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient
|
||||
import io.reactivex.Single
|
||||
import io.reactivex.schedulers.TestScheduler
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito
|
||||
import org.mockito.MockitoAnnotations
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class CampaignsPresenterTest {
|
||||
@Mock
|
||||
var okHttpJsonApiClient: OkHttpJsonApiClient? = null
|
||||
|
||||
lateinit var campaignsPresenter: CampaignsPresenter
|
||||
|
||||
@Mock
|
||||
internal var view: ICampaignsView? = null
|
||||
|
||||
@Mock
|
||||
internal var campaignResponseDTO: CampaignResponseDTO? = null
|
||||
lateinit var campaignsSingle: Single<CampaignResponseDTO>
|
||||
|
||||
@Mock
|
||||
var campaign: Campaign? = null
|
||||
|
||||
lateinit var testScheduler: TestScheduler
|
||||
|
||||
/**
|
||||
* initial setup, test environment
|
||||
*/
|
||||
@Before
|
||||
@Throws(Exception::class)
|
||||
fun setUp() {
|
||||
MockitoAnnotations.initMocks(this)
|
||||
testScheduler=TestScheduler()
|
||||
campaignsSingle= Single.just(campaignResponseDTO)
|
||||
campaignsPresenter= CampaignsPresenter(okHttpJsonApiClient,testScheduler,testScheduler)
|
||||
campaignsPresenter?.onAttachView(view)
|
||||
Mockito.`when`(okHttpJsonApiClient?.campaigns).thenReturn(campaignsSingle)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getCampaignsTestNoCampaigns() {
|
||||
campaignsPresenter.getCampaigns()
|
||||
verify(okHttpJsonApiClient)?.campaigns
|
||||
testScheduler.triggerActions()
|
||||
verify(view)?.showCampaigns(null)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun getCampaignsTestNonEmptyCampaigns() {
|
||||
campaignsPresenter.getCampaigns()
|
||||
var campaigns= ArrayList<Campaign>()
|
||||
campaigns.add(campaign!!)
|
||||
val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.ROOT)
|
||||
simpleDateFormat.timeZone = TimeZone.getTimeZone("UTC")
|
||||
Mockito.`when`(campaignResponseDTO?.campaigns).thenReturn(campaigns)
|
||||
var calendar = Calendar.getInstance()
|
||||
calendar.add(Calendar.DATE,-1)
|
||||
val startDateString = simpleDateFormat.format(calendar.time).toString()
|
||||
calendar= Calendar.getInstance()
|
||||
calendar.add(Calendar.DATE,3)
|
||||
val endDateString= simpleDateFormat.format(calendar.time).toString()
|
||||
Mockito.`when`(campaign?.endDate).thenReturn(endDateString)
|
||||
Mockito.`when`(campaign?.startDate).thenReturn(startDateString)
|
||||
Mockito.`when`(campaignResponseDTO?.campaigns).thenReturn(campaigns)
|
||||
verify(okHttpJsonApiClient)?.campaigns
|
||||
testScheduler.triggerActions()
|
||||
verify(view)?.showCampaigns(campaign)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue