From d2fb3b36e79a9e8fe584659a3ac7f486b3ac5590 Mon Sep 17 00:00:00 2001 From: Ashish Kumar Date: Wed, 4 Dec 2019 12:57:06 +0530 Subject: [PATCH] Added unit-tests for PageEditClient & ThanksClient (#3268) --- .../nrw/commons/actions/PageEditClientTest.kt | 62 +++++++++++++++++++ .../nrw/commons/actions/ThanksClientTest.kt | 54 ++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt create mode 100644 app/src/test/kotlin/fr/free/nrw/commons/actions/ThanksClientTest.kt diff --git a/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt new file mode 100644 index 000000000..aab1a8f81 --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/actions/PageEditClientTest.kt @@ -0,0 +1,62 @@ +package fr.free.nrw.commons.actions + +import com.nhaarman.mockito_kotlin.eq +import com.nhaarman.mockito_kotlin.verify +import org.junit.Before +import org.junit.Test +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.MockitoAnnotations +import org.wikipedia.csrf.CsrfTokenClient +import org.wikipedia.dataclient.Service + +class PageEditClientTest { + @Mock + private lateinit var csrfTokenClient: CsrfTokenClient + @Mock + private lateinit var pageEditInterface: PageEditInterface + @Mock + private lateinit var service: Service + + private lateinit var pageEditClient: PageEditClient + + /** + * initial setup, test environment + */ + @Before + @Throws(Exception::class) + fun setUp() { + MockitoAnnotations.initMocks(this) + pageEditClient = PageEditClient(csrfTokenClient, pageEditInterface, service) + } + + /** + * Test page edit + */ + @Test + fun testEdit() { + Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test") + pageEditClient.edit("test", "test", "test") + verify(pageEditInterface).postEdit(eq("test"), eq("test"), eq("test"), eq("test")) + } + + /** + * Test appendEdit + */ + @Test + fun testAppendEdit() { + Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test") + pageEditClient.appendEdit("test", "test", "test") + verify(pageEditInterface).postAppendEdit(eq("test"), eq("test"), eq("test"), eq("test")) + } + + /** + * Test prependEdit + */ + @Test + fun testPrependEdit() { + Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test") + pageEditClient.prependEdit("test", "test", "test") + verify(pageEditInterface).postPrependEdit(eq("test"), eq("test"), eq("test"), eq("test")) + } +} \ No newline at end of file diff --git a/app/src/test/kotlin/fr/free/nrw/commons/actions/ThanksClientTest.kt b/app/src/test/kotlin/fr/free/nrw/commons/actions/ThanksClientTest.kt new file mode 100644 index 000000000..86d539d1f --- /dev/null +++ b/app/src/test/kotlin/fr/free/nrw/commons/actions/ThanksClientTest.kt @@ -0,0 +1,54 @@ +package fr.free.nrw.commons.actions + +import com.nhaarman.mockito_kotlin.eq +import com.nhaarman.mockito_kotlin.verify +import fr.free.nrw.commons.CommonsApplication +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.ArgumentMatchers +import org.mockito.Mock +import org.mockito.Mockito +import org.mockito.MockitoAnnotations +import org.powermock.api.mockito.PowerMockito +import org.powermock.core.classloader.annotations.PrepareForTest +import org.powermock.modules.junit4.PowerMockRunner +import org.wikipedia.csrf.CsrfTokenClient +import org.wikipedia.dataclient.Service + +@RunWith(PowerMockRunner::class) +@PrepareForTest(CommonsApplication::class) +class ThanksClientTest { + @Mock + private lateinit var csrfTokenClient: CsrfTokenClient + @Mock + private lateinit var service: Service + + @Mock + private lateinit var commonsApplication: CommonsApplication + + private lateinit var thanksClient: ThanksClient + + /** + * initial setup, test environment + */ + @Before + @Throws(Exception::class) + fun setUp() { + MockitoAnnotations.initMocks(this) + PowerMockito.mockStatic(CommonsApplication::class.java) + PowerMockito.`when`(CommonsApplication.getInstance()).thenReturn(commonsApplication) + thanksClient = ThanksClient(csrfTokenClient, service) + } + + /** + * Test thanks + */ + @Test + fun testThanks() { + Mockito.`when`(csrfTokenClient.tokenBlocking).thenReturn("test") + Mockito.`when`(commonsApplication.userAgent).thenReturn("test") + thanksClient.thank(1L) + verify(service).thank(ArgumentMatchers.anyString(), ArgumentMatchers.any(), eq("test"), eq("test")) + } +} \ No newline at end of file