Minimize `AdditionalErrorsDecoratorTest.kt` (#1339)

This commit is contained in:
david-perez 2022-05-10 18:14:20 +02:00 committed by GitHub
parent ad569b17d0
commit 45323f7455
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 22 additions and 43 deletions

View File

@ -9,69 +9,48 @@ import io.kotest.matchers.shouldBe
import org.junit.jupiter.api.Test
import software.amazon.smithy.model.shapes.OperationShape
import software.amazon.smithy.model.shapes.ServiceShape
import software.amazon.smithy.model.shapes.ShapeId
import software.amazon.smithy.rust.codegen.server.smithy.testutil.serverTestSymbolProvider
import software.amazon.smithy.rust.codegen.smithy.transformers.OperationNormalizer
import software.amazon.smithy.rust.codegen.testutil.asSmithyModel
import software.amazon.smithy.rust.codegen.util.lookup
class AdditionalErrorsDecoratorTest {
private val baseModel = """
namespace smithy.test
use aws.protocols#restJson1
@restJson1
@title("Test")
service Test {
version: "2022-01-01",
operations: [
Infallible,
Fallible
]
}
namespace test
operation Infallible {
input: InfallibleInput,
output: InfallibleOutput
input: InputOutput,
output: InputOutput
}
structure InfallibleInput {}
structure InfallibleOutput {}
operation Fallible {
input: FallibleInput,
output: FallibleOutput,
errors: [FallibleError]
input: InputOutput,
output: InputOutput,
errors: [AnError]
}
structure FallibleInput {}
structure FallibleOutput {}
structure InputOutput { }
@error("client")
structure FallibleError {}
structure AnError { }
""".asSmithyModel()
private val model = OperationNormalizer.transform(baseModel)
private val symbolProvider = serverTestSymbolProvider(model)
private val service = ServiceShape.builder().id("smithy.test#Test").build()
@Test
fun `add InternalServerError to infallible operations only`() {
val service = ServiceShape.builder().id("smithy.test#Test").build()
val infallibleId = ShapeId.from("smithy.test#Infallible")
val fallibleId = ShapeId.from("smithy.test#Fallible")
model.expectShape(infallibleId, OperationShape::class.java).errors.isEmpty() shouldBe true
model.expectShape(fallibleId, OperationShape::class.java).errors.size shouldBe 1
val model = AddInternalServerErrorToInfallibleOpsDecorator().transformModel(service, model)
model.expectShape(infallibleId, OperationShape::class.java).errors.isEmpty() shouldBe false
model.expectShape(infallibleId, OperationShape::class.java).errors.size shouldBe 1
model.expectShape(fallibleId, OperationShape::class.java).errors.size shouldBe 1
model.lookup<OperationShape>("test#Infallible").errors.isEmpty() shouldBe true
model.lookup<OperationShape>("test#Fallible").errors.size shouldBe 1
val transformedModel = AddInternalServerErrorToInfallibleOpsDecorator().transformModel(service, model)
transformedModel.lookup<OperationShape>("test#Infallible").errors.size shouldBe 1
transformedModel.lookup<OperationShape>("test#Fallible").errors.size shouldBe 1
}
@Test
fun `add InternalServerError to all model operations`() {
val service = ServiceShape.builder().id("smithy.test#Test").build()
val infallibleId = ShapeId.from("smithy.test#Infallible")
val fallibleId = ShapeId.from("smithy.test#Fallible")
model.expectShape(infallibleId, OperationShape::class.java).errors.isEmpty() shouldBe true
model.expectShape(fallibleId, OperationShape::class.java).errors.size shouldBe 1
val model = AddInternalServerErrorToAllOpsDecorator().transformModel(service, model)
model.expectShape(infallibleId, OperationShape::class.java).errors.isEmpty() shouldBe false
model.expectShape(infallibleId, OperationShape::class.java).errors.size shouldBe 1
model.expectShape(fallibleId, OperationShape::class.java).errors.size shouldBe 2
model.lookup<OperationShape>("test#Infallible").errors.isEmpty() shouldBe true
model.lookup<OperationShape>("test#Fallible").errors.size shouldBe 1
val transformedModel = AddInternalServerErrorToAllOpsDecorator().transformModel(service, model)
transformedModel.lookup<OperationShape>("test#Infallible").errors.size shouldBe 1
transformedModel.lookup<OperationShape>("test#Fallible").errors.size shouldBe 2
}
}