|
11 | 11 | import software.amazon.smithy.codegen.core.SymbolProvider;
|
12 | 12 | import software.amazon.smithy.model.Model;
|
13 | 13 | import software.amazon.smithy.model.node.Node;
|
| 14 | +import software.amazon.smithy.model.shapes.IntEnumShape; |
14 | 15 | import software.amazon.smithy.model.shapes.ListShape;
|
15 | 16 | import software.amazon.smithy.model.shapes.MemberShape;
|
16 | 17 | import software.amazon.smithy.model.shapes.Shape;
|
17 | 18 | import software.amazon.smithy.model.shapes.ShapeId;
|
18 | 19 | import software.amazon.smithy.model.shapes.StringShape;
|
19 | 20 | import software.amazon.smithy.model.shapes.StructureShape;
|
| 21 | +import software.amazon.smithy.model.traits.EnumDefinition; |
| 22 | +import software.amazon.smithy.model.traits.EnumTrait; |
20 | 23 | import software.amazon.smithy.model.traits.MediaTypeTrait;
|
21 | 24 |
|
22 | 25 | public class SymbolProviderTest {
|
@@ -189,4 +192,61 @@ public void usesLazyJsonStringForJsonMediaType() {
|
189 | 192 |
|
190 | 193 | assertThat(memberSymbol.getName(), equalTo("__LazyJsonString | string"));
|
191 | 194 | }
|
| 195 | + |
| 196 | + @Test |
| 197 | + public void addsUnknownStringEnumVariant() { |
| 198 | + EnumTrait trait = EnumTrait.builder() |
| 199 | + .addEnum(EnumDefinition.builder().value("FOO").name("FOO").build()) |
| 200 | + .addEnum(EnumDefinition.builder().value("BAR").name("BAR").build()) |
| 201 | + .build(); |
| 202 | + StringShape stringShape = StringShape.builder().id("foo.bar#enumString").addTrait(trait).build(); |
| 203 | + MemberShape member = MemberShape.builder().id("foo.bar#test$a").target(stringShape).build(); |
| 204 | + StructureShape struct = StructureShape.builder() |
| 205 | + .id("foo.bar#test") |
| 206 | + .addMember(member) |
| 207 | + .build(); |
| 208 | + Model model = Model.assembler() |
| 209 | + .addImport(getClass().getResource("simple-service.smithy")) |
| 210 | + .addShapes(struct, member, stringShape) |
| 211 | + .assemble() |
| 212 | + .unwrap(); |
| 213 | + TypeScriptSettings settings = TypeScriptSettings.from(model, Node.objectNodeBuilder() |
| 214 | + .withMember("package", Node.from("example")) |
| 215 | + .withMember("packageVersion", Node.from("1.0.0")) |
| 216 | + .build()); |
| 217 | + |
| 218 | + SymbolProvider provider = new SymbolVisitor(model, settings); |
| 219 | + Symbol memberSymbol = provider.toSymbol(member); |
| 220 | + |
| 221 | + assertThat(memberSymbol.getName(), equalTo("EnumString | string")); |
| 222 | + } |
| 223 | + |
| 224 | + @Test |
| 225 | + public void addsUnknownNumberIntEnumVariant() { |
| 226 | + IntEnumShape shape = IntEnumShape.builder() |
| 227 | + .id("com.foo#Foo") |
| 228 | + .addMember("BAR", 2) |
| 229 | + .addMember("BAZ", 5) |
| 230 | + .build(); |
| 231 | + MemberShape member = MemberShape.builder().id("foo.bar#test$a").target(shape).build(); |
| 232 | + StructureShape struct = StructureShape.builder() |
| 233 | + .id("foo.bar#test") |
| 234 | + .addMember(member) |
| 235 | + .build(); |
| 236 | + Model model = Model.assembler() |
| 237 | + .addImport(getClass().getResource("simple-service.smithy")) |
| 238 | + .addShapes(struct, member, shape) |
| 239 | + .assemble() |
| 240 | + .unwrap(); |
| 241 | + TypeScriptSettings settings = TypeScriptSettings.from(model, Node.objectNodeBuilder() |
| 242 | + .withMember("package", Node.from("example")) |
| 243 | + .withMember("packageVersion", Node.from("1.0.0")) |
| 244 | + .build()); |
| 245 | + |
| 246 | + SymbolProvider provider = new SymbolVisitor(model, settings); |
| 247 | + Symbol memberSymbol = provider.toSymbol(member); |
| 248 | + |
| 249 | + assertThat(memberSymbol.getName(), equalTo("Foo | number")); |
| 250 | + } |
| 251 | + |
192 | 252 | }
|
0 commit comments