99import com .intellij .psi .PsiElement ;
1010import com .intellij .psi .PsiFile ;
1111import com .intellij .psi .PsiReference ;
12+ import com .intellij .psi .PsiReferenceProvider ;
1213import com .intellij .psi .ResolveResult ;
1314import com .intellij .psi .impl .file .PsiDirectoryImpl ;
1415import com .intellij .psi .xml .XmlAttributeValue ;
1516import com .intellij .psi .xml .XmlFile ;
1617import com .intellij .psi .xml .XmlTag ;
18+ import com .intellij .util .ProcessingContext ;
1719import com .jetbrains .php .lang .psi .elements .Method ;
1820import com .jetbrains .php .lang .psi .elements .Parameter ;
1921import com .jetbrains .php .lang .psi .elements .ParameterList ;
2022import com .jetbrains .php .lang .psi .elements .PhpClass ;
2123import com .magento .idea .magento2plugin .inspections .BaseInspectionsTestCase ;
2224import com .magento .idea .magento2plugin .magento .packages .File ;
2325import com .magento .idea .magento2plugin .reference .xml .PolyVariantReferenceBase ;
26+ import java .lang .reflect .InvocationTargetException ;
27+ import java .util .ArrayList ;
28+ import java .util .Arrays ;
29+ import java .util .List ;
2430import org .jetbrains .annotations .Nullable ;
2531
2632@ SuppressWarnings ({
@@ -36,6 +42,7 @@ protected void setUp() throws Exception {
3642 myFixture .setTestDataPath (testDataFolderPath );
3743 }
3844
45+ @ SuppressWarnings ("PMD.CognitiveComplexity" )
3946 protected void assertHasReferenceToXmlAttributeValue (final String reference ) {
4047 final PsiElement element = getElementFromCaret ();
4148 for (final PsiReference psiReference : element .getReferences ()) {
@@ -70,6 +77,7 @@ protected void assertHasReferenceToXmlAttributeValue(final String reference) {
7077 fail (String .format (referenceNotFound , reference ));
7178 }
7279
80+ @ SuppressWarnings ("PMD.CognitiveComplexity" )
7381 protected void assertHasReferenceToXmlTag (final String tagName ) {
7482 final PsiElement element = getElementFromCaret ();
7583 for (final PsiReference psiReference : element .getReferences ()) {
@@ -106,7 +114,40 @@ protected void assertHasReferenceToXmlTag(final String tagName) {
106114
107115 protected void assertHasReferenceToFile (final String reference ) {
108116 final PsiElement element = getElementFromCaret ();
109- for (final PsiReference psiReference : element .getReferences ()) {
117+
118+ assertHasReferenceToFile (reference , Arrays .asList (element .getReferences ()));
119+ }
120+
121+ protected void assertHasReferenceToFile (
122+ final String reference ,
123+ final Class <? extends PsiReferenceProvider > providerClass
124+ ) {
125+ final PsiElement element = getLeafElementFromCaret ();
126+ final List <PsiReference > references = new ArrayList <>();
127+
128+ try {
129+ final PsiReferenceProvider provider = providerClass .getConstructor ().newInstance ();
130+ references .addAll (
131+ Arrays .asList (
132+ provider .getReferencesByElement (element , new ProcessingContext ())
133+ )
134+ );
135+ } catch (NoSuchMethodException
136+ | IllegalAccessException
137+ | InvocationTargetException
138+ | InstantiationException exception
139+ ) {
140+ references .addAll (Arrays .asList (element .getReferences ()));
141+ }
142+
143+ assertHasReferenceToFile (reference , references );
144+ }
145+
146+ protected void assertHasReferenceToFile (
147+ final String reference ,
148+ final List <PsiReference > references
149+ ) {
150+ for (final PsiReference psiReference : references ) {
110151 final PsiElement resolved = psiReference .resolve ();
111152 if (!(resolved instanceof PsiFile )) {
112153 continue ;
@@ -250,4 +291,8 @@ protected void assertEmptyReference() {
250291 private PsiElement getElementFromCaret () {
251292 return myFixture .getFile ().findElementAt (myFixture .getCaretOffset ()).getParent ();
252293 }
294+
295+ private PsiElement getLeafElementFromCaret () {
296+ return myFixture .getFile ().findElementAt (myFixture .getCaretOffset ());
297+ }
253298}
0 commit comments