@@ -396,7 +396,7 @@ public void specialHandlingForRequiredStructureMembers() {
396396 }
397397
398398 @ Test
399- public void specialHandlingForRequiredUnionMembers () {
399+ public void specialHandlingForRemovedRequiredUnionMembers () {
400400 SourceLocation memberSource = new SourceLocation ("b.smithy" , 3 , 4 );
401401 MemberShape memberA = MemberShape .builder ().id ("smithy.example#Baz$a" ).target ("smithy.api#String" ).build ();
402402 MemberShape memberB = MemberShape .builder ().id ("smithy.example#Baz$B" ).target ("smithy.api#String" ).build ();
@@ -418,7 +418,37 @@ public void specialHandlingForRequiredUnionMembers() {
418418
419419 List <ValidationEvent > events = TestHelper .findEvents (
420420 ModelDiff .compare (oldModel , newModel ),
421- "ChangedNullability" );
421+ "ChangedNullability.RemovedRequiredTrait.StructureOrUnion" );
422+
423+ assertThat (events , hasSize (1 ));
424+ assertThat (events .get (0 ).getSeverity (), is (Severity .WARNING ));
425+ assertThat (events .get (0 ).getSourceLocation (), equalTo (memberSource ));
426+ }
427+
428+ @ Test
429+ public void specialHandlingForAddedRequiredUnionMembers () {
430+ SourceLocation memberSource = new SourceLocation ("b.smithy" , 3 , 4 );
431+ MemberShape memberA = MemberShape .builder ().id ("smithy.example#Baz$a" ).target ("smithy.api#String" ).build ();
432+ MemberShape memberB = MemberShape .builder ().id ("smithy.example#Baz$B" ).target ("smithy.api#String" ).build ();
433+ UnionShape union = UnionShape .builder ().id ("smithy.example#Baz" ).addMember (memberA ).addMember (memberB ).build ();
434+ MemberShape memberBaz = MemberShape .builder ()
435+ .id ("smithy.example#Foo$baz" )
436+ .addTrait (new RequiredTrait ())
437+ .target (union )
438+ .source (memberSource )
439+ .build ();
440+ StructureShape struct = StructureShape .builder ().id ("smithy.example#Foo" ).addMember (memberBaz ).build ();
441+ Model newModel = Model .assembler ().addShapes (union , struct , memberA , memberB , memberBaz ).assemble ().unwrap ();
442+ Model oldModel = ModelTransformer .create ()
443+ .replaceShapes (newModel ,
444+ ListUtils .of (
445+ Shape .shapeToBuilder (newModel .expectShape (ShapeId .from ("smithy.example#Foo$baz" )))
446+ .removeTrait (RequiredTrait .ID )
447+ .build ()));
448+
449+ List <ValidationEvent > events = TestHelper .findEvents (
450+ ModelDiff .compare (oldModel , newModel ),
451+ "ChangedNullability.AddedRequiredTrait.StructureOrUnion" );
422452
423453 assertThat (events , hasSize (1 ));
424454 assertThat (events .get (0 ).getSeverity (), is (Severity .WARNING ));
0 commit comments