Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Increasing Test Coverage little bit more to 78.1% on Class #909

Merged
merged 4 commits into from
May 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion fuel/src/appleMain/kotlin/fuel/HttpUrlFetcher.kt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ internal class HttpUrlFetcher(private val sessionConfiguration: NSURLSessionConf
request.body?.let {
setHTTPBody(it.encode())
}
request.headers?.forEach {
request.headers.forEach {
setValue(it.value, it.key)
}
setCachePolicy(NSURLRequestReloadIgnoringCacheData)
Expand Down
2 changes: 1 addition & 1 deletion fuel/src/commonMain/kotlin/fuel/Fuels.kt
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,6 @@ public suspend fun Fuel.request(convertible: RequestConvertible): HttpResponse {
parameters = request.parameters
method = request.method
body = request.body
headers = request.headers ?: emptyMap()
headers = request.headers
}
}
2 changes: 1 addition & 1 deletion fuel/src/commonMain/kotlin/fuel/Request.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ public typealias Parameters = List<Pair<String, String>>
public class Request(
public val url: String,
public val parameters: Parameters?,
public val headers: Map<String, String>?,
public val headers: Map<String, String>,
public val body: String?,
public val method: String?
) {
Expand Down
30 changes: 30 additions & 0 deletions fuel/src/commonTest/kotlin/fuel/ParametersTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package fuel

import kotlin.test.Test
import kotlin.test.assertEquals

class ParametersTest {
@Test
fun parametersWithQuestionMarkOnURL() {
val test = "http://example.com?".fillURLWithParameters(listOf("test" to "url"))
assertEquals("http://example.com?&test=url", test)
}

@Test
fun parametersWithQuestionMarkOnParameter() {
val test = "http://example.com".fillURLWithParameters(listOf("?test" to "url"))
assertEquals("http://example.com?%3Ftest=url", test)
}

@Test
fun parametersWithEmptyParameter() {
val test = "http://example.com".fillURLWithParameters(listOf())
assertEquals("http://example.com?", test)
}

@Test
fun parametersWithQuestionMarkAndEmptyParameter() {
val test = "http://example.com?".fillURLWithParameters(listOf())
assertEquals("http://example.com?", test)
}
}
5 changes: 3 additions & 2 deletions fuel/src/commonTest/kotlin/fuel/RequestTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@ package fuel

import kotlin.test.Test
import kotlin.test.assertEquals
internal class RequestTest {

class RequestTest {
@Test
fun testAdd_headers() {
val request = Request.Builder().apply {
url = "http://example.com"
headers = mapOf("X-Test" to "true")
}.build()
assertEquals("true", request.headers?.get("X-Test"))
assertEquals("true", request.headers["X-Test"])
}

@Test
Expand Down
9 changes: 5 additions & 4 deletions fuel/src/jvmMain/kotlin/fuel/HttpUrlFetcher.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,11 @@ import okhttp3.Request

internal class HttpUrlFetcher(private val callFactory: Lazy<Call.Factory>) {
fun fetch(request: fuel.Request, builder: Request.Builder): Call {
val urlString = request.parameters?.let {
request.url.fillURLWithParameters(it)
} ?: request.url
builder.url(urlString)
if (request.parameters != null) {
builder.url(request.url.fillURLWithParameters(request.parameters))
} else {
builder.url(request.url)
}
return callFactory.value.newCall(builder.build())
}
}
2 changes: 1 addition & 1 deletion fuel/src/jvmMain/kotlin/fuel/JVMHttpLoader.kt
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ public class JVMHttpLoader(callFactoryLazy: Lazy<Call.Factory>) : HttpLoader {
private fun createRequestBuilder(request: Request, method: String): Builder {
val builder = Builder()
with(builder) {
request.headers?.forEach {
request.headers.forEach {
addHeader(it.key, it.value)
}

Expand Down
22 changes: 17 additions & 5 deletions fuel/src/jvmTest/kotlin/fuel/HttpLoaderBuilderTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import java.net.SocketTimeoutException
import java.util.concurrent.TimeUnit
import kotlin.test.assertNotNull

internal class HttpLoaderBuilderTest {
class HttpLoaderBuilderTest {

private lateinit var mockWebServer: MockWebServer

Expand All @@ -38,6 +38,18 @@ internal class HttpLoaderBuilderTest {
mockWebServer.shutdown()
}

@Test
fun `default okhttp settings with parameter`() = runBlocking {
mockWebServer.enqueue(MockResponse().setBody("Hello World 3"))
val response = JVMHttpLoader().get {
url = mockWebServer.url("hello").toString()
parameters = listOf("foo" to "bar")
}.body.string()
assertEquals("Hello World 3", response)

mockWebServer.shutdown()
}

@Test
fun `default okhttp settings with headers`() = runBlocking {
mockWebServer.enqueue(MockResponse().setBody("Hello World"))
Expand All @@ -51,7 +63,7 @@ internal class HttpLoaderBuilderTest {

@Test
fun `setting connect timeouts`() = runBlocking {
mockWebServer.enqueue(MockResponse().setBody("Hello World"))
mockWebServer.enqueue(MockResponse().setBody("Hello World 4"))

val httpLoader = FuelBuilder()
.config {
Expand All @@ -61,19 +73,19 @@ internal class HttpLoaderBuilderTest {
val response = httpLoader.get {
url = mockWebServer.url("hello").toString()
}.body.string()
assertEquals("Hello World", response)
assertEquals("Hello World 4", response)
}

@Test
fun `setting call timeouts`() = runBlocking {
mockWebServer.enqueue(MockResponse().setBody("Hello World 2"))
mockWebServer.enqueue(MockResponse().setBody("Hello World 5"))

val okhttp = OkHttpClient.Builder().callTimeout(30L, TimeUnit.MILLISECONDS).build()
val httpLoader = FuelBuilder().config(okhttp).build()
val response = httpLoader.get {
url = mockWebServer.url("hello2").toString()
}.body.string()
assertEquals("Hello World 2", response)
assertEquals("Hello World 5", response)
}

@Test
Expand Down
2 changes: 1 addition & 1 deletion fuel/src/jvmTest/kotlin/fuel/HttpLoaderTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test

internal class HttpLoaderTest {
class HttpLoaderTest {
private lateinit var httpLoader: HttpLoader
private lateinit var mockWebServer: MockWebServer

Expand Down
2 changes: 1 addition & 1 deletion fuel/src/jvmTest/kotlin/fuel/RoutingTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test

internal class RoutingTest {
class RoutingTest {

sealed class TestApi(private val host: String) : FuelRouting {
override val basePath = this.host
Expand Down
Loading