Skip to content

Commit 83ddf82

Browse files
committed
Refactor ProtocolTest to use Kotest matchers for improved readability and null safety
1 parent de02a44 commit 83ddf82

File tree

1 file changed

+21
-19
lines changed
  • kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/shared

1 file changed

+21
-19
lines changed

kotlin-sdk-core/src/commonTest/kotlin/io/modelcontextprotocol/kotlin/sdk/shared/ProtocolTest.kt

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package io.modelcontextprotocol.kotlin.sdk.shared
22

3+
import io.kotest.matchers.collections.shouldContainExactly
4+
import io.kotest.matchers.nulls.shouldNotBeNull
5+
import io.kotest.matchers.shouldBe
36
import io.modelcontextprotocol.kotlin.sdk.types.CustomRequest
47
import io.modelcontextprotocol.kotlin.sdk.types.EmptyResult
58
import io.modelcontextprotocol.kotlin.sdk.types.JSONRPCMessage
@@ -23,7 +26,6 @@ import kotlinx.serialization.json.jsonObject
2326
import kotlinx.serialization.json.jsonPrimitive
2427
import kotlin.test.BeforeTest
2528
import kotlin.test.Test
26-
import kotlin.test.assertEquals
2729

2830
class ProtocolTest {
2931
private lateinit var protocol: TestProtocol
@@ -56,13 +58,13 @@ class ProtocolTest {
5658
}
5759

5860
val sent = transport.awaitRequest()
59-
val params = requireNotNull(sent.params).jsonObject
60-
val meta = params["_meta"]!!.jsonObject
61+
val params = sent.params?.jsonObject.shouldNotBeNull()
62+
val meta = params["_meta"]?.jsonObject.shouldNotBeNull()
6163

62-
assertEquals("test://resource", params["uri"]!!.jsonPrimitive.content)
63-
assertEquals("customValue", meta["customField"]!!.jsonPrimitive.content)
64-
assertEquals(123, meta["anotherField"]!!.jsonPrimitive.int)
65-
assertEquals(McpJson.encodeToJsonElement(sent.id), meta["progressToken"])
64+
params["uri"]?.jsonPrimitive?.content shouldBe "test://resource"
65+
meta["customField"]?.jsonPrimitive?.content shouldBe "customValue"
66+
meta["anotherField"]?.jsonPrimitive?.int shouldBe 123
67+
meta["progressToken"] shouldBe McpJson.encodeToJsonElement(sent.id)
6668

6769
transport.deliver(JSONRPCResponse(sent.id, EmptyResult()))
6870
inFlight.await()
@@ -86,11 +88,11 @@ class ProtocolTest {
8688
}
8789

8890
val sent = transport.awaitRequest()
89-
val params = requireNotNull(sent.params).jsonObject
90-
val meta = params["_meta"]!!.jsonObject
91+
val params = sent.params?.jsonObject.shouldNotBeNull()
92+
val meta = params["_meta"]?.jsonObject.shouldNotBeNull()
9193

92-
assertEquals("test://resource", params["uri"]!!.jsonPrimitive.content)
93-
assertEquals(McpJson.encodeToJsonElement(sent.id), meta["progressToken"])
94+
params["uri"]?.jsonPrimitive?.content shouldBe "test://resource"
95+
meta["progressToken"] shouldBe McpJson.encodeToJsonElement(sent.id)
9496

9597
transport.deliver(JSONRPCResponse(sent.id, EmptyResult()))
9698
inFlight.await()
@@ -114,11 +116,11 @@ class ProtocolTest {
114116
}
115117

116118
val sent = transport.awaitRequest()
117-
val params = requireNotNull(sent.params).jsonObject
118-
val meta = params["_meta"]!!.jsonObject
119+
val params = sent.params?.jsonObject.shouldNotBeNull()
120+
val meta = params["_meta"]?.jsonObject.shouldNotBeNull()
119121

120-
assertEquals(originalMeta, meta)
121-
assertEquals("test://resource", params["uri"]!!.jsonPrimitive.content)
122+
meta shouldBe originalMeta
123+
params["uri"]?.jsonPrimitive?.content shouldBe "test://resource"
122124

123125
transport.deliver(JSONRPCResponse(sent.id, EmptyResult()))
124126
inFlight.await()
@@ -140,11 +142,11 @@ class ProtocolTest {
140142
}
141143

142144
val sent = transport.awaitRequest()
143-
val params = requireNotNull(sent.params).jsonObject
144-
val meta = params["_meta"]!!.jsonObject
145+
val params = sent.params?.jsonObject.shouldNotBeNull()
146+
val meta = params["_meta"]?.jsonObject.shouldNotBeNull()
145147

146-
assertEquals(setOf("_meta"), params.keys)
147-
assertEquals(McpJson.encodeToJsonElement(sent.id), meta["progressToken"])
148+
params.keys shouldContainExactly setOf("_meta")
149+
meta["progressToken"] shouldBe McpJson.encodeToJsonElement(sent.id)
148150

149151
transport.deliver(JSONRPCResponse(sent.id, EmptyResult()))
150152
inFlight.await()

0 commit comments

Comments
 (0)