diff --git a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java index a8200ba4..aa527e4e 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/model/ChangedSchema.java @@ -136,6 +136,7 @@ private DiffResult calculateCoreChanged() { if (!changedType && (oldSchema == null && newSchema == null || oldSchema != null && newSchema != null) && !changeFormat + && !changeDefault && increasedProperties.isEmpty() && missingProperties.isEmpty() && changedProperties.values().isEmpty() diff --git a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java new file mode 100644 index 00000000..52abeac6 --- /dev/null +++ b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java @@ -0,0 +1,26 @@ +package org.openapitools.openapidiff.core; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import org.openapitools.openapidiff.core.model.ChangedOpenApi; +import org.openapitools.openapidiff.core.model.ChangedSchema; + +public class SchemaDefaultsTest { + + @Test + public void issue717DefaultsInSchema() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( + "issue-717-schema-defaults-handling-1.yaml", + "issue-717-schema-defaults-handling-2.yaml"); + + assertEquals(1, changedOpenApi.getChangedOperations().size()); + assertEquals(1, changedOpenApi.getChangedSchemas().size()); + ChangedSchema changedSchema = changedOpenApi.getChangedSchemas().get(0); + assertEquals(1, changedSchema.getChangedProperties().size()); + assertTrue(changedSchema.getChangedProperties().containsKey("field1")); + assertTrue(changedSchema.getChangedProperties().get("field1").isChangeDefault()); + } +} diff --git a/core/src/test/resources/issue-717-schema-defaults-handling-1.yaml b/core/src/test/resources/issue-717-schema-defaults-handling-1.yaml new file mode 100644 index 00000000..3ecee688 --- /dev/null +++ b/core/src/test/resources/issue-717-schema-defaults-handling-1.yaml @@ -0,0 +1,21 @@ +openapi: 3.1.0 +info: + description: Schema defaults handling + title: defaults + version: 1.0.0 +paths: + /defaults/property-schema/: + post: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TestDTO' +components: + schemas: + TestDTO: + type: object + properties: + field1: + default: default value + type: string \ No newline at end of file diff --git a/core/src/test/resources/issue-717-schema-defaults-handling-2.yaml b/core/src/test/resources/issue-717-schema-defaults-handling-2.yaml new file mode 100644 index 00000000..14317477 --- /dev/null +++ b/core/src/test/resources/issue-717-schema-defaults-handling-2.yaml @@ -0,0 +1,21 @@ +openapi: 3.1.0 +info: + description: Schema defaults handling + title: defaults + version: 1.0.0 +paths: + /defaults/property-schema/: + post: + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TestDTO' +components: + schemas: + TestDTO: + type: object + properties: + field1: + default: default value updated + type: string \ No newline at end of file