mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Added unit-tests for NotificationClient & NotificationController (#3274)
This commit is contained in:
parent
f27749fa51
commit
6e485d687c
2 changed files with 119 additions and 0 deletions
|
|
@ -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())
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -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"))
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue