From 7e5cb1e9a55d5c6c6619758774ae3dbc69277330 Mon Sep 17 00:00:00 2001 From: Daniel Espendiller Date: Wed, 18 May 2022 18:30:52 +0200 Subject: [PATCH] add testcases for service "excludes" in XML prototypes --- .../tests/config/xml/XmlHelperTest.java | 45 ++++++++++++++++--- .../tests/config/xml/fixtures/XmlHelper.php | 12 ++++- .../tests/config/xml/fixtures/services.xml | 4 ++ 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/XmlHelperTest.java b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/XmlHelperTest.java index edf13b092..8017c25c1 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/XmlHelperTest.java +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/XmlHelperTest.java @@ -10,14 +10,13 @@ import com.intellij.psi.xml.XmlTag; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.php.lang.psi.elements.Parameter; -import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.PhpNamedElement; import fr.adrienbrault.idea.symfony2plugin.config.xml.XmlHelper; import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase; +import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.Collection; -import java.util.function.Predicate; import java.util.stream.Collectors; /** @@ -178,6 +177,18 @@ public void testGetArgumentIndexOnArgumentCount() { assertEquals(1, XmlHelper.getArgumentIndex((XmlTag) psiElement.getParent())); } + @NotNull + private Collection getClassNamesFromResourceGlob(@NotNull Collection xmlTags, @NotNull String namespace) { + XmlTag xmlTag = xmlTags.stream() + .filter(xmlTag1 -> namespace.equals(xmlTag1.getAttributeValue("namespace"))) + .findFirst() + .orElseThrow(); + + return XmlHelper.getNamespaceResourcesClasses(xmlTag).stream() + .map(PhpNamedElement::getFQN) + .collect(Collectors.toSet()); + } + /** * @see XmlHelper#getNamespaceResourcesClasses */ @@ -189,11 +200,31 @@ public void testGetNamespaceResourcesClasses() { Collection xmlTags = PsiTreeUtil.collectElementsOfType(file, XmlTag.class); - XmlTag xmlTag = xmlTags.stream().filter(xmlTag1 -> "prototype".equals(xmlTag1.getName())).findFirst().orElseThrow(); - Collection namespaceResourcesClasses = XmlHelper.getNamespaceResourcesClasses(xmlTag).stream() - .map(PhpNamedElement::getFQN) - .collect(Collectors.toSet()); + assertContainsElements( + getClassNamesFromResourceGlob(xmlTags, "Foo\\"), + "\\Foo\\Bar" + ); + } + + /** + * @see XmlHelper#getNamespaceResourcesClasses + */ + public void testGetNamespaceResourcesClassesWithExclude() { + myFixture.copyFileToProject("XmlHelper.php", "src/XmlHelper.php"); + VirtualFile service = myFixture.copyFileToProject("services.xml", "src/services.xml"); + + PsiFile file = PsiManager.getInstance(getProject()).findFile(service); - assertContainsElements(namespaceResourcesClasses, "\\Foo\\Bar"); + Collection xmlTags = PsiTreeUtil.collectElementsOfType(file, XmlTag.class); + + assertDoesntContain( + getClassNamesFromResourceGlob(xmlTags, "Foo1\\"), + "\\Foo1\\Bar" + ); + + assertDoesntContain( + getClassNamesFromResourceGlob(xmlTags, "Foo2\\"), + "\\Foo2\\Bar" + ); } } diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/XmlHelper.php b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/XmlHelper.php index 5daca88ca..ce01dc4b3 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/XmlHelper.php +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/XmlHelper.php @@ -12,4 +12,14 @@ public function setBar($arg1, $arg2) { } } -} \ No newline at end of file +} + +namespace Foo1 +{ + class Bar {} +} + +namespace Foo2 +{ + class Bar {} +} diff --git a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/services.xml b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/services.xml index d8b24284b..f32e4ee74 100644 --- a/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/services.xml +++ b/src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/services.xml @@ -3,5 +3,9 @@ + + + ../src/XmlHelper.php + \ No newline at end of file