package Ġun q . edu . remote trainer . persistence . repository Ċ Ċ import Ġorg . assertj . core . api . Assertions Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . springframework . boot . test . autoconfigure . orm . jpa . Data Jpa Test Ċ import Ġorg . springframework . boot . test . autoconfigure . orm . jpa . Test EntityManager Ċ import Ġorg . springframework . data . repository . Crud Repository Ċ import Ġorg . springframework . data . repository . findById OrNull Ċ Ċ /** Ċ Ġ* ĠAbstract ĠRepository Ġtest . Ċ Ġ* ĠIt Ġcontains Ġthe Ġbasic Ġtests Ġfor Ġbasic ĠCRUD Ġmethods . Ċ Ġ* ĠThe Ġimplementations Ġshould Ġdefine Ġthe Ġupdate Ġoperation , Ġalong Ġwith Ġthe Ġcustom Ġrepository 's Ġmethods . Ċ Ġ* ĠThe Ġrepository Ġis Ġcleaned Ġafter Ġeach Ġtest , Ġto Ġmaintain Ġconsistency Ġon Ġfurther Ġtests . Ċ Ġ* ĠIf Ġinstances Ġare Ġcreated Ġinside Ġthe Ġtest Ġcontext , Ġbe Ġsure Ġto Ġoverride ĠafterEach Ġmethod Ġand Ġdelete Ġthem . Ċ Ġ* ĠGener ics : Ċ Ġ* Ġ Ġ* ĠE Ġ= ĠEntity Ġobject . Ċ Ġ*/ Ċ @ Data Jpa Test Ċ abstract Ġclass ĠAbstract Repository Test < E > Ġ{ ĊĠĠĠ Ġabstract Ġval Ġentity Manager : ĠTest EntityManager ĊĠĠĠ Ġabstract Ġval Ġrepository : ĠCr ud Repository < E , ĠInt > Ġ// Ġfor Ġnow , ĠInt Ġas Ġid Ġis Ġok ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠafterEach () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete All () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġcreates Ġan Ġinstance `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Instance : ĠE Ġ= Ġsample Entity () ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġval Ġsaved Instance : ĠE Ġ= Ġrepository . save ( newInstance ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠ Ġnew Instance Assertions ( saved Instance , Ġnew Instance ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġreturns Ġa Ġsaved Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġarrange ĊĠĠĠĠĠĠĠ Ġval Ġentity : ĠE Ġ= Ġentity Manager . persist And Flush ( sample Entity ()) ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġval Ġfound Ġ= Ġrepository . findById OrNull ( id ( entity )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( found ). isEqualTo ( entity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` it Ġremoves Ġan Ġentity `() Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġarrange ĊĠĠĠĠĠĠĠ Ġval Ġentity : ĠE Ġ= Ġentity Manager . persist And Flush ( sample Entity ()) ĊĠĠĠĠĠĠĠ Ġval Ġentity Id : ĠInt Ġ= Ġid ( entity ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġact ĊĠĠĠĠĠĠĠ Ġrepository . delete ById ( entityId ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġassert ĊĠĠĠĠĠĠĠ ĠAssertions . assertThat ( repository . findById OrNull ( entityId )). isNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠAssertions Ġto Ġbe Ġdone Ġfor Ġa Ġnew Ġinstance Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġnew Instance Assertions ( saved Instance : ĠE , Ġnew Instance : ĠE ) ĊĊĠĠĠ Ġ/** ĠReturns Ġthe ĠEntity Ġid Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġid ( entity : ĠE ): ĠInt ĊĊĠĠĠ Ġ/** ĠCreates Ġa Ġnew Ġsample ĠEntity Ġto Ġperform Ġbasic ĠCRUD Ġoperations Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġsample Entity (): ĠE Ċ }