From 4c7e821da8abc35422d5180b70a7e860b7b103de Mon Sep 17 00:00:00 2001 From: aboyko Date: Fri, 31 Mar 2023 13:29:58 -0400 Subject: [PATCH] Nested enums tests for properties and yaml --- .../test/ApplicationPropertiesEditorTest.java | 25 +++++++ .../boot/test/ApplicationYamlEditorTest.java | 15 ++++ .../src/main/java/demo/C.java | 17 +++++ .../src/main/java/demo/ExampleProperties.java | 72 +++++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100644 headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/C.java create mode 100644 headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/ExampleProperties.java diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java index 0e37c6ea4..1226431a0 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationPropertiesEditorTest.java @@ -883,6 +883,31 @@ public class ApplicationPropertiesEditorTest extends AbstractPropsEditorTest { "Bogus|Color" ); } + + @Test + void testNestedEnumPropertyListCompletion() throws Exception { + IJavaProject p = createPredefinedMavenProject("enums-boot-1.3.2-app"); + + useProject(p); + assertNotNull(p.getIndex().findType("demo.C")); + assertNotNull(p.getIndex().findType("demo.C$E")); + + assertCompletionsVariations("nested-enum.list-properties[0].<*>", + "nested-enum.list-properties[0].enum-value=<*>", + "nested-enum.list-properties[0].list-of-enums=<*>" + ); + + assertCompletionsDisplayString("nested-enum.list-properties[0].list-of-enums=<*>", + "no", "yes" + ); + assertCompletionsDisplayString("nested-enum.list-properties[0].list-of-enums=yes,<*>", + "no", "yes" + ); + assertCompletionsDisplayString("nested-enum.list-properties[0].enum-value=<*>", + "no", "yes" + ); + assertCompletionsVariations("nested-enum.list-properties[0].list-of-enums=yes,n<*>", "nested-enum.list-properties[0].list-of-enums=yes,no<*>"); + } @Test void testEnumMapValueCompletion() throws Exception { diff --git a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java index f7398a38d..750c2c6c6 100644 --- a/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java +++ b/headless-services/spring-boot-language-server/src/test/java/org/springframework/ide/vscode/boot/test/ApplicationYamlEditorTest.java @@ -2390,6 +2390,21 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest { "red", "green", "blue" ); } + + @Test + void testNestedEnumValueCompletion() throws Exception { + useProject(createPredefinedMavenProject("enums-boot-1.3.2-app")); + + assertCompletion("nested-enum:\n list-properties:\n - e<*>", "nested-enum:\n list-properties:\n - enum-value: <*>"); + assertCompletion("nested-enum:\n list-properties:\n - li<*>", "nested-enum:\n list-properties:\n - list-of-enums:\n - <*>"); + + assertCompletion("nested-enum:\n list-properties:\n - enum-value: y<*>", "nested-enum:\n list-properties:\n - enum-value: yes<*>"); + assertCompletion("nested-enum:\n list-properties:\n - list-of-enums:\n - n<*>", "nested-enum:\n list-properties:\n - list-of-enums:\n - no<*>"); + + assertCompletionsDisplayString("nested-enum:\n list-properties:\n - list-of-enums:\n - <*>", + "no", "yes" + ); + } @Test void testEnumMapValueCompletion() throws Exception { diff --git a/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/C.java b/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/C.java new file mode 100644 index 000000000..0ec54aa3d --- /dev/null +++ b/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/C.java @@ -0,0 +1,17 @@ +package demo; + +public class C { + + public enum E { + /** + * Javadoc for YES here + */ + YES, + + /** + * Javadoc for NO here + */ + NO + } + +} diff --git a/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/ExampleProperties.java b/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/ExampleProperties.java new file mode 100644 index 000000000..371117afa --- /dev/null +++ b/headless-services/spring-boot-language-server/src/test/resources/test-projects/enums-boot-1.3.2-app/src/main/java/demo/ExampleProperties.java @@ -0,0 +1,72 @@ +package demo; + +import java.util.Map; +import java.util.Set; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.validation.annotation.Validated; + +@ConfigurationProperties(prefix = ExampleProperties.PREFIX) +@Validated +public class ExampleProperties { + + public static final String PREFIX = "nested-enum"; + + public C.E enumValue; + + private Set listOfEnums; + + private Set listProperties; + + private Map mapProperties; + + public C.E getEnumValue() { + return enumValue; + } + + public void setEnumValue(C.E enumValue) { + this.enumValue = enumValue; + } + + public Set getListOfEnums() { + return listOfEnums; + } + + public void setListOfEnums(Set listOfEnums) { + this.listOfEnums = listOfEnums; + } + + public Set getListProperties() { + return listProperties; + } + + public void setListProperties(Set listProperties) { + this.listProperties = listProperties; + } + + public Map getMapProperties() { + return mapProperties; + } + + public void setMapProperties(Map mapProperties) { + this.mapProperties = mapProperties; + } + + public static class SomeProperties { + private C.E enumValue; + private Set listOfEnums; + public C.E getEnumValue() { + return enumValue; + } + public void setEnumValue(C.E enumValue) { + this.enumValue = enumValue; + } + public Set getListOfEnums() { + return listOfEnums; + } + public void setListOfEnums(Set listOfEnums) { + this.listOfEnums = listOfEnums; + } + } + +}