SchemaSerializationTest.java
package io.swagger.v3.core.serialization;
import io.swagger.v3.core.matchers.SerializationMatchers;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.media.JsonSchema;
import org.testng.annotations.Test;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashSet;
public class SchemaSerializationTest {
@Test
public void serializeRefSchema3_1() {
OpenAPI openAPI = new OpenAPI()
.components(new Components()
.addSchemas("Pet", new JsonSchema()
.types(new HashSet<>(Arrays.asList("object")))
.format("whatever")
._if(new JsonSchema().type("string").types(new HashSet<>(Arrays.asList("string"))))
.then(new JsonSchema().type("string").types(new HashSet<>(Arrays.asList("string"))))
._else(new JsonSchema().type("string").types(new HashSet<>(Arrays.asList("string"))))
.minimum(BigDecimal.valueOf(1))
.addProperties("id", new JsonSchema().type("integer").types(new HashSet<>(Arrays.asList("integer"))))
.addProperties("name", new JsonSchema().type("string").types(new HashSet<>(Arrays.asList("string"))))
.addProperties("tag", new JsonSchema().type("string").types(new HashSet<>(Arrays.asList("string")))))
.addSchemas("AnotherPet", new JsonSchema()
.title("Another Pet")
.description("Another Pet for petstore referencing Pet schema")
.$ref("#/components/schemas/Pet")
.addProperties("category", new JsonSchema().types(new HashSet<>(Arrays.asList("string"))))
.addProperties("photoUrl", new JsonSchema().types(new HashSet<>(Arrays.asList("string"))))));
SerializationMatchers.assertEqualsToYaml31(openAPI, "openapi: 3.0.1\n" +
"components:\n" +
" schemas:\n" +
" Pet:\n" +
" type: object\n" +
" format: whatever\n" +
" if:\n" +
" type: string\n" +
" then:\n" +
" type: string\n" +
" else:\n" +
" type: string\n" +
" minimum: 1\n" +
" properties:\n" +
" id:\n" +
" type: integer\n" +
" name:\n" +
" type: string\n" +
" tag:\n" +
" type: string\n" +
" AnotherPet:\n" +
" $ref: \"#/components/schemas/Pet\"\n" +
" description: Another Pet for petstore referencing Pet schema\n" +
" properties:\n" +
" category:\n" +
" type: string\n" +
" photoUrl:\n" +
" type: string\n" +
" title: Another Pet\n");
SerializationMatchers.assertEqualsToYaml(openAPI, "openapi: 3.0.1\n" +
"components:\n" +
" schemas:\n" +
" Pet:\n" +
" minimum: 1\n" +
" properties:\n" +
" id:\n" +
" type: integer\n" +
" name:\n" +
" type: string\n" +
" tag:\n" +
" type: string\n" +
" format: whatever\n" +
" AnotherPet:\n" +
" $ref: \"#/components/schemas/Pet\"\n");
}
}