Skip to content

Commit

Permalink
Merge branch 'main' into landonxjames/msrv-bump
Browse files Browse the repository at this point in the history
  • Loading branch information
landonxjames authored Dec 11, 2024
2 parents 52e6f03 + f1f9e8f commit c2f1878
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

package software.amazon.smithy.rustsdk.endpoints

import software.amazon.smithy.model.knowledge.TopDownIndex
import software.amazon.smithy.model.node.Node
import software.amazon.smithy.model.shapes.OperationShape
import software.amazon.smithy.model.shapes.ShapeId
Expand Down Expand Up @@ -222,4 +223,7 @@ class OperationInputTestGenerator(_ctx: ClientCodegenContext, private val test:
}

fun ClientCodegenContext.operationId(testOperationInput: EndpointTestOperationInput): ShapeId =
this.serviceShape.allOperations.first { it.name == testOperationInput.operationName }
TopDownIndex.of(this.model)
.getContainedOperations(this.serviceShape)
.map { it.toShapeId() }
.first { it.name == testOperationInput.operationName }
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,50 @@ class OperationInputTestGeneratorTests {
assertEquals("operations#Ping", operationId.toString())
}

@Test
fun `finds operation shape by name from nested operations`() {
val prefix = "\$version: \"2\""
val operationModel =
"""
$prefix
namespace operations.bells
resource Bell {
operations: [Ding]
}
operation Ding {}
""".trimIndent()
val serviceModel =
"""
$prefix
namespace service
use operations.bells#Bell
service MyService {
resources: [Bell]
}
""".trimIndent()

val model =
Model.assembler()
.discoverModels()
.addUnparsedModel("operation.smithy", operationModel)
.addUnparsedModel("main.smithy", serviceModel)
.assemble()
.unwrap()

val context = testClientCodegenContext(model)
val testOperationInput =
EndpointTestOperationInput.builder()
.operationName("Ding")
.build()

val operationId = context.operationId(testOperationInput)
assertEquals("operations.bells#Ding", operationId.toString())
}

@Test
fun `fails for operation name not found`() {
val model =
Expand Down

0 comments on commit c2f1878

Please sign in to comment.