11package com .cedricziel .idea .typo3 .extbase .persistence ;
22
33import com .intellij .psi .PsiElement ;
4+ import com .intellij .psi .PsiReference ;
45import com .intellij .testFramework .fixtures .LightCodeInsightFixtureTestCase ;
56import com .jetbrains .php .lang .psi .elements .Field ;
7+ import com .jetbrains .php .lang .psi .elements .MethodReference ;
8+ import com .jetbrains .php .lang .psi .elements .PhpNamedElement ;
9+ import com .jetbrains .php .lang .psi .elements .PhpReference ;
10+ import com .jetbrains .php .lang .psi .resolve .PhpReferenceResolver ;
11+
12+ import java .util .Collection ;
613
714public class ExtbasePersistenceReferenceResolverTest extends LightCodeInsightFixtureTestCase {
815 @ Override
@@ -24,9 +31,25 @@ public void testCanNavigateToPropertiesFromMagicMethodsOnMembers() {
2431 myFixture .copyFileToProject ("PersistenceMocks.php" );
2532 myFixture .configureByFile ("RepositoryMagicMethodNavigationOnMember.php" );
2633
27- PsiElement elementAtCaret = myFixture .getElementAtCaret ();
34+ int caretOffset = myFixture .getCaretOffset ();
35+ PsiElement elementAtCaret = myFixture .getFile ().findElementAt (caretOffset ).getParent ();
2836
29- assertInstanceOf (elementAtCaret , Field .class );
30- assertEquals ("author" , ((Field ) elementAtCaret ).getName ());
37+ assertInstanceOf (elementAtCaret , MethodReference .class );
38+
39+ for (PsiReference ref : elementAtCaret .getReferences ()) {
40+ if (ref instanceof PhpReference ) {
41+ for (PhpReferenceResolver resolver : PhpReferenceResolver .EP_NAME .getExtensions ()) {
42+ Collection <? extends PhpNamedElement > resolve = resolver .resolve ((PhpReference ) ref );
43+
44+ for (PhpNamedElement phpNamedElement : resolve ) {
45+ if (phpNamedElement .getName ().equals ("author" ) && phpNamedElement instanceof Field ) {
46+ return ;
47+ }
48+ }
49+ }
50+ }
51+ }
52+
53+ fail ("Could not resolve to correct object" );
3154 }
3255}
0 commit comments