@@ -684,6 +684,114 @@ public async Task SerializeConstAsEnumV20()
684684 Assert . False ( v2Node . AsObject ( ) . ContainsKey ( "const" ) ) ;
685685 }
686686
687+ [ Fact ]
688+ public async Task SerializeAdditionalPropertiesAsV2DoesNotEmit ( )
689+ {
690+ var expected = @"{ }" ;
691+ // Given
692+ var schema = new OpenApiSchema
693+ {
694+ AdditionalProperties = new OpenApiSchema ( )
695+ } ;
696+
697+ // When
698+ var actual = await schema . SerializeAsJsonAsync ( OpenApiSpecVersion . OpenApi2_0 ) ;
699+
700+ // Then
701+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
702+ }
703+
704+ [ Fact ]
705+ public async Task SerializeAdditionalPropertiesAllowedAsV2DefaultDoesNotEmit ( )
706+ {
707+ var expected = @"{ }" ;
708+ // Given
709+ var schema = new OpenApiSchema
710+ {
711+ AdditionalPropertiesAllowed = true
712+ } ;
713+
714+ // When
715+ var actual = await schema . SerializeAsJsonAsync ( OpenApiSpecVersion . OpenApi2_0 ) ;
716+
717+ // Then
718+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
719+ }
720+
721+ [ Fact ]
722+ public async Task SerializeAdditionalPropertiesAllowedAsV2FalseEmits ( )
723+ {
724+ var expected = @"{ ""additionalProperties"": false }" ;
725+ // Given
726+ var schema = new OpenApiSchema
727+ {
728+ AdditionalPropertiesAllowed = false
729+ } ;
730+
731+ // When
732+ var actual = await schema . SerializeAsJsonAsync ( OpenApiSpecVersion . OpenApi2_0 ) ;
733+
734+ // Then
735+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
736+ }
737+
738+ [ Theory ]
739+ [ InlineData ( OpenApiSpecVersion . OpenApi3_0 ) ]
740+ [ InlineData ( OpenApiSpecVersion . OpenApi3_1 ) ]
741+ [ InlineData ( OpenApiSpecVersion . OpenApi3_2 ) ]
742+ public async Task SerializeAdditionalPropertiesAllowedAsV3PlusDefaultDoesNotEmit ( OpenApiSpecVersion version )
743+ {
744+ var expected = @"{ }" ;
745+ // Given
746+ var schema = new OpenApiSchema
747+ {
748+ AdditionalPropertiesAllowed = true
749+ } ;
750+
751+ // When
752+ var actual = await schema . SerializeAsJsonAsync ( version ) ;
753+
754+ // Then
755+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
756+ }
757+
758+ [ Fact ]
759+ public async Task SerializeAdditionalPropertiesAllowedAsV3FalseEmits ( )
760+ {
761+ var expected = @"{ ""additionalProperties"": false }" ;
762+ // Given
763+ var schema = new OpenApiSchema
764+ {
765+ AdditionalPropertiesAllowed = false
766+ } ;
767+
768+ // When
769+ var actual = await schema . SerializeAsJsonAsync ( OpenApiSpecVersion . OpenApi3_0 ) ;
770+
771+ // Then
772+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
773+ }
774+
775+ [ Theory ]
776+ [ InlineData ( OpenApiSpecVersion . OpenApi3_0 ) ]
777+ [ InlineData ( OpenApiSpecVersion . OpenApi3_1 ) ]
778+ [ InlineData ( OpenApiSpecVersion . OpenApi3_2 ) ]
779+ public async Task SerializeAdditionalPropertiesAsV3PlusEmits ( OpenApiSpecVersion version )
780+ {
781+ var expected = @"{ ""additionalProperties"": { } }" ;
782+ // Given
783+ var schema = new OpenApiSchema
784+ {
785+ AdditionalProperties = new OpenApiSchema ( )
786+ } ;
787+
788+ // When
789+ var actual = await schema . SerializeAsJsonAsync ( version ) ;
790+
791+ // Then
792+ Assert . True ( JsonNode . DeepEquals ( JsonNode . Parse ( expected ) , JsonNode . Parse ( actual ) ) ) ;
793+ }
794+
687795
688796 internal class SchemaVisitor : OpenApiVisitorBase
689797 {
0 commit comments