1
+ package fr.free.nrw.commons.campaigns
2
+
3
+ import com.nhaarman.mockito_kotlin.verify
4
+ import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient
5
+ import io.reactivex.Single
6
+ import io.reactivex.schedulers.TestScheduler
7
+ import org.junit.Before
8
+ import org.junit.Test
9
+ import org.mockito.Mock
10
+ import org.mockito.Mockito
11
+ import org.mockito.MockitoAnnotations
12
+ import java.text.SimpleDateFormat
13
+ import java.util.*
14
+ import kotlin.collections.ArrayList
15
+
16
+ class CampaignsPresenterTest {
17
+ @Mock
18
+ var okHttpJsonApiClient: OkHttpJsonApiClient ? = null
19
+
20
+ lateinit var campaignsPresenter: CampaignsPresenter
21
+
22
+ @Mock
23
+ internal var view: ICampaignsView ? = null
24
+
25
+ @Mock
26
+ internal var campaignResponseDTO: CampaignResponseDTO ? = null
27
+ lateinit var campaignsSingle: Single <CampaignResponseDTO >
28
+
29
+ @Mock
30
+ var campaign: Campaign ? = null
31
+
32
+ lateinit var testScheduler: TestScheduler
33
+
34
+ /* *
35
+ * initial setup, test environment
36
+ */
37
+ @Before
38
+ @Throws(Exception ::class )
39
+ fun setUp () {
40
+ MockitoAnnotations .initMocks(this )
41
+ testScheduler= TestScheduler ()
42
+ campaignsSingle= Single .just(campaignResponseDTO)
43
+ campaignsPresenter= CampaignsPresenter (okHttpJsonApiClient,testScheduler,testScheduler)
44
+ campaignsPresenter?.onAttachView(view)
45
+ Mockito .`when `(okHttpJsonApiClient?.campaigns).thenReturn(campaignsSingle)
46
+ }
47
+
48
+ @Test
49
+ fun getCampaignsTestNoCampaigns () {
50
+ campaignsPresenter.getCampaigns()
51
+ verify(okHttpJsonApiClient)?.campaigns
52
+ testScheduler.triggerActions()
53
+ verify(view)?.showCampaigns(null )
54
+ }
55
+
56
+ @Test
57
+ fun getCampaignsTestNonEmptyCampaigns () {
58
+ campaignsPresenter.getCampaigns()
59
+ var campaigns= ArrayList <Campaign >()
60
+ campaigns.add(campaign!! )
61
+ val simpleDateFormat = SimpleDateFormat (" yyyy-MM-dd" , Locale .ROOT )
62
+ simpleDateFormat.timeZone = TimeZone .getTimeZone(" UTC" )
63
+ Mockito .`when `(campaignResponseDTO?.campaigns).thenReturn(campaigns)
64
+ var calendar = Calendar .getInstance()
65
+ calendar.add(Calendar .DATE ,- 1 )
66
+ val startDateString = simpleDateFormat.format(calendar.time).toString()
67
+ calendar= Calendar .getInstance()
68
+ calendar.add(Calendar .DATE ,3 )
69
+ val endDateString= simpleDateFormat.format(calendar.time).toString()
70
+ Mockito .`when `(campaign?.endDate).thenReturn(endDateString)
71
+ Mockito .`when `(campaign?.startDate).thenReturn(startDateString)
72
+ Mockito .`when `(campaignResponseDTO?.campaigns).thenReturn(campaigns)
73
+ verify(okHttpJsonApiClient)?.campaigns
74
+ testScheduler.triggerActions()
75
+ verify(view)?.showCampaigns(campaign)
76
+ }
77
+ }
0 commit comments