99import com .intellij .codeInsight .lookup .LookupElementPresentation ;
1010import com .intellij .psi .PsiClass ;
1111import com .intellij .psi .PsiElement ;
12+ import com .intellij .psi .PsiField ;
1213import com .intellij .psi .PsiMethod ;
1314import com .intellij .psi .PsiParameter ;
1415import com .intellij .psi .PsiReference ;
@@ -93,6 +94,35 @@ private void assertCarDtoWithBuilderAutoComplete() {
9394 );
9495 }
9596
97+ private void assertCarDtoPublicAutoComplete () {
98+ assertThat ( myItems )
99+ .extracting ( LookupElement ::getLookupString )
100+ .containsExactlyInAnyOrder (
101+ "make" ,
102+ "seatCount" ,
103+ "manufacturingYear" ,
104+ "myDriver" ,
105+ "passengers" ,
106+ "price" ,
107+ "category" ,
108+ "available"
109+ );
110+
111+ assertThat ( myItems )
112+ .extracting ( LookupElementPresentation ::renderElement )
113+ .usingRecursiveFieldByFieldElementComparator ()
114+ .containsExactlyInAnyOrder (
115+ createVariable ( "make" , "String" ),
116+ createVariable ( "seatCount" , "int" ),
117+ createVariable ( "manufacturingYear" , "String" ),
118+ createVariable ( "myDriver" , "PersonDto" ),
119+ createVariable ( "passengers" , "List<PersonDto>" ),
120+ createVariable ( "price" , "Long" ),
121+ createVariable ( "category" , "String" ),
122+ createVariable ( "available" , "boolean" )
123+ );
124+ }
125+
96126 private void assertCarAutoComplete () {
97127 assertThat ( myItems )
98128 .extracting ( LookupElement ::getLookupString )
@@ -154,6 +184,11 @@ public void testCarMapperReturnTargetCarDtoWithBuilder() {
154184 assertCarDtoWithBuilderAutoComplete ();
155185 }
156186
187+ public void testCarMapperReturnTargetCarDtoPublic () {
188+ configureByTestName ();
189+ assertCarDtoPublicAutoComplete ();
190+ }
191+
157192 public void testPersonMapperReturnTargetFluentPersonDto () {
158193 configureByTestName ();
159194 assertFluentPersonDtoAutoComplete ();
@@ -169,6 +204,11 @@ public void testCarMapperUpdateTargetCarDtoWithBuilder() {
169204 assertCarDtoWithBuilderAutoComplete ();
170205 }
171206
207+ public void testCarMapperUpdateTargetCarDtoPublic () {
208+ configureByTestName ();
209+ assertCarDtoPublicAutoComplete ();
210+ }
211+
172212 public void testCarMapperUpdateTargetFluentCarDto () {
173213 configureByTestName ();
174214 assertCarDtoAutoComplete ();
@@ -341,6 +381,20 @@ public void testCarMapperReferenceTargetPropertyInCarDto() {
341381 } );
342382 }
343383
384+ public void testCarMapperReferencePublicTargetProperty () {
385+ myFixture .configureByFile ( "CarMapperReferencePublicTargetProperty.java" );
386+ PsiElement reference = myFixture .getElementAtCaret ();
387+
388+ assertThat ( reference )
389+ .isInstanceOfSatisfying ( PsiField .class , field -> {
390+ assertThat ( field .getName () ).isEqualTo ( "seatCount" );
391+ assertThat ( field .getPresentation () ).isNotNull ();
392+ assertThat ( field .getPresentation ().getPresentableText () ).isEqualTo ( "seatCount" );
393+ assertThat ( field .getType () ).isNotNull ();
394+ assertThat ( field .getType ().getPresentableText () ).isEqualTo ( "int" );
395+ } );
396+ }
397+
344398 public void testCarMapperReferenceTargetPropertyInCarDtoWithBuilder () {
345399 myFixture .configureByFile ( "CarMapperReferenceBuilderTargetProperty.java" );
346400 PsiElement reference = myFixture .getElementAtCaret ();
0 commit comments