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