Added test case with multiple conditionals

This commit is contained in:
nsingh
2017-10-24 17:50:16 -07:00
parent 7d44293ea9
commit 0357d2f609
2 changed files with 152 additions and 17 deletions

View File

@@ -13,6 +13,7 @@ package org.springframework.ide.vscode.boot.java.conditionals.test;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.time.Duration;
import org.junit.Before;
import org.junit.Test;
@@ -35,6 +36,7 @@ public class ConditionalsLiveHoverTest {
mockAppProvider = new MockRunningAppProvider();
harness = BootLanguageServerHarness.builder()
.runningAppProvider(mockAppProvider.provider)
.watchDogInterval(Duration.ofMillis(100))
.build();
}
@@ -43,7 +45,8 @@ public class ConditionalsLiveHoverTest {
File directory = new File(
ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI());
String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/ConditionalOnMissingBeanConfig.java";
String docUri = "file://" + directory.getAbsolutePath()
+ "/src/main/java/example/ConditionalOnMissingBeanConfig.java";
harness.intialize(directory);
@@ -59,25 +62,20 @@ public class ConditionalsLiveHoverTest {
File directory = new File(
ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI());
String docUri = "file://" +directory.getAbsolutePath() + "/src/main/java/example/ConditionalOnBeanConfig.java";
String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/ConditionalOnBeanConfig.java";
// Build a mock running boot app
mockAppProvider.builder()
.isSpringBootApp(true)
.port("1111")
.processId("22022")
.host("cfapps.io")
.processName("test-conditionals-live-hover")
.getAutoConfigReport("{\"positiveMatches\":{\"ConditionalOnBeanConfig#hi\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\"}]}}")
.build();
mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io")
.processName("test-conditionals-live-hover")
.getAutoConfigReport(
"{\"positiveMatches\":{\"ConditionalOnBeanConfig#hi\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\"}]}}")
.build();
harness.intialize(directory);
Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA);
editor.assertHoverContains("@ConditionalOnBean", "Condition: OnBeanCondition\n" +
"\n" +
"Message: @ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'");
editor.assertHoverContains("@ConditionalOnBean", "Condition: OnBeanCondition\n" + "\n"
+ "Message: @ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'");
}
@@ -86,11 +84,12 @@ public class ConditionalsLiveHoverTest {
File directory = new File(
ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI());
String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/ConditionalOnMissingBeanConfig.java";
String docUri = "file://" + directory.getAbsolutePath()
+ "/src/main/java/example/ConditionalOnMissingBeanConfig.java";
// Build a mock running boot app
mockAppProvider.builder().isSpringBootApp(true).port("1111")
.processId("22022").host("cfapps.io").processName("test-conditionals-live-hover")
mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io")
.processName("test-conditionals-live-hover")
.getAutoConfigReport(
"{\"positiveMatches\":{\"ConditionalOnMissingBeanConfig#missing\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\"}]}}")
.build();
@@ -102,4 +101,108 @@ public class ConditionalsLiveHoverTest {
+ "Message: @ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans");
}
@Test
public void testMultipleLiveHoverContentRealProject() throws Exception {
File directory = new File(
ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI());
String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java";
// Build a mock running boot app
mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io")
.processName("test-conditionals-live-hover")
.getAutoConfigReport(
"{\"positiveMatches\":{\"HelloConfig#missing\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\"}],\"HelloConfig2#hi\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\"}],\"MultipleConditionals#hi\":[{\"condition\":\"OnClassCondition\",\"message\":\"@ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class\"},{\"condition\":\"OnWebApplicationCondition\",\"message\":\"@ConditionalOnWebApplication (required) found StandardServletEnvironment\"},{\"condition\":\"OnJavaCondition\",\"message\":\"@ConditionalOnJava (1.8 or newer) found 1.8\"},{\"condition\":\"OnExpressionCondition\",\"message\":\"@ConditionalOnExpression (#{true}) resulted in true\"},{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'\"}]}}")
.build();
harness.intialize(directory);
Editor editor = harness.newEditorFromFileUri(docUri, LanguageId.JAVA);
editor.assertHoverContains("@ConditionalOnBean", "Condition: OnBeanCondition\n" + "\n"
+ "Message: @ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'");
editor.assertHoverContains("@ConditionalOnWebApplication", "Condition: OnWebApplicationCondition\n" + "\n"
+ "Message: @ConditionalOnWebApplication (required) found StandardServletEnvironment");
editor.assertHoverContains("@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)",
"Condition: OnJavaCondition\n" + "\n" + "Message: @ConditionalOnJava (1.8 or newer) found 1.8");
editor.assertHoverContains("@ConditionalOnMissingClass", "Condition: OnClassCondition\n" + "\n"
+ "Message: @ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class");
editor.assertHoverContains("@ConditionalOnExpression", "Condition: OnExpressionCondition\n" + "\n"
+ "Message: @ConditionalOnExpression (#{true}) resulted in true");
}
// @Test
// public void testMultipleLiveHoverHints() throws Exception {
//
// File directory = new File(
// ProjectsHarness.class.getResource("/test-projects/test-conditionals-live-hover/").toURI());
// String docUri = "file://" + directory.getAbsolutePath() + "/src/main/java/example/MultipleConditionals.java";
//
// // Build a mock running boot app
// mockAppProvider.builder().isSpringBootApp(true).port("1111").processId("22022").host("cfapps.io")
// .processName("test-conditionals-live-hover")
// .getAutoConfigReport(
// "{\"positiveMatches\":{\"HelloConfig#missing\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnMissingBean (types: example.Hello; SearchStrategy: all) did not find any beans\"}],\"HelloConfig2#hi\":[{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found bean 'missing'\"}],\"MultipleConditionals#hi\":[{\"condition\":\"OnClassCondition\",\"message\":\"@ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class\"},{\"condition\":\"OnWebApplicationCondition\",\"message\":\"@ConditionalOnWebApplication (required) found StandardServletEnvironment\"},{\"condition\":\"OnJavaCondition\",\"message\":\"@ConditionalOnJava (1.8 or newer) found 1.8\"},{\"condition\":\"OnExpressionCondition\",\"message\":\"@ConditionalOnExpression (#{true}) resulted in true\"},{\"condition\":\"OnBeanCondition\",\"message\":\"@ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'\"}]}}")
// .build();
//
// harness.intialize(directory);
//
// Editor editor = harness.newEditor(LanguageId.JAVA, "package example;\n" +
// "\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;\n" +
// "import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;\n" +
// "import org.springframework.context.annotation.Bean;\n" +
// "import org.springframework.context.annotation.Configuration;\n" +
// "\n" +
// "@Configuration\n" +
// "public class MultipleConditionals {\n" +
// "\n" +
// " @Bean\n" +
// " @ConditionalOnBean\n" +
// " @ConditionalOnWebApplication\n" +
// " @ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)\n" +
// " @ConditionalOnMissingClass\n" +
// " @ConditionalOnExpression\n" +
// " public Hello hi() {\n" +
// " return null;\n" +
// " }\n" +
// " \n" +
// " @Bean\n" +
// " @ConditionalOnMissingBean\n" +
// " @ConditionalOnNotWebApplication\n" +
// " public Hello missing() {\n" +
// " return null;\n" +
// " }\n" +
// "}");
//
//// editor.assertHoverContains("@ConditionalOnBean", "Condition: OnBeanCondition\n" + "\n"
//// + "Message: @ConditionalOnBean (types: example.Hello; SearchStrategy: all) found beans 'hi', 'missing'");
////
//// editor.assertHoverContains("@ConditionalOnWebApplication", "Condition: OnWebApplicationCondition\n" + "\n"
//// + "Message: @ConditionalOnWebApplication (required) found StandardServletEnvironment");
////
//// editor.assertHoverContains("@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)",
//// "Condition: OnJavaCondition\n" + "\n" + "Message: @ConditionalOnJava (1.8 or newer) found 1.8");
////
//// editor.assertHoverContains("@ConditionalOnMissingClass", "Condition: OnClassCondition\n" + "\n"
//// + "Message: @ConditionalOnClass found required class; @ConditionalOnMissingClass did not find unwanted class");
////
//// editor.assertHoverContains("@ConditionalOnExpression", "Condition: OnExpressionCondition\n" + "\n"
//// + "Message: @ConditionalOnExpression (#{true}) resulted in true");
//
// editor.assertHighlights("@ConditionalOnBean", "@ConditionalOnWebApplication",
// "@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)", "@ConditionalOnMissingClass",
// "@ConditionalOnExpression");
//
// }
}

View File

@@ -0,0 +1,32 @@
package example;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnJava;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnNotWebApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MultipleConditionals {
@Bean
@ConditionalOnBean
@ConditionalOnWebApplication
@ConditionalOnJava(value=ConditionalOnJava.JavaVersion.EIGHT)
@ConditionalOnMissingClass
@ConditionalOnExpression
public Hello hi() {
return null;
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnNotWebApplication
public Hello missing() {
return null;
}
}