@@ -9,6 +9,7 @@ import org.junit.Before
99import org.junit.Test
1010import org.junit.runner.RunWith
1111import org.mockito.Mock
12+ import org.mockito.Mockito.mockStatic
1213import org.mockito.junit.MockitoJUnitRunner
1314import org.mockito.kotlin.KArgumentCaptor
1415import org.mockito.kotlin.any
@@ -34,12 +35,15 @@ import org.wordpress.android.fluxc.network.rest.wpcom.site.SiteWPComRestResponse
3435import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.ERROR
3536import org.wordpress.android.fluxc.network.rest.wpcom.site.StatusType.SUCCESS
3637import org.wordpress.android.fluxc.store.SiteStore.PostFormatsErrorType
38+ import org.wordpress.android.fluxc.store.SiteStore.SiteErrorType
3739import org.wordpress.android.fluxc.store.SiteStore.SiteFilter.WPCOM
3840import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility
3941import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.COMING_SOON
4042import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.PUBLIC
4143import org.wordpress.android.fluxc.test
44+ import org.wordpress.android.fluxc.tools.initCoroutineEngine
4245import org.wordpress.android.util.DateTimeUtils
46+ import org.wordpress.android.util.UrlUtils
4347import 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