@@ -476,53 +476,109 @@ public void testGetSchemaItemsWith31Spec() {
476476 }
477477
478478 @ Test
479- public void simplyOneOfAnyOfWithOnlyOneNonNullSubSchema () {
479+ public void simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema () {
480480 OpenAPI openAPI = TestUtils .parseSpec ("src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml" );
481481 Schema schema ;
482482 List <Schema > subSchemas ;
483483
484484 Schema anyOfWithSeveralSubSchemasButSingleNonNull = ModelUtils .getSchema (openAPI , "AnyOfTest" );
485485 subSchemas = anyOfWithSeveralSubSchemasButSingleNonNull .getAnyOf ();
486- schema = ModelUtils .simplyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , anyOfWithSeveralSubSchemasButSingleNonNull , subSchemas );
486+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , anyOfWithSeveralSubSchemasButSingleNonNull , subSchemas );
487487 assertNull (schema .getOneOf ());
488488 assertNull (schema .getAnyOf ());
489489 assertTrue (schema .getNullable ());
490490 assertEquals ("string" , schema .getType ());
491491
492492 Schema anyOfWithSingleNonNullSubSchema = ModelUtils .getSchema (openAPI , "Parent" );
493493 subSchemas = ((Schema ) anyOfWithSingleNonNullSubSchema .getProperties ().get ("number" )).getAnyOf ();
494- schema = ModelUtils .simplyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , anyOfWithSingleNonNullSubSchema , subSchemas );
494+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , anyOfWithSingleNonNullSubSchema , subSchemas );
495495 assertNull (schema .getOneOf ());
496496 assertNull (schema .getAnyOf ());
497497 assertNull (schema .getNullable ());
498498 assertEquals (schema .get$ref (), "#/components/schemas/Number" );
499499
500500 Schema oneOfWithSeveralSubSchemasButSingleNonNull = ModelUtils .getSchema (openAPI , "OneOfTest" );
501501 subSchemas = oneOfWithSeveralSubSchemasButSingleNonNull .getOneOf ();
502- schema = ModelUtils .simplyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSeveralSubSchemasButSingleNonNull , subSchemas );
502+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSeveralSubSchemasButSingleNonNull , subSchemas );
503503 assertNull (schema .getOneOf ());
504504 assertNull (schema .getAnyOf ());
505505 assertTrue (schema .getNullable ());
506506 assertEquals ("integer" , schema .getType ());
507507
508508 Schema oneOfWithSingleNonNullSubSchema = ModelUtils .getSchema (openAPI , "ParentWithOneOfProperty" );
509509 subSchemas = ((Schema ) oneOfWithSingleNonNullSubSchema .getProperties ().get ("number" )).getOneOf ();
510- schema = ModelUtils .simplyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSingleNonNullSubSchema , subSchemas );
510+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSingleNonNullSubSchema , subSchemas );
511511 assertNull (schema .getOneOf ());
512512 assertNull (schema .getAnyOf ());
513513 assertNull (schema .getNullable ());
514514 assertEquals (schema .get$ref (), "#/components/schemas/Number" );
515515
516516 Schema oneOfWithSeveralSubSchemas = ModelUtils .getSchema (openAPI , "ParentWithPluralOneOfProperty" );
517517 subSchemas = ((Schema ) oneOfWithSeveralSubSchemas .getProperties ().get ("number" )).getOneOf ();
518- schema = ModelUtils .simplyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSeveralSubSchemas , subSchemas );
518+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , oneOfWithSeveralSubSchemas , subSchemas );
519519 assertNull (schema .getOneOf ());
520520 assertNotNull (oneOfWithSeveralSubSchemas .getProperties ().get ("number" ));
521521 assertNull (schema .getAnyOf ());
522522 assertNull (schema .getNullable ());
523523 assertEquals (((Schema ) oneOfWithSeveralSubSchemas .getProperties ().get ("number" )).getOneOf ().size (), 2 );
524524 }
525525
526+ @ Test
527+ public void simplifyOneOfWithOnlyOneNonNullSubSchemaKeepsReadOnlyWriteOnlyAttribute () {
528+ OpenAPI openAPI = TestUtils .parseSpec ("src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml" );
529+ Schema schema ;
530+ List <Schema > subSchemas ;
531+
532+ Schema oneOfWithNullAndRefSubSchema = ModelUtils .getSchema (openAPI , "OneOfParentRefTest" );
533+ Schema numberPropertySchema = ((Schema ) oneOfWithNullAndRefSubSchema .getProperties ().get ("number" ));
534+ subSchemas = numberPropertySchema .getOneOf ();
535+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , numberPropertySchema , subSchemas );
536+ assertNull (schema .getOneOf ());
537+ assertNull (schema .getAnyOf ());
538+ assertTrue (schema .getNullable ());
539+ assertNull (schema .getReadOnly ());
540+ assertTrue (schema .getWriteOnly ());
541+ assertEquals (schema .get$ref (), "#/components/schemas/IntegerRef" );
542+
543+ Schema number2PropertySchema = ((Schema ) oneOfWithNullAndRefSubSchema .getProperties ().get ("number2" ));
544+ subSchemas = number2PropertySchema .getOneOf ();
545+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , number2PropertySchema , subSchemas );
546+ assertNull (schema .getOneOf ());
547+ assertNull (schema .getAnyOf ());
548+ assertTrue (schema .getNullable ());
549+ assertTrue (schema .getReadOnly ());
550+ assertNull (schema .getWriteOnly ());
551+ assertEquals (schema .get$ref (), "#/components/schemas/IntegerRef" );
552+ }
553+
554+ @ Test
555+ public void simplifyAnyOfWithOnlyOneNonNullSubSchemaKeepsReadOnlyWriteOnlyAttribute () {
556+ OpenAPI openAPI = TestUtils .parseSpec ("src/test/resources/3_0/simplifyOneOfAnyOf_test.yaml" );
557+ Schema schema ;
558+ List <Schema > subSchemas ;
559+
560+ Schema anyOfWithNullAndRefSubSchema = ModelUtils .getSchema (openAPI , "AnyOfParentRefTest" );
561+ Schema numberPropertySchema = ((Schema ) anyOfWithNullAndRefSubSchema .getProperties ().get ("number" ));
562+ subSchemas = numberPropertySchema .getAnyOf ();
563+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , numberPropertySchema , subSchemas );
564+ assertNull (schema .getOneOf ());
565+ assertNull (schema .getAnyOf ());
566+ assertTrue (schema .getNullable ());
567+ assertNull (schema .getReadOnly ());
568+ assertTrue (schema .getWriteOnly ());
569+ assertEquals (schema .get$ref (), "#/components/schemas/IntegerRef" );
570+
571+ Schema number2PropertySchema = ((Schema ) anyOfWithNullAndRefSubSchema .getProperties ().get ("number2" ));
572+ subSchemas = number2PropertySchema .getAnyOf ();
573+ schema = ModelUtils .simplifyOneOfAnyOfWithOnlyOneNonNullSubSchema (openAPI , number2PropertySchema , subSchemas );
574+ assertNull (schema .getOneOf ());
575+ assertNull (schema .getAnyOf ());
576+ assertTrue (schema .getNullable ());
577+ assertTrue (schema .getReadOnly ());
578+ assertNull (schema .getWriteOnly ());
579+ assertEquals (schema .get$ref (), "#/components/schemas/IntegerRef" );
580+ }
581+
526582 @ Test
527583 public void isNullTypeSchemaTest () {
528584 OpenAPI openAPI = TestUtils .parseSpec ("src/test/resources/3_0/null_schema_test.yaml" );
0 commit comments