/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠCo up ang ĠLtd . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . springframework . data . re query . kotlin . repository . query Ċ Ċ import Ġio . re query . query . Result Ċ import Ġio . re query . query . element . Query Element Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . springframework . data . domain . Example Ċ import Ġorg . springframework . data . domain . Example Matcher . Generic Property Matchers . startsWith Ċ import Ġorg . springframework . data . domain . Example Matcher . matching Ċ import Ġorg . springframework . data . re query . kotlin . domain . Abstract Domain Test Ċ import Ġorg . springframework . data . re query . kotlin . domain . sample . User Ċ import Ġorg . springframework . data . re query . kotlin . domain . sample . User Entity Ċ import Ġorg . springframework . data . re query . kotlin . unwrap Ċ Ċ class ĠQuery Example Builder Test Ġ: ĠAbstract Domain Test () Ġ{ ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ Ġoperations . delete All ( User :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġuser Query By Example ( example : ĠExample < User Entity >): ĠQuery Element < out ĠResult < User Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= Ġoperations . select ( User Entity :: class ). unwrap () ĊĠĠĠĠĠĠĠ Ġreturn ĠQuery By Example Builder . build ( base , Ġexample ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` firstname Ġequals Ġexample `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġ" example "; Ġemail Address Ġ= Ġ" deb op @ example . com " Ġ} ĊĠĠĠĠĠĠĠ Ġoperations . insert ( user ) ĊĠĠĠĠĠĠĠ ĠassertThat ( user . id ). isNotNull (). is GreaterThan ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexample User Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġuser . firstname Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexample Ġ= ĠExample . of ( example User ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġuser Query By Example ( example ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfound User Ġ= Ġquery . get (). first OrNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( found User ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( found User . id ). isEqualTo ( user . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` firstname Ġand Ġemail Ġequals Ġexample `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġ" example "; Ġemail Address Ġ= Ġ" deb op @ example . com " Ġ} ĊĠĠĠĠĠĠĠ Ġoperations . insert ( user ) ĊĠĠĠĠĠĠĠ ĠassertThat ( user . id ). isNotNull (). is GreaterThan ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexample User Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġuser . firstname ; Ġemail Address Ġ= Ġuser . email Address Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġexample Ġ= ĠExample . of ( example User ) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġuser Query By Example ( example ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfound User Ġ= Ġquery . get (). first OrNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( found User ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( found User . id ). isEqualTo ( user . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` firstname Ġstart sWith Ġexample `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġ" example "; Ġemail Address Ġ= Ġ" deb op @ example . com " Ġ} ĊĠĠĠĠĠĠĠ Ġoperations . insert ( user ) ĊĠĠĠĠĠĠĠ ĠassertThat ( user . id ). isNotNull (). is GreaterThan ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexample User Ġ= ĠUser Entity (). apply Ġ{ Ġfirst name Ġ= Ġ" EX A " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġexample Ġ= ĠExample . of ( example User , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmatching () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Matcher (" firstname ", Ġstart sWith (). ignore Case ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Ignore Null Values () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Ignore Paths (" lastname ", Ġ" email Address ", Ġ" roles ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġuser Query By Example ( example ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfound User Ġ= Ġquery . get (). first OrNull () ĊĠĠĠĠĠĠĠ ĠassertThat ( found User ). isNotNull ĊĠĠĠĠĠĠĠ ĠassertThat ( found User . id ). isEqualTo ( user . id ) ĊĠĠĠ Ġ} Ċ }