diff --git a/core/src/main/java/com/qdesrame/openapi/diff/core/output/HtmlRender.java b/core/src/main/java/com/qdesrame/openapi/diff/core/output/HtmlRender.java index 76667873f..7ecef8076 100644 --- a/core/src/main/java/com/qdesrame/openapi/diff/core/output/HtmlRender.java +++ b/core/src/main/java/com/qdesrame/openapi/diff/core/output/HtmlRender.java @@ -269,7 +269,16 @@ private void properties( Map properties, DiffContext context) { if (properties != null) { - properties.forEach((key, value) -> property(output, propPrefix + key, title, resolve(value))); + properties.forEach((key, value) -> resolveProperty(output, propPrefix, key, value, title)); + } + } + + private void resolveProperty( + ContainerTag output, String propPrefix, String key, Schema value, String title) { + try { + property(output, propPrefix + key, title, resolve(value)); + } catch (Exception e) { + property(output, propPrefix + key, title, type(value)); } } diff --git a/core/src/main/java/com/qdesrame/openapi/diff/core/output/MarkdownRender.java b/core/src/main/java/com/qdesrame/openapi/diff/core/output/MarkdownRender.java index c2dff57f5..88e8801b7 100644 --- a/core/src/main/java/com/qdesrame/openapi/diff/core/output/MarkdownRender.java +++ b/core/src/main/java/com/qdesrame/openapi/diff/core/output/MarkdownRender.java @@ -381,7 +381,7 @@ protected String properties( if (properties != null) { properties.forEach( (key, value) -> { - sb.append(property(deepness, title, key, resolve(value))); + sb.append(resolveProperty(deepness, value, key, title)); if (showContent) { sb.append(schema(deepness + 1, resolve(value), context)); } @@ -390,6 +390,14 @@ protected String properties( return sb.toString(); } + private String resolveProperty(int deepness, Schema value, String key, String title) { + try { + return property(deepness, title, key, resolve(value)); + } catch (Exception e) { + return property(deepness, title, key, type(value), ""); + } + } + protected String property(int deepness, String name, ChangedSchema schema) { StringBuilder sb = new StringBuilder(); String type = type(schema.getNewSchema()); diff --git a/core/src/test/java/com/qdesrame/openapi/test/HtmlRenderTest.java b/core/src/test/java/com/qdesrame/openapi/test/HtmlRenderTest.java new file mode 100644 index 000000000..c0b29c6e4 --- /dev/null +++ b/core/src/test/java/com/qdesrame/openapi/test/HtmlRenderTest.java @@ -0,0 +1,18 @@ +package com.qdesrame.openapi.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.qdesrame.openapi.diff.core.OpenApiCompare; +import com.qdesrame.openapi.diff.core.model.ChangedOpenApi; +import com.qdesrame.openapi.diff.core.output.HtmlRender; +import org.junit.jupiter.api.Test; + +public class HtmlRenderTest { + @Test + public void renderDoesNotFailWhenPropertyHasBeenRemoved() { + HtmlRender render = new HtmlRender(); + ChangedOpenApi diff = + OpenApiCompare.fromLocations("missing_property_1.yaml", "missing_property_2.yaml"); + assertThat(render.render(diff)).isNotBlank(); + } +} diff --git a/core/src/test/java/com/qdesrame/openapi/test/MarkdownRenderTest.java b/core/src/test/java/com/qdesrame/openapi/test/MarkdownRenderTest.java new file mode 100644 index 000000000..54e6978f1 --- /dev/null +++ b/core/src/test/java/com/qdesrame/openapi/test/MarkdownRenderTest.java @@ -0,0 +1,18 @@ +package com.qdesrame.openapi.test; + +import static org.assertj.core.api.Assertions.assertThat; + +import com.qdesrame.openapi.diff.core.OpenApiCompare; +import com.qdesrame.openapi.diff.core.model.ChangedOpenApi; +import com.qdesrame.openapi.diff.core.output.MarkdownRender; +import org.junit.jupiter.api.Test; + +public class MarkdownRenderTest { + @Test + public void renderDoesNotFailWhenPropertyHasBeenRemoved() { + MarkdownRender render = new MarkdownRender(); + ChangedOpenApi diff = + OpenApiCompare.fromLocations("missing_property_1.yaml", "missing_property_2.yaml"); + assertThat(render.render(diff)).isNotBlank(); + } +}