Skip to content
This repository was archived by the owner on Feb 4, 2025. It is now read-only.

Commit 9d4aee8

Browse files
Add a unit test
1 parent c27749d commit 9d4aee8

File tree

1 file changed

+33
-9
lines changed

1 file changed

+33
-9
lines changed

example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.junit.Before
99
import org.junit.Test
1010
import org.junit.runner.RunWith
1111
import org.mockito.Mock
12+
import org.mockito.Mockito.mockStatic
1213
import org.mockito.junit.MockitoJUnitRunner
1314
import org.mockito.kotlin.KArgumentCaptor
1415
import org.mockito.kotlin.any
@@ -34,12 +35,15 @@ import org.wordpress.android.fluxc.network.rest.wpcom.site.SiteWPComRestResponse
3435
import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.ERROR
3536
import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.SUCCESS
3637
import org.wordpress.android.fluxc.store.SiteStore.PostFormatsErrorType
38+
import org.wordpress.android.fluxc.store.SiteStore.SiteErrorType
3739
import org.wordpress.android.fluxc.store.SiteStore.SiteFilter.WPCOM
3840
import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility
3941
import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.COMING_SOON
4042
import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.PUBLIC
4143
import org.wordpress.android.fluxc.test
44+
import org.wordpress.android.fluxc.tools.initCoroutineEngine
4245
import org.wordpress.android.util.DateTimeUtils
46+
import org.wordpress.android.util.UrlUtils
4347
import kotlin.test.assertNotNull
4448

4549
@RunWith(MockitoJUnitRunner::class)
@@ -63,13 +67,14 @@ class SiteRestClientTest {
6367
paramsCaptor = argumentCaptor()
6468
bodyCaptor = argumentCaptor()
6569
restClient = SiteRestClient(
66-
null,
67-
dispatcher,
68-
requestQueue,
69-
appSecrets,
70-
wpComGsonRequestBuilder,
71-
accessToken,
72-
userAgent
70+
appContext = null,
71+
dispatcher = dispatcher,
72+
requestQueue = requestQueue,
73+
appSecrets = appSecrets,
74+
wpComGsonRequestBuilder = wpComGsonRequestBuilder,
75+
coroutineEngine = initCoroutineEngine(),
76+
accessToken = accessToken,
77+
userAgent = userAgent
7378
)
7479
whenever(site.siteId).thenReturn(siteId)
7580
}
@@ -610,6 +615,22 @@ class SiteRestClientTest {
610615
}
611616
}
612617

618+
@Test
619+
fun `given a suspended WPCom website, when fetching site info, then return correct error`() = test {
620+
val urlUtilsMock = mockStatic(UrlUtils::class.java)
621+
whenever(UrlUtils.addUrlSchemeIfNeeded(any(), any())).thenAnswer { it.arguments[0] as String }
622+
val error = WPComGsonNetworkError(BaseNetworkError(GenericErrorType.INVALID_RESPONSE, "")).apply {
623+
apiError = "connection_disabled"
624+
}
625+
initGetResponse(ConnectSiteInfoResponse::class.java, null, error)
626+
627+
val result = restClient.fetchConnectSiteInfoSync("test.com")
628+
629+
assertThat(result.error).isNotNull
630+
assertThat(result.error!!.type).isEqualTo(SiteErrorType.WPCOM_SITE_SUSPENDED)
631+
urlUtilsMock.close()
632+
}
633+
613634
private suspend fun initSiteResponse(
614635
data: SiteWPComRestResponse? = null,
615636
error: WPComGsonNetworkError? = null
@@ -654,10 +675,13 @@ class SiteRestClientTest {
654675

655676
private suspend fun <T> initGetResponse(
656677
clazz: Class<T>,
657-
data: T,
678+
data: T?,
658679
error: WPComGsonNetworkError? = null
659680
): Response<T> {
660-
val response = if (error != null) Response.Error(error) else Success(data)
681+
if (error == null && data == null) {
682+
error("Either data or error must be provided")
683+
}
684+
val response = if (error != null) Response.Error(error) else Success<T>(data!!)
661685
whenever(
662686
wpComGsonRequestBuilder.syncGetRequest(
663687
eq(restClient),

0 commit comments

Comments
 (0)