@@ -8,10 +8,12 @@ import okhttp3.OkHttpClient
8
8
import okhttp3.mockwebserver.MockWebServer
9
9
import org.junit.After
10
10
import org.junit.Test
11
+ import retrofit2.HttpException
11
12
import retrofit2.Retrofit
12
13
import retrofit2.converter.gson.GsonConverterFactory
13
14
import java.util.concurrent.TimeUnit
14
15
import kotlin.test.assertEquals
16
+ import kotlin.test.assertFailsWith
15
17
16
18
class GithubApiTest {
17
19
@@ -68,6 +70,18 @@ class GithubApiTest {
68
70
assertEquals(" /users?since=51234842" , request.path)
69
71
}
70
72
73
+ @Test
74
+ fun `Given 404 response when fetching users the throws HTTPException` (){
75
+ mockWebService.enqueueResponse(
76
+ fileName = " not-found.json" ,
77
+ code = 404
78
+ )
79
+ val exception = assertFailsWith<HttpException > {
80
+ runBlocking { api.getUsers() }
81
+ }
82
+ assertEquals(404 ,exception.code())
83
+ }
84
+
71
85
@Test
72
86
fun `Given 200 response When fetching user Then returns user correctly` () {
73
87
// Given
@@ -146,4 +160,18 @@ class GithubApiTest {
146
160
assertEquals(expected, actual)
147
161
assertEquals(" /users/$userId /repos" , request.path)
148
162
}
149
- }
163
+
164
+ @Test
165
+ fun `Given 404 When fetching user Then throws HttpException` (){
166
+ val userId = " nonexistentuser"
167
+ mockWebService.enqueueResponse(
168
+ fileName = " not-found.json" ,
169
+ code = 404
170
+ )
171
+ val exception = assertFailsWith<HttpException > {
172
+ runBlocking { api.getUser(userId) }
173
+ }
174
+ assertEquals(404 ,exception.code())
175
+ assertEquals(" /users/$userId " , mockWebService.takeRequest().path)
176
+ }
177
+ }
0 commit comments