Skip to content

Commit fa695ce

Browse files
authored
Merge pull request #1937 from Haehnchen/feature/prototype-glob-xml
add testcases for service "excludes" in XML prototypes
2 parents 6539bc4 + 7e5cb1e commit fa695ce

File tree

3 files changed

+53
-8
lines changed

3 files changed

+53
-8
lines changed

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/XmlHelperTest.java

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,13 @@
1010
import com.intellij.psi.xml.XmlTag;
1111
import com.intellij.util.containers.ContainerUtil;
1212
import com.jetbrains.php.lang.psi.elements.Parameter;
13-
import com.jetbrains.php.lang.psi.elements.PhpClass;
1413
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
1514
import fr.adrienbrault.idea.symfony2plugin.config.xml.XmlHelper;
1615
import fr.adrienbrault.idea.symfony2plugin.tests.SymfonyLightCodeInsightFixtureTestCase;
16+
import org.jetbrains.annotations.NotNull;
1717

1818
import java.util.ArrayList;
1919
import java.util.Collection;
20-
import java.util.function.Predicate;
2120
import java.util.stream.Collectors;
2221

2322
/**
@@ -178,6 +177,18 @@ public void testGetArgumentIndexOnArgumentCount() {
178177
assertEquals(1, XmlHelper.getArgumentIndex((XmlTag) psiElement.getParent()));
179178
}
180179

180+
@NotNull
181+
private Collection<String> getClassNamesFromResourceGlob(@NotNull Collection<XmlTag> xmlTags, @NotNull String namespace) {
182+
XmlTag xmlTag = xmlTags.stream()
183+
.filter(xmlTag1 -> namespace.equals(xmlTag1.getAttributeValue("namespace")))
184+
.findFirst()
185+
.orElseThrow();
186+
187+
return XmlHelper.getNamespaceResourcesClasses(xmlTag).stream()
188+
.map(PhpNamedElement::getFQN)
189+
.collect(Collectors.toSet());
190+
}
191+
181192
/**
182193
* @see XmlHelper#getNamespaceResourcesClasses
183194
*/
@@ -189,11 +200,31 @@ public void testGetNamespaceResourcesClasses() {
189200

190201
Collection<XmlTag> xmlTags = PsiTreeUtil.collectElementsOfType(file, XmlTag.class);
191202

192-
XmlTag xmlTag = xmlTags.stream().filter(xmlTag1 -> "prototype".equals(xmlTag1.getName())).findFirst().orElseThrow();
193-
Collection<String> namespaceResourcesClasses = XmlHelper.getNamespaceResourcesClasses(xmlTag).stream()
194-
.map(PhpNamedElement::getFQN)
195-
.collect(Collectors.toSet());
203+
assertContainsElements(
204+
getClassNamesFromResourceGlob(xmlTags, "Foo\\"),
205+
"\\Foo\\Bar"
206+
);
207+
}
208+
209+
/**
210+
* @see XmlHelper#getNamespaceResourcesClasses
211+
*/
212+
public void testGetNamespaceResourcesClassesWithExclude() {
213+
myFixture.copyFileToProject("XmlHelper.php", "src/XmlHelper.php");
214+
VirtualFile service = myFixture.copyFileToProject("services.xml", "src/services.xml");
215+
216+
PsiFile file = PsiManager.getInstance(getProject()).findFile(service);
196217

197-
assertContainsElements(namespaceResourcesClasses, "\\Foo\\Bar");
218+
Collection<XmlTag> xmlTags = PsiTreeUtil.collectElementsOfType(file, XmlTag.class);
219+
220+
assertDoesntContain(
221+
getClassNamesFromResourceGlob(xmlTags, "Foo1\\"),
222+
"\\Foo1\\Bar"
223+
);
224+
225+
assertDoesntContain(
226+
getClassNamesFromResourceGlob(xmlTags, "Foo2\\"),
227+
"\\Foo2\\Bar"
228+
);
198229
}
199230
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/XmlHelper.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,14 @@ public function setBar($arg1, $arg2)
1212
{
1313
}
1414
}
15-
}
15+
}
16+
17+
namespace Foo1
18+
{
19+
class Bar {}
20+
}
21+
22+
namespace Foo2
23+
{
24+
class Bar {}
25+
}

src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/config/xml/fixtures/services.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,9 @@
33
<services>
44
<service id="foo.bar_factory" class="Foo\Bar"/>
55
<prototype namespace="Foo\" resource="../src/*"/>
6+
<prototype namespace="Foo1\" resource="../src/*" exclude="../src/XmlHelper.php"/>
7+
<prototype namespace="Foo2\" resource="../src/*">
8+
<exclude>../src/XmlHelper.php</exclude>
9+
</prototype>
610
</services>
711
</container>

0 commit comments

Comments
 (0)