-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy pathReasonBuilderTest.kt
93 lines (83 loc) · 3.25 KB
/
ReasonBuilderTest.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package fr.free.nrw.commons.delete
import android.content.Context
import android.content.res.Resources
import fr.free.nrw.commons.Media
import fr.free.nrw.commons.R
import fr.free.nrw.commons.auth.SessionManager
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient
import fr.free.nrw.commons.profile.achievements.FeedbackResponse
import fr.free.nrw.commons.profile.leaderboard.LeaderboardResponse
import fr.free.nrw.commons.profile.leaderboard.UpdateAvatarResponse
import fr.free.nrw.commons.utils.ConfigUtils
import fr.free.nrw.commons.utils.ViewUtilWrapper
import io.reactivex.Observable
import io.reactivex.Single
import media
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.InjectMocks
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyString
import org.mockito.Mockito.mock
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when`
import org.mockito.MockitoAnnotations
import org.powermock.api.mockito.PowerMockito
import java.util.Date
class ReasonBuilderTest {
@Mock
internal var sessionManager: SessionManager? = null
@Mock
internal var okHttpJsonApiClient: OkHttpJsonApiClient? = null
@Mock
internal var context: Context? = null
@Mock
internal var viewUtilWrapper: ViewUtilWrapper? = null
@InjectMocks
var reasonBuilder: ReasonBuilder? = null
@Before
@Throws(Exception::class)
fun setUp() {
MockitoAnnotations.openMocks(this)
val resources = mock(Resources::class.java)
`when`(resources!!.getString(anyInt())).thenReturn("test")
`when`(context!!.resources).thenReturn(resources)
}
@Test
fun forceLoginWhenAccountIsNull() {
if (!ConfigUtils.isBetaFlavour) {
PowerMockito.`when`(context?.getString(R.string.user_not_logged_in))
.thenReturn("Log-in expired. Please log in again.")
reasonBuilder!!.getReason(mock(Media::class.java), "test")
verify(sessionManager, times(1))!!.forceLogin(any(Context::class.java))
}
}
@Test
fun getReason() {
if (!ConfigUtils.isBetaFlavour) {
`when`(sessionManager?.userName).thenReturn("Testuser")
`when`(sessionManager?.doesAccountExist()).thenReturn(true)
`when`(okHttpJsonApiClient!!.getAchievements(anyString()))
.thenReturn(Single.just(mock(FeedbackResponse::class.java)))
`when`(
okHttpJsonApiClient!!.getLeaderboard(
anyString(),
anyString(),
anyString(),
anyString(),
anyString()
)
)
.thenReturn(Observable.just(mock(LeaderboardResponse::class.java)))
`when`(okHttpJsonApiClient!!.setAvatar(anyString(), anyString()))
.thenReturn(Single.just(mock(UpdateAvatarResponse::class.java)))
val media = media(filename = "test_file", dateUploaded = Date())
reasonBuilder!!.getReason(media, "test")
verify(sessionManager, times(0))!!.forceLogin(any(Context::class.java))
verify(okHttpJsonApiClient, times(1))!!.getAchievements(anyString())
}
}
}