From 9aa5ed36bb42e83db5ffce5815517588e05a9b1f Mon Sep 17 00:00:00 2001 From: Kris De Volder Date: Wed, 19 Jul 2017 12:52:38 -0700 Subject: [PATCH] Add test cases for situations where cloud config is unavailable --- .../ide/vscode/bosh/BoshEditorTest.java | 47 +++++++++++++++++++ .../languageserver/testharness/Editor.java | 6 ++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java index 1a8660ca5..025d19d18 100644 --- a/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java +++ b/headless-services/bosh-language-server/src/test/java/org/springframework/ide/vscode/bosh/BoshEditorTest.java @@ -12,9 +12,12 @@ package org.springframework.ide.vscode.bosh; import static org.junit.Assert.assertEquals; import static org.springframework.ide.vscode.languageserver.testharness.Editor.PLAIN_COMPLETION; +import static org.springframework.ide.vscode.languageserver.testharness.TestAsserts.assertContains; import java.io.IOException; +import java.util.concurrent.TimeoutException; +import org.eclipse.lsp4j.CompletionItem; import org.junit.Before; import org.junit.Test; import org.springframework.ide.vscode.bosh.mocks.MockCloudConfigProvider; @@ -23,6 +26,7 @@ import org.springframework.ide.vscode.commons.yaml.reconcile.YamlSchemaProblems; import org.springframework.ide.vscode.languageserver.testharness.Editor; import org.springframework.ide.vscode.languageserver.testharness.LanguageServerHarness; + public class BoshEditorTest { LanguageServerHarness harness; @@ -873,4 +877,47 @@ public class BoshEditorTest { assertEquals(1, cloudConfigProvider.getReadCount()); } + @Test public void reconcileVMTypeWhenCloudConfigUnavailable() throws Exception { + cloudConfigProvider.readWith(() -> null); + Editor editor = harness.newEditor( + "name: foo\n" + + "instance_groups: \n" + + "- name: some-server\n" + + " vm_type: bogus-vm\n" + + "- name: other-server\n" + + " vm_type: large" + ); + editor.ignoreProblem(YamlSchemaProblems.MISSING_PROPERTY); + editor.assertProblems(/*NONE*/); //Should not complain about unknown vm_types, if we can't determine what valid vm_types actually exist. + } + + @Test public void reconcileVMTypeWhenCloudConfigThrows() throws Exception { + cloudConfigProvider.readWith(() -> { throw new TimeoutException("Reading cloud config timed out"); }); + Editor editor = harness.newEditor( + "name: foo\n" + + "instance_groups: \n" + + "- name: some-server\n" + + " vm_type: bogus-vm\n" + + "- name: other-server\n" + + " vm_type: large" + ); + editor.ignoreProblem(YamlSchemaProblems.MISSING_PROPERTY); + editor.assertProblems(/*NONE*/); //Should not complain about unknown vm_types, if we can't determine what valid vm_types actually exist. + } + + @Test public void contentAssistShowsWarningWhenCloudConfigThrows() throws Exception { + cloudConfigProvider.readWith(() -> { + throw new TimeoutException("Reading cloud config timed out"); + }); + Editor editor = harness.newEditor( + "name: foo\n" + + "instance_groups: \n" + + "- name: some-server\n" + + " vm_type: <*>" + ); + CompletionItem completion = editor.assertCompletionLabels("TimeoutException").get(0); + completion = harness.resolveCompletionItem(completion); + assertContains("Reading cloud config timed out", completion.getDocumentation()); + } + } diff --git a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java index 9485151e1..423a26bc9 100644 --- a/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java +++ b/headless-services/commons/language-server-test-harness/src/main/java/org/springframework/ide/vscode/languageserver/testharness/Editor.java @@ -326,7 +326,7 @@ public class Editor { return completions; } - public void assertCompletionLabels(String... expectedLabels) throws Exception { + public List assertCompletionLabels(String... expectedLabels) throws Exception { StringBuilder expect = new StringBuilder(); StringBuilder actual = new StringBuilder(); for (String label : expectedLabels) { @@ -334,11 +334,13 @@ public class Editor { expect.append("\n"); } - for (CompletionItem completion : getCompletions()) { + List completions; + for (CompletionItem completion : completions = getCompletions()) { actual.append(completion.getLabel()); actual.append("\n"); } assertEquals(expect.toString(), actual.toString()); + return completions; } public void assertContainsCompletions(String... expectTextAfter) throws Exception {