Skip to content

Commit 6e485d6

Browse files
ashishkumar468misaochan
authored andcommitted
Added unit-tests for NotificationClient & NotificationController (commons-app#3274)
1 parent f27749f commit 6e485d6

File tree

2 files changed

+119
-0
lines changed

2 files changed

+119
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package fr.free.nrw.commons.notification
2+
3+
import com.nhaarman.mockito_kotlin.verify
4+
import org.junit.Before
5+
import org.junit.Test
6+
import org.mockito.ArgumentMatchers
7+
import org.mockito.ArgumentMatchers.eq
8+
import org.mockito.Mock
9+
import org.mockito.MockitoAnnotations
10+
11+
class NotificationControllerTest {
12+
13+
@Mock
14+
private lateinit var notificationClient: NotificationClient
15+
@Mock
16+
private lateinit var notification: Notification
17+
private lateinit var notificationController: NotificationController
18+
19+
/**
20+
* initial setup, test environment
21+
*/
22+
@Before
23+
@Throws(Exception::class)
24+
fun setUp() {
25+
MockitoAnnotations.initMocks(this)
26+
notificationController = NotificationController(notificationClient)
27+
}
28+
29+
/**
30+
* Test get notifications
31+
*/
32+
@Test
33+
fun testGetNotifications() {
34+
notificationController.getNotifications(ArgumentMatchers.anyBoolean())
35+
verify(notificationClient).getNotifications(ArgumentMatchers.anyBoolean())
36+
}
37+
38+
/**
39+
* Test mark notifications as read
40+
*/
41+
@Test
42+
fun testMarkNotificationsAsRead() {
43+
notification.notificationId = "test"
44+
notificationController.markAsRead(notification)
45+
verify(notificationClient).markNotificationAsRead(eq("test"))
46+
}
47+
}

0 commit comments

Comments
 (0)