1010import com .intellij .psi .xml .XmlTag ;
1111import com .intellij .util .containers .ContainerUtil ;
1212import com .jetbrains .php .lang .psi .elements .Parameter ;
13- import com .jetbrains .php .lang .psi .elements .PhpClass ;
1413import com .jetbrains .php .lang .psi .elements .PhpNamedElement ;
1514import fr .adrienbrault .idea .symfony2plugin .config .xml .XmlHelper ;
1615import fr .adrienbrault .idea .symfony2plugin .tests .SymfonyLightCodeInsightFixtureTestCase ;
16+ import org .jetbrains .annotations .NotNull ;
1717
1818import java .util .ArrayList ;
1919import java .util .Collection ;
20- import java .util .function .Predicate ;
2120import 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}
0 commit comments