Added unit-tests for NotificationClient & NotificationController (#3274)

This commit is contained in:
Ashish Kumar 2019-12-05 16:04:07 +05:30 committed by Josephine Lim
parent f27749fa51
commit 6e485d687c
2 changed files with 119 additions and 0 deletions

View file

@ -0,0 +1,72 @@
package fr.free.nrw.commons.notification
import com.nhaarman.mockito_kotlin.eq
import io.reactivex.Observable
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentMatchers
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.wikipedia.csrf.CsrfTokenClient
import org.wikipedia.dataclient.Service
import org.wikipedia.dataclient.mwapi.MwQueryResponse
import org.wikipedia.dataclient.mwapi.MwQueryResult
import org.wikipedia.notifications.Notification
class NotificationClientTest {
@Mock
private lateinit var service: Service
@Mock
private lateinit var csrfTokenClient: CsrfTokenClient
@Mock
private lateinit var mQueryResponse: MwQueryResponse
@Mock
private lateinit var mQueryResult: MwQueryResult
@Mock
private lateinit var mQueryResultNotificationsList: MwQueryResult.NotificationList
@Mock
private lateinit var notificationsList: List<Notification>
private lateinit var notificationClient: NotificationClient
/**
* initial setup, test environment
*/
@Before
@Throws(Exception::class)
fun setUp() {
MockitoAnnotations.initMocks(this)
notificationClient = NotificationClient(service, csrfTokenClient)
}
/**
* Test getNotifications
*/
@Test
fun getNotificationTest() {
Mockito.`when`(service.getAllNotifications(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.any())).thenReturn(Observable.just(mQueryResponse))
Mockito.`when`(mQueryResponse.query()).thenReturn(mQueryResult)
Mockito.`when`(mQueryResult.notifications()).thenReturn(mQueryResultNotificationsList)
Mockito.`when`(mQueryResultNotificationsList.list()).thenReturn(notificationsList)
notificationClient.getNotifications(true)
verify(service).getAllNotifications(eq("wikidatawiki|commonswiki|enwiki"), eq("read"), eq(null))
}
/**
* Test mark Notifications As Read
*/
@Test
fun markNotificationAsReadTest() {
Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test")
Mockito.`when`(service.markRead(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())).thenReturn(Observable.just(mQueryResponse))
Mockito.`when`(mQueryResponse.success()).thenReturn(true)
notificationClient.markNotificationAsRead("test")
verify(service).markRead(ArgumentMatchers.anyString(), ArgumentMatchers.anyString(), ArgumentMatchers.anyString())
}
}

View file

@ -0,0 +1,47 @@
package fr.free.nrw.commons.notification
import com.nhaarman.mockito_kotlin.verify
import org.junit.Before
import org.junit.Test
import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.eq
import org.mockito.Mock
import org.mockito.MockitoAnnotations
class NotificationControllerTest {
@Mock
private lateinit var notificationClient: NotificationClient
@Mock
private lateinit var notification: Notification
private lateinit var notificationController: NotificationController
/**
* initial setup, test environment
*/
@Before
@Throws(Exception::class)
fun setUp() {
MockitoAnnotations.initMocks(this)
notificationController = NotificationController(notificationClient)
}
/**
* Test get notifications
*/
@Test
fun testGetNotifications() {
notificationController.getNotifications(ArgumentMatchers.anyBoolean())
verify(notificationClient).getNotifications(ArgumentMatchers.anyBoolean())
}
/**
* Test mark notifications as read
*/
@Test
fun testMarkNotificationsAsRead() {
notification.notificationId = "test"
notificationController.markAsRead(notification)
verify(notificationClient).markNotificationAsRead(eq("test"))
}
}