Skip to content

Commit c569b47

Browse files
Throw Retrofit HttpExceptions instead of IOExceptions in test fakes
1 parent b19c873 commit c569b47

File tree

8 files changed

+80
-16
lines changed

8 files changed

+80
-16
lines changed

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase1/FakeErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,20 @@ import com.lukaslechner.coroutineusecasesonandroid.mock.AndroidVersion
44
import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import com.lukaslechner.coroutineusecasesonandroid.mock.VersionFeatures
66
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
7-
import java.io.IOException
7+
import okhttp3.MediaType
8+
import okhttp3.ResponseBody
9+
import retrofit2.HttpException
10+
import retrofit2.Response
811

912
class FakeErrorApi() : MockApi {
1013

1114
override suspend fun getRecentAndroidVersions(): List<AndroidVersion> {
12-
throw IOException()
15+
throw HttpException(
16+
Response.error<List<AndroidVersion>>(
17+
500,
18+
ResponseBody.create(MediaType.parse("application/json"), "")
19+
)
20+
)
1321
}
1422

1523
override suspend fun getAndroidVersionFeatures(apiLevel: Int): VersionFeatures {

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase2/FakeFeaturesErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase2
22

33
import com.lukaslechner.coroutineusecasesonandroid.mock.*
4-
import java.io.IOException
4+
import okhttp3.MediaType
5+
import okhttp3.ResponseBody
6+
import retrofit2.HttpException
7+
import retrofit2.Response
58

69
class FakeFeaturesErrorApi : MockApi {
710

@@ -13,7 +16,12 @@ class FakeFeaturesErrorApi : MockApi {
1316
return when (apiLevel) {
1417
27 -> mockVersionFeaturesOreo
1518
28 -> mockVersionFeaturesPie
16-
29 -> throw IOException()
19+
29 -> throw HttpException(
20+
Response.error<List<AndroidVersion>>(
21+
500,
22+
ResponseBody.create(MediaType.parse("application/json"), "")
23+
)
24+
)
1725
else -> throw IllegalArgumentException("apiLevel not found")
1826
}
1927
}

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase2/FakeVersionsErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,20 @@ import com.lukaslechner.coroutineusecasesonandroid.mock.AndroidVersion
44
import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import com.lukaslechner.coroutineusecasesonandroid.mock.VersionFeatures
66
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
7-
import java.io.IOException
7+
import okhttp3.MediaType
8+
import okhttp3.ResponseBody
9+
import retrofit2.HttpException
10+
import retrofit2.Response
811

912
class FakeVersionsErrorApi : MockApi {
1013

1114
override suspend fun getRecentAndroidVersions(): List<AndroidVersion> {
12-
throw IOException()
15+
throw HttpException(
16+
Response.error<List<AndroidVersion>>(
17+
500,
18+
ResponseBody.create(MediaType.parse("application/json"), "")
19+
)
20+
)
1321
}
1422

1523
override suspend fun getAndroidVersionFeatures(apiLevel: Int): VersionFeatures {

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase3/FakeErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase3
33
import com.lukaslechner.coroutineusecasesonandroid.mock.*
44
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
55
import kotlinx.coroutines.delay
6-
import java.io.IOException
6+
import okhttp3.MediaType
7+
import okhttp3.ResponseBody
8+
import retrofit2.HttpException
9+
import retrofit2.Response
710

811
class FakeErrorApi(private val responseDelay: Long) : MockApi {
912

@@ -15,7 +18,12 @@ class FakeErrorApi(private val responseDelay: Long) : MockApi {
1518
delay(responseDelay)
1619
return when (apiLevel) {
1720
27 -> mockVersionFeaturesOreo
18-
28 -> throw IOException()
21+
28 -> throw HttpException(
22+
Response.error<List<AndroidVersion>>(
23+
500,
24+
ResponseBody.create(MediaType.parse("application/json"), "")
25+
)
26+
)
1927
29 -> mockVersionFeaturesAndroid10
2028
else -> throw IllegalArgumentException("apiLevel not found")
2129
}

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase4/FakeFeaturesErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ package com.lukaslechner.coroutineusecasesonandroid.usecases.coroutines.usecase4
22

33
import com.lukaslechner.coroutineusecasesonandroid.mock.*
44
import kotlinx.coroutines.delay
5-
import java.io.IOException
5+
import okhttp3.MediaType
6+
import okhttp3.ResponseBody
7+
import retrofit2.HttpException
8+
import retrofit2.Response
69

710
class FakeFeaturesErrorApi(private val responseDelay: Long) : MockApi {
811

@@ -15,7 +18,12 @@ class FakeFeaturesErrorApi(private val responseDelay: Long) : MockApi {
1518
delay(responseDelay)
1619
return when (apiLevel) {
1720
27 -> mockVersionFeaturesOreo
18-
28 -> throw IOException()
21+
28 -> throw HttpException(
22+
Response.error<List<AndroidVersion>>(
23+
500,
24+
ResponseBody.create(MediaType.parse("application/json"), "")
25+
)
26+
)
1927
29 -> mockVersionFeaturesAndroid10
2028
else -> throw IllegalArgumentException("apiLevel not found")
2129
}

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase4/FakeVersionsErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,21 @@ import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import com.lukaslechner.coroutineusecasesonandroid.mock.VersionFeatures
66
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
77
import kotlinx.coroutines.delay
8-
import java.io.IOException
8+
import okhttp3.MediaType
9+
import okhttp3.ResponseBody
10+
import retrofit2.HttpException
11+
import retrofit2.Response
912

1013
class FakeVersionsErrorApi(private val responseDelay: Long) : MockApi {
1114

1215
override suspend fun getRecentAndroidVersions(): List<AndroidVersion> {
1316
delay(responseDelay)
14-
throw IOException()
17+
throw throw HttpException(
18+
Response.error<List<AndroidVersion>>(
19+
500,
20+
ResponseBody.create(MediaType.parse("application/json"), "")
21+
)
22+
)
1523
}
1624

1725
override suspend fun getAndroidVersionFeatures(apiLevel: Int): VersionFeatures {

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase5/FakeVersionsErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,21 @@ import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import com.lukaslechner.coroutineusecasesonandroid.mock.VersionFeatures
66
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
77
import kotlinx.coroutines.delay
8-
import java.io.IOException
8+
import okhttp3.MediaType
9+
import okhttp3.ResponseBody
10+
import retrofit2.HttpException
11+
import retrofit2.Response
912

1013
class FakeVersionsErrorApi(private val responseDelay: Long) : MockApi {
1114

1215
override suspend fun getRecentAndroidVersions(): List<AndroidVersion> {
1316
delay(responseDelay)
14-
throw IOException()
17+
throw throw HttpException(
18+
Response.error<List<AndroidVersion>>(
19+
500,
20+
ResponseBody.create(MediaType.parse("application/json"), "")
21+
)
22+
)
1523
}
1624

1725
override suspend fun getAndroidVersionFeatures(apiLevel: Int): VersionFeatures {

app/src/test/java/com/lukaslechner/coroutineusecasesonandroid/usecases/coroutines/usecase6/FakeVersionsErrorApi.kt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ import com.lukaslechner.coroutineusecasesonandroid.mock.MockApi
55
import com.lukaslechner.coroutineusecasesonandroid.mock.VersionFeatures
66
import com.lukaslechner.coroutineusecasesonandroid.utils.EndpointShouldNotBeCalledException
77
import kotlinx.coroutines.delay
8-
import java.io.IOException
8+
import okhttp3.MediaType
9+
import okhttp3.ResponseBody
10+
import retrofit2.HttpException
11+
import retrofit2.Response
912

1013
class FakeVersionsErrorApi(private val responseDelay: Long) : MockApi {
1114

@@ -14,7 +17,12 @@ class FakeVersionsErrorApi(private val responseDelay: Long) : MockApi {
1417
override suspend fun getRecentAndroidVersions(): List<AndroidVersion> {
1518
requestCount++
1619
delay(responseDelay)
17-
throw IOException()
20+
throw throw HttpException(
21+
Response.error<List<AndroidVersion>>(
22+
500,
23+
ResponseBody.create(MediaType.parse("application/json"), "")
24+
)
25+
)
1826
}
1927

2028
override suspend fun getAndroidVersionFeatures(apiLevel: Int): VersionFeatures {

0 commit comments

Comments
 (0)