@@ -285,7 +285,7 @@ public void findByDescriptionLike_whenNoMatch_thenReturnEmptyCollection() {
285
285
286
286
// when
287
287
String search = "xyz" ;
288
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
288
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
289
289
290
290
// then
291
291
assertThat ( found ).isEmpty ();
@@ -304,7 +304,7 @@ public void findByDescriptionLike_whenMultipleMatchInSameUser_thenReturnSingleUs
304
304
305
305
// when
306
306
String search = "Description" ;
307
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
307
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
308
308
309
309
// then
310
310
assertThat ( found ).hasSize ( 1 );
@@ -322,7 +322,7 @@ public void findByDescriptionLike_whenCaseInsensitiveMatch_thenReturnUser() {
322
322
323
323
// when
324
324
String search = user .getProfile ().getDescription ().toUpperCase ();
325
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
325
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
326
326
327
327
// then
328
328
assertThat ( found ).hasSize ( 1 );
@@ -340,7 +340,7 @@ public void findByDescriptionLike_whenDescriptionStartsWithMatch_thenReturnUser(
340
340
341
341
// when
342
342
String search = user .getProfile ().getDescription ().substring ( 0 , 3 );
343
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
343
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
344
344
345
345
// then
346
346
assertThat ( found ).hasSize ( 1 );
@@ -358,7 +358,7 @@ public void findByDescriptionLike_whenDescriptionEndsWithMatch_thenReturnUser()
358
358
359
359
// when
360
360
String search = user .getProfile ().getDescription ().substring ( 3 );
361
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
361
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
362
362
363
363
// then
364
364
assertThat ( found ).hasSize ( 1 );
@@ -376,7 +376,7 @@ public void findByDescriptionLike_whenDescriptionContainsMatch_thenReturnUser()
376
376
377
377
// when
378
378
String search = user .getProfile ().getDescription ().substring ( 1 , 3 );
379
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
379
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
380
380
381
381
// then
382
382
assertThat ( found ).hasSize ( 1 );
@@ -395,7 +395,7 @@ public void findByDescriptionLike_whenTaxonDescriptionStartsWithMatch_thenReturn
395
395
396
396
// when
397
397
String search = user .getTaxonDescriptions ().get ( taxon ).substring ( 0 , 3 );
398
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
398
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
399
399
400
400
// then
401
401
assertThat ( found ).hasSize ( 1 );
@@ -414,7 +414,7 @@ public void findByDescriptionLike_whenTaxonDescriptionEndsWithMatch_thenReturnUs
414
414
415
415
// when
416
416
String search = user .getTaxonDescriptions ().get ( taxon ).substring ( 3 );
417
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
417
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
418
418
419
419
// then
420
420
assertThat ( found ).hasSize ( 1 );
@@ -433,7 +433,7 @@ public void findByDescriptionLike_whenTaxonDescriptionContainsMatch_thenReturnUs
433
433
434
434
// when
435
435
String search = user .getTaxonDescriptions ().get ( taxon ).substring ( 1 , 3 );
436
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
436
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
437
437
438
438
// then
439
439
assertThat ( found ).hasSize ( 1 );
@@ -454,13 +454,37 @@ public void findByDescriptionLike_whenMultipleMatches_thenReturnMultipleUsers()
454
454
455
455
// when
456
456
String search = user .getProfile ().getDescription ();
457
- Collection <User > found = userRepository .findByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
457
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
458
458
459
459
// then
460
460
assertThat ( found ).hasSize ( 2 );
461
461
assertThat ( found ).containsExactly ( user , user2 );
462
462
}
463
463
464
+ @ Test
465
+ public void findByDescriptionLike_whenMultipleMatchInMultipleTaxa_thenReturnSingleUser () {
466
+ // given
467
+ User user = createUnpersistedUser ();
468
+ user .getProfile ().setDescription ( "Test Description" );
469
+
470
+ Taxon taxon = entityManager .persist ( createTaxon ( 1 ) );
471
+ user .getTaxonDescriptions ().put ( taxon , "Taxon Description" );
472
+
473
+ Taxon taxon2 = entityManager .persist ( createTaxon ( 2 ) );
474
+ user .getTaxonDescriptions ().put ( taxon2 , "Taxon Description" );
475
+
476
+ entityManager .persist ( user );
477
+ entityManager .flush ();
478
+
479
+ // when
480
+ String search = "Description" ;
481
+ Collection <User > found = userRepository .findDistinctByProfileDescriptionContainingIgnoreCaseOrTaxonDescriptionsContainingIgnoreCase ( search , search );
482
+
483
+ // then
484
+ assertThat ( found ).hasSize ( 1 );
485
+ assertThat ( found .iterator ().next () ).isEqualTo ( user );
486
+ }
487
+
464
488
@ Test
465
489
public void save_whenUserWithCompleteProfile_thenSucceed () {
466
490
User user = createUnpersistedUser ();
0 commit comments