9494 * @author Jesse Wouters
9595 * @author Greg Turnquist
9696 * @author Diego Krupitza
97+ * @author Daniel Shuy
9798 */
9899@ ExtendWith (SpringExtension .class )
99100@ ContextConfiguration ("classpath:application-context.xml" )
@@ -489,12 +490,21 @@ void throwsExceptionForUnderSpecifiedSingleEntitySpecification() {
489490 .isThrownBy (() -> repository .findOne (userHasFirstnameLike ("e" )));
490491 }
491492
492- @ Test
493+ @ Test // DATAJPA-1651
493494 void executesCombinedSpecificationsCorrectly () {
494495
495496 flushTestUsers ();
496- Specification <User > spec = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
497- assertThat (repository .findAll (spec )).hasSize (2 );
497+ Specification <User > spec1 = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
498+ List <User > users1 = repository .findAll (spec1 );
499+ assertThat (users1 ).hasSize (2 );
500+
501+ Specification <User > spec2 = Specification .anyOf ( //
502+ userHasFirstname ("Oliver" ), //
503+ userHasLastname ("Arrasz" ));
504+ List <User > users2 = repository .findAll (spec2 );
505+ assertThat (users2 ).hasSize (2 );
506+
507+ assertThat (users1 ).containsExactlyInAnyOrderElementsOf (users2 );
498508 }
499509
500510 @ Test // DATAJPA-253
@@ -506,16 +516,27 @@ void executesNegatingSpecificationCorrectly() {
506516 assertThat (repository .findAll (spec )).containsOnly (secondUser );
507517 }
508518
509- @ Test
519+ @ Test // DATAJPA-1651
510520 void executesCombinedSpecificationsWithPageableCorrectly () {
511521
512522 flushTestUsers ();
513- Specification <User > spec = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
523+ Specification <User > spec1 = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
514524
515- Page <User > users = repository .findAll (spec , PageRequest .of (0 , 1 ));
516- assertThat (users .getSize ()).isEqualTo (1 );
517- assertThat (users .hasPrevious ()).isFalse ();
518- assertThat (users .getTotalElements ()).isEqualTo (2L );
525+ Page <User > users1 = repository .findAll (spec1 , PageRequest .of (0 , 1 ));
526+ assertThat (users1 .getSize ()).isEqualTo (1 );
527+ assertThat (users1 .hasPrevious ()).isFalse ();
528+ assertThat (users1 .getTotalElements ()).isEqualTo (2L );
529+
530+ Specification <User > spec2 = Specification .anyOf ( //
531+ userHasFirstname ("Oliver" ), //
532+ userHasLastname ("Arrasz" ));
533+
534+ Page <User > users2 = repository .findAll (spec2 , PageRequest .of (0 , 1 ));
535+ assertThat (users2 .getSize ()).isEqualTo (1 );
536+ assertThat (users2 .hasPrevious ()).isFalse ();
537+ assertThat (users2 .getTotalElements ()).isEqualTo (2L );
538+
539+ assertThat (users1 ).containsExactlyInAnyOrderElementsOf (users2 );
519540 }
520541
521542 @ Test
@@ -602,22 +623,22 @@ void removeDetachedObject() {
602623 assertThat (repository .count ()).isEqualTo (3L );
603624 }
604625
605- @ Test
626+ @ Test // DATAJPA-1651
606627 void executesPagedSpecificationsCorrectly () {
607628
608629 Page <User > result = executeSpecWithSort (Sort .unsorted ());
609630 assertThat (result .getContent ()).isSubsetOf (firstUser , thirdUser );
610631 }
611632
612- @ Test
633+ @ Test // DATAJPA-1651
613634 void executesPagedSpecificationsWithSortCorrectly () {
614635
615636 Page <User > result = executeSpecWithSort (Sort .by (Direction .ASC , "lastname" ));
616637
617638 assertThat (result .getContent ()).contains (firstUser ).doesNotContain (secondUser , thirdUser );
618639 }
619640
620- @ Test
641+ @ Test // DATAJPA-1651
621642 void executesPagedSpecificationWithSortCorrectly2 () {
622643
623644 Page <User > result = executeSpecWithSort (Sort .by (Direction .DESC , "lastname" ));
@@ -2821,11 +2842,21 @@ private Page<User> executeSpecWithSort(Sort sort) {
28212842
28222843 flushTestUsers ();
28232844
2824- Specification <User > spec = userHasFirstname ("Oliver" ).or (userHasLastname ("Matthews" ));
2845+ Specification <User > spec1 = userHasFirstname ("Oliver" ).or (userHasLastname ("Matthews" ));
28252846
2826- Page <User > result = repository .findAll (spec , PageRequest .of (0 , 1 , sort ));
2827- assertThat (result .getTotalElements ()).isEqualTo (2L );
2828- return result ;
2847+ Page <User > result1 = repository .findAll (spec1 , PageRequest .of (0 , 1 , sort ));
2848+ assertThat (result1 .getTotalElements ()).isEqualTo (2L );
2849+
2850+ Specification <User > spec2 = Specification .anyOf ( //
2851+ userHasFirstname ("Oliver" ), //
2852+ userHasLastname ("Matthews" ));
2853+
2854+ Page <User > result2 = repository .findAll (spec2 , PageRequest .of (0 , 1 , sort ));
2855+ assertThat (result2 .getTotalElements ()).isEqualTo (2L );
2856+
2857+ assertThat (result1 ).containsExactlyElementsOf (result2 );
2858+
2859+ return result2 ;
28292860 }
28302861
28312862 private interface UserProjectionInterfaceBased {
0 commit comments