From 209b7c6997c8be4af22708425f9f1f49432f0965 Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Wed, 30 Oct 2024 19:28:23 +0100 Subject: [PATCH 1/3] Improve change detection to consider changeDefault field in ChangedSchema --- .../org/openapitools/openapidiff/core/model/ChangedSchema.java | 1 + 1 file changed, 1 insertion(+) 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 a8200ba40..aa527e4e6 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() From 95afb9216d96297b378125109bfcfaf5f2d6ed06 Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Wed, 30 Oct 2024 19:57:16 +0100 Subject: [PATCH 2/3] Add test for defaults handling in Schema --- .../openapidiff/core/SchemaDefaultsTest.java | 26 +++++++++++++++++++ .../issue-717-schema-defaults-handling-1.yaml | 21 +++++++++++++++ .../issue-717-schema-defaults-handling-2.yaml | 21 +++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java create mode 100644 core/src/test/resources/issue-717-schema-defaults-handling-1.yaml create mode 100644 core/src/test/resources/issue-717-schema-defaults-handling-2.yaml 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 000000000..56cd81af5 --- /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 000000000..3ecee6886 --- /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 000000000..143174770 --- /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 From 769f3f73f6902c64f3cf467293851f21bf761ec7 Mon Sep 17 00:00:00 2001 From: Aliaksandr Pinchuk Date: Wed, 30 Oct 2024 19:58:32 +0100 Subject: [PATCH 3/3] Add test for defaults handling in Schema --- .../openapidiff/core/SchemaDefaultsTest.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java index 56cd81af5..52abeac6d 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/SchemaDefaultsTest.java @@ -9,18 +9,18 @@ public class SchemaDefaultsTest { - @Test - public void issue717DefaultsInSchema() { - ChangedOpenApi changedOpenApi = OpenApiCompare.fromLocations( + @Test + public void issue717DefaultsInSchema() { + ChangedOpenApi changedOpenApi = + OpenApiCompare.fromLocations( "issue-717-schema-defaults-handling-1.yaml", - "issue-717-schema-defaults-handling-2.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()); - } + 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()); + } }