Skip to content

Commit 5bb2e66

Browse files
committed
fix emissions of streaming messages halting run
1 parent 0030ff2 commit 5bb2e66

File tree

3 files changed

+31
-5
lines changed

3 files changed

+31
-5
lines changed

preflight-core/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ tasks.register("publishAllMavenLocal") {
2626

2727
allprojects {
2828
group = "com.orbitalhq.preflight"
29-
version = "0.1.0-M1"
29+
version = "0.1.0-M2"
3030

3131
repositories {
3232
mavenCentral()

preflight-core/preflight-runtime/src/main/kotlin/com/orbitalhq/preflight/dsl/MarkdownSpec.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.orbitalhq.preflight.dsl
22

33
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
4+
import com.orbitalhq.models.Provided
5+
import com.orbitalhq.models.TypedInstance
6+
import com.orbitalhq.models.json.right
47
import com.orbitalhq.preflight.spec.StubMode
58
import com.orbitalhq.preflight.spec.TestSpec
69
import com.orbitalhq.preflight.spec.TestSpecReader
10+
import com.orbitalhq.schemas.fqn
711
import com.orbitalhq.stubbing.StubService
812
import io.kotest.matchers.shouldBe
13+
import kotlinx.coroutines.flow.flowOf
914
import java.nio.file.Files
1015
import java.nio.file.Path
1116
import java.nio.file.Paths
@@ -48,9 +53,9 @@ private fun OrbitalSpec.registerSpec(
4853
}
4954
}
5055
StubMode.STREAM -> {
51-
val emitter = stubService.addResponseEmitter(stub.operationName)
52-
stub.messages?.forEach { message ->
53-
emitter.next(message)
56+
stubService.addResponseFlow(stub.operationName) { _,_ ->
57+
val messages = messagesAsTypedInstanceResponses(stub, stubService.schema!!)
58+
flowOf(*messages.toTypedArray())
5459
}
5560
}
5661
}

preflight-core/preflight-runtime/src/main/kotlin/com/orbitalhq/preflight/dsl/StubHelper.kt

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
package com.orbitalhq.preflight.dsl
22

3+
import arrow.core.Either
4+
import com.orbitalhq.models.Provided
5+
import com.orbitalhq.models.TypedInstance
6+
import com.orbitalhq.models.json.right
7+
import com.orbitalhq.preflight.spec.Stub
8+
import com.orbitalhq.query.StreamErrorMessage
9+
import com.orbitalhq.schemas.Schema
10+
import com.orbitalhq.schemas.fqn
11+
import kotlin.collections.map
12+
import kotlin.collections.orEmpty
13+
314
/**
415
* Generates a Stub response builder for an operation with
516
* the provided name.
@@ -20,4 +31,14 @@ data class StubResponseBuilder(val operationName: String) {
2031
}
2132
}
2233

23-
data class StubScenario(val operationName: String, val response: String)
34+
data class StubScenario(val operationName: String, val response: String)
35+
36+
fun messagesAsTypedInstanceResponses(stub: Stub, schema: Schema): List<Either<StreamErrorMessage, TypedInstance>> {
37+
val (_,operation) = schema.remoteOperation(stub.operationName.fqn())
38+
val streamType = operation.returnType.typeParameters[0]
39+
val messagesAsTypedInstances = stub.messages.orEmpty().map { json ->
40+
TypedInstance.from(streamType, json, source = Provided, schema = schema)
41+
.right()
42+
}
43+
return messagesAsTypedInstances
44+
}

0 commit comments

Comments
 (0)