11package fr .adrienbrault .idea .symfony2plugin .tests .util .resource ;
22
33import com .intellij .openapi .util .Pair ;
4+ import com .intellij .openapi .vfs .VirtualFile ;
45import com .intellij .psi .PsiFile ;
56import com .intellij .util .containers .ContainerUtil ;
67import com .jetbrains .php .lang .psi .elements .PhpClass ;
78import fr .adrienbrault .idea .symfony2plugin .tests .SymfonyLightCodeInsightFixtureTestCase ;
9+ import fr .adrienbrault .idea .symfony2plugin .util .PsiElementUtils ;
810import fr .adrienbrault .idea .symfony2plugin .util .resource .FileResourceUtil ;
911import org .jetbrains .annotations .NotNull ;
1012
13+ import java .util .Collection ;
14+
1115/**
1216 * @author Daniel Espendiller <daniel@espendiller.net>
1317 *
@@ -17,26 +21,22 @@ public class FileResourceUtilTest extends SymfonyLightCodeInsightFixtureTestCase
1721
1822 public void setUp () throws Exception {
1923 super .setUp ();
20-
21- myFixture .copyFileToProject ("classes.php" );
22- myFixture .configureByText ("target.xml" , "" +
23- "<routes>\n " +
24- " <import resource=\" @FooBundle/foo.xml\" />\n " +
25- "</routes>"
26- );
2724 }
2825
2926 public String getTestDataPath () {
3027 return "src/test/java/fr/adrienbrault/idea/symfony2plugin/tests/util/resource/fixtures" ;
3128 }
3229
3330 public void testGetFileResourceRefers () {
34- PsiFile psiFile = myFixture . configureByText ( "foo.xml" , "foo" );
31+ createBundleScopeProject ( );
3532
33+ PsiFile psiFile = myFixture .configureByText ("foo.xml" , "foo" );
3634 assertNotNull (ContainerUtil .find (FileResourceUtil .getFileResourceRefers (getProject (), psiFile .getVirtualFile ()), virtualFile -> virtualFile .getName ().equals ("target.xml" )));
3735 }
3836
3937 public void testGetFileResourceTargetsInBundleDirectory () {
38+ createBundleScopeProject ();
39+
4040 for (String s : new String []{"@FooBundle/Controller" , "@FooBundle\\ Controller" , "@FooBundle/Controller/" , "@FooBundle//Controller" , "@FooBundle\\ Controller\\ " }) {
4141 assertNotNull (ContainerUtil .find (FileResourceUtil .getFileResourceTargetsInBundleDirectory (getProject (), s ), psiElement ->
4242 psiElement instanceof PhpClass && "\\ FooBundle\\ Controller\\ FooController" .equals (((PhpClass ) psiElement ).getFQN ())
@@ -65,4 +65,37 @@ public void testGetGlobalPatternDirectory() {
6565 assertEquals ("src/" , globalPatternDirectory .getFirst ());
6666 assertNull (globalPatternDirectory .getSecond ());
6767 }
68+
69+ public void testFileResources () {
70+ VirtualFile services = myFixture .copyFileToProject ("services.xml" , "config/services.xml" );
71+ VirtualFile virtualFile = myFixture .copyFileToProject ("classes.php" , "src/Test.php" );
72+
73+ assertTrue (FileResourceUtil .hasFileResources (getProject (), PsiElementUtils .virtualFileToPsiFile (getProject (), virtualFile )));
74+
75+ Collection <Pair <VirtualFile , String >> fileResources = FileResourceUtil .getFileResources (getProject (), virtualFile );
76+ assertTrue (fileResources .stream ().anyMatch (pair -> pair .getFirst ().getPath ().equals (services .getPath ())));
77+ }
78+
79+ public void testGetFileImplementsLineMarker () {
80+ myFixture .copyFileToProject ("services.xml" , "config/services.xml" );
81+ VirtualFile virtualFile = myFixture .copyFileToProject ("classes.php" , "src/Test.php" );
82+ assertNotNull (FileResourceUtil .getFileImplementsLineMarker (PsiElementUtils .virtualFileToPsiFile (getProject (), virtualFile )));
83+ }
84+
85+ public void testGetFileImplementsLineMarkerForBundle () {
86+ createBundleScopeProject ();
87+
88+ myFixture .copyFileToProject ("services.xml" , "config/services.xml" );
89+ VirtualFile virtualFile = myFixture .copyFileToProject ("classes.php" , "src/Test.php" );
90+ assertNotNull (FileResourceUtil .getFileImplementsLineMarker (PsiElementUtils .virtualFileToPsiFile (getProject (), virtualFile )));
91+ }
92+
93+ private void createBundleScopeProject () {
94+ myFixture .copyFileToProject ("classes.php" );
95+ myFixture .configureByText ("target.xml" , "" +
96+ "<routes>\n " +
97+ " <import resource=\" @FooBundle/foo.xml\" />\n " +
98+ "</routes>"
99+ );
100+ }
68101}
0 commit comments