94
94
* @author Jesse Wouters
95
95
* @author Greg Turnquist
96
96
* @author Diego Krupitza
97
+ * @author Daniel Shuy
97
98
*/
98
99
@ ExtendWith (SpringExtension .class )
99
100
@ ContextConfiguration ("classpath:application-context.xml" )
@@ -489,12 +490,21 @@ void throwsExceptionForUnderSpecifiedSingleEntitySpecification() {
489
490
.isThrownBy (() -> repository .findOne (userHasFirstnameLike ("e" )));
490
491
}
491
492
492
- @ Test
493
+ @ Test // DATAJPA-1651
493
494
void executesCombinedSpecificationsCorrectly () {
494
495
495
496
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 );
498
508
}
499
509
500
510
@ Test // DATAJPA-253
@@ -506,16 +516,27 @@ void executesNegatingSpecificationCorrectly() {
506
516
assertThat (repository .findAll (spec )).containsOnly (secondUser );
507
517
}
508
518
509
- @ Test
519
+ @ Test // DATAJPA-1651
510
520
void executesCombinedSpecificationsWithPageableCorrectly () {
511
521
512
522
flushTestUsers ();
513
- Specification <User > spec = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
523
+ Specification <User > spec1 = userHasFirstname ("Oliver" ).or (userHasLastname ("Arrasz" ));
514
524
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 );
519
540
}
520
541
521
542
@ Test
@@ -602,22 +623,22 @@ void removeDetachedObject() {
602
623
assertThat (repository .count ()).isEqualTo (3L );
603
624
}
604
625
605
- @ Test
626
+ @ Test // DATAJPA-1651
606
627
void executesPagedSpecificationsCorrectly () {
607
628
608
629
Page <User > result = executeSpecWithSort (Sort .unsorted ());
609
630
assertThat (result .getContent ()).isSubsetOf (firstUser , thirdUser );
610
631
}
611
632
612
- @ Test
633
+ @ Test // DATAJPA-1651
613
634
void executesPagedSpecificationsWithSortCorrectly () {
614
635
615
636
Page <User > result = executeSpecWithSort (Sort .by (Direction .ASC , "lastname" ));
616
637
617
638
assertThat (result .getContent ()).contains (firstUser ).doesNotContain (secondUser , thirdUser );
618
639
}
619
640
620
- @ Test
641
+ @ Test // DATAJPA-1651
621
642
void executesPagedSpecificationWithSortCorrectly2 () {
622
643
623
644
Page <User > result = executeSpecWithSort (Sort .by (Direction .DESC , "lastname" ));
@@ -2821,11 +2842,21 @@ private Page<User> executeSpecWithSort(Sort sort) {
2821
2842
2822
2843
flushTestUsers ();
2823
2844
2824
- Specification <User > spec = userHasFirstname ("Oliver" ).or (userHasLastname ("Matthews" ));
2845
+ Specification <User > spec1 = userHasFirstname ("Oliver" ).or (userHasLastname ("Matthews" ));
2825
2846
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 ;
2829
2860
}
2830
2861
2831
2862
private interface UserProjectionInterfaceBased {
0 commit comments