11package 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