|
13 | 13 | import software.amazon.smithy.model.shapes.ShapeId; |
14 | 14 | import software.amazon.smithy.model.shapes.StringShape; |
15 | 15 | import software.amazon.smithy.model.shapes.StructureShape; |
| 16 | +import software.amazon.smithy.model.traits.PrivateTrait; |
| 17 | +import software.amazon.smithy.model.traits.TraitDefinition; |
16 | 18 |
|
17 | 19 | public class DeconflictingStrategyTest { |
18 | 20 | @Test |
@@ -97,4 +99,27 @@ public void excludesPrivatePreludeShapes() { |
97 | 99 | .createDefaultStrategy(model, new JsonSchemaConfig(), propertyNamingStrategy, alwaysTrue()); |
98 | 100 | assertThat(strategy.toPointer(a.getId()), equalTo("#/definitions/Severity")); |
99 | 101 | } |
| 102 | + |
| 103 | + @Test |
| 104 | + public void excludesTraitDefinitions() { |
| 105 | + StringShape member = StringShape.builder().id("com.foo#String").build(); |
| 106 | + StructureShape matcher = StructureShape.builder() |
| 107 | + .id("com.foo#Matcher") |
| 108 | + .addMember("member", member.getId()) |
| 109 | + .build(); |
| 110 | + StructureShape matcherForTrait = StructureShape.builder() |
| 111 | + .id("com.bar#Matcher") |
| 112 | + .addTrait(new PrivateTrait()) |
| 113 | + .build(); |
| 114 | + StructureShape trait = StructureShape.builder() |
| 115 | + .id("com.bar#Trait") |
| 116 | + .addTrait(TraitDefinition.builder().build()) |
| 117 | + .addMember("matcher", matcherForTrait.toShapeId()) |
| 118 | + .build(); |
| 119 | + Model model = Model.assembler().addShapes(trait, matcherForTrait, matcher, member).assemble().unwrap(); |
| 120 | + PropertyNamingStrategy propertyNamingStrategy = PropertyNamingStrategy.createDefaultStrategy(); |
| 121 | + RefStrategy strategy = RefStrategy |
| 122 | + .createDefaultStrategy(model, new JsonSchemaConfig(), propertyNamingStrategy, alwaysTrue()); |
| 123 | + assertThat(strategy.toPointer(matcher.getId()), equalTo("#/definitions/Matcher")); |
| 124 | + } |
100 | 125 | } |
0 commit comments