diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/ServiceYamlReference.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/ServiceYamlReference.java index 1062d0169..9911c90ee 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/ServiceYamlReference.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/ServiceYamlReference.java @@ -18,4 +18,9 @@ public ServiceYamlReference(@NotNull PsiElement psiElement, @NotNull TextRange r this.serviceId = serviceId; } + + @Override + public @NotNull Object[] getVariants() { + return new Object[0]; + } } diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/SymfonyLightCodeInsightFixtureTestCase.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/SymfonyLightCodeInsightFixtureTestCase.java index 7fb0582ee..81ad9e909 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/SymfonyLightCodeInsightFixtureTestCase.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/SymfonyLightCodeInsightFixtureTestCase.java @@ -49,6 +49,9 @@ import org.jetbrains.annotations.NotNull; import java.util.*; +import java.util.stream.Collectors; + +import static java.util.function.Function.identity; /** * @author Daniel Espendiller @@ -87,6 +90,30 @@ public void assertCompletionNotContains(String filename, String configureByText, assertFalse(myFixture.getLookupElementStrings().containsAll(Arrays.asList(lookupStrings))); } + + public void assertCompletionResultsAreUnique( + @NotNull LanguageFileType languageFileType, + @NotNull String configureByText, + @NotNull String... lookupStrings + ) { + myFixture.configureByText(languageFileType, configureByText); + myFixture.completeBasic(); + + var results = myFixture.getLookupElementStrings(); + if (results != null) { + var duplicates = results.stream() + .filter(result -> Arrays.asList(lookupStrings).contains(result)) + .collect(Collectors.groupingBy(identity())) + .entrySet() + .stream() + .filter(result -> result.getValue().size() > 1) + .map(Map.Entry::getKey) + .collect(Collectors.toList()); + + assertTrue("The following results are duplicated: " + String.join(", ", duplicates), duplicates.isEmpty()); + } + } + public void assertCompletionNotContains(LanguageFileType languageFileType, String configureByText, String... lookupStrings) { myFixture.configureByText(languageFileType, configureByText); diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/yaml/YamlDicCompletionContributorTest.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/yaml/YamlDicCompletionContributorTest.java index 46fad38f0..7d87febb0 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/yaml/YamlDicCompletionContributorTest.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/dic/yaml/YamlDicCompletionContributorTest.java @@ -61,6 +61,16 @@ public void testServiceCompletion() { ); } + public void testServiceCompletionResultsAreUnique() { + assertCompletionResultsAreUnique( + YAMLFileType.YML, + "services:\n" + + " newsletter_manager:\n" + + " parent: \n", + "data_collector.router" + ); + } + public void testServiceStaticCompletion() { assertCompletionContains(YAMLFileType.YML, "services:\n" +