1+ package fr.free.nrw.commons.notification
2+
3+ import com.nhaarman.mockito_kotlin.eq
4+ import io.reactivex.Observable
5+ import org.junit.Before
6+ import org.junit.Test
7+ import org.mockito.ArgumentMatchers
8+ import org.mockito.Mock
9+ import org.mockito.Mockito
10+ import org.mockito.Mockito.verify
11+ import org.mockito.MockitoAnnotations
12+ import org.wikipedia.csrf.CsrfTokenClient
13+ import org.wikipedia.dataclient.Service
14+ import org.wikipedia.dataclient.mwapi.MwQueryResponse
15+ import org.wikipedia.dataclient.mwapi.MwQueryResult
16+ import org.wikipedia.notifications.Notification
17+
18+ class NotificationClientTest {
19+
20+ @Mock
21+ private lateinit var service: Service
22+ @Mock
23+ private lateinit var csrfTokenClient: CsrfTokenClient
24+
25+ @Mock
26+ private lateinit var mQueryResponse: MwQueryResponse
27+ @Mock
28+ private lateinit var mQueryResult: MwQueryResult
29+ @Mock
30+ private lateinit var mQueryResultNotificationsList: MwQueryResult .NotificationList
31+ @Mock
32+ private lateinit var notificationsList: List <Notification >
33+
34+ private lateinit var notificationClient: NotificationClient
35+
36+ /* *
37+ * initial setup, test environment
38+ */
39+ @Before
40+ @Throws(Exception ::class )
41+ fun setUp () {
42+ MockitoAnnotations .initMocks(this )
43+ notificationClient = NotificationClient (service, csrfTokenClient)
44+ }
45+
46+ /* *
47+ * Test getNotifications
48+ */
49+
50+ @Test
51+ fun getNotificationTest () {
52+ Mockito .`when `(service.getAllNotifications(ArgumentMatchers .anyString(), ArgumentMatchers .anyString(), ArgumentMatchers .any())).thenReturn(Observable .just(mQueryResponse))
53+ Mockito .`when `(mQueryResponse.query()).thenReturn(mQueryResult)
54+ Mockito .`when `(mQueryResult.notifications()).thenReturn(mQueryResultNotificationsList)
55+ Mockito .`when `(mQueryResultNotificationsList.list()).thenReturn(notificationsList)
56+ notificationClient.getNotifications(true )
57+ verify(service).getAllNotifications(eq(" wikidatawiki|commonswiki|enwiki" ), eq(" read" ), eq(null ))
58+ }
59+
60+ /* *
61+ * Test mark Notifications As Read
62+ */
63+ @Test
64+ fun markNotificationAsReadTest () {
65+ Mockito .`when `(csrfTokenClient.tokenBlocking).thenReturn(" test" )
66+ Mockito .`when `(service.markRead(ArgumentMatchers .anyString(), ArgumentMatchers .anyString(), ArgumentMatchers .anyString())).thenReturn(Observable .just(mQueryResponse))
67+ Mockito .`when `(mQueryResponse.success()).thenReturn(true )
68+ notificationClient.markNotificationAsRead(" test" )
69+ verify(service).markRead(ArgumentMatchers .anyString(), ArgumentMatchers .anyString(), ArgumentMatchers .anyString())
70+ }
71+
72+ }
0 commit comments