package Ġio . cre avity . ex posed x . managers Ċ Ċ import Ġio . cre avity . ex posed x . dao . entities . gener ics . Int Entity Ċ import Ġio . cre avity . ex posed x . dao . entities . gener ics . Int Entity Table Ċ import Ġio . cre avity . ex posed x . dao . entities . getValue Ċ import Ġio . cre avity . ex posed x . dao . tables . new Ċ import Ġio . mock k . clear Mocks Ċ import Ġio . mock k . spy k Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . ex posed . sql . Database Ċ import Ġorg . jetbrains . ex posed . sql . Schema Utils Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ import Ġorg . junit . jupiter . api .* Ċ import Ġjava . sql . Connection Ċ import Ġjava . sql . Driver Manager Ċ Ċ open Ġclass ĠUser Table AM : ĠInt Entity Table < User AM , ĠUser Table AM >() Ġ{ ĊĠĠĠ Ġval Ġname Ġby Ġvarchar (" name ", Ġ 2 5 5 ) Ċ } Ċ Ċ class ĠUser AM : ĠInt Entity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠTable : ĠUser Table AM () ĊĠĠĠ Ġvar Ġname Ġby ĠTable . name Ċ } Ċ Ċ open Ġclass ĠCountry Table AM : ĠInt Audit able Table < Country AM , ĠCountry Table AM , ĠInt , ĠUser AM , ĠUser Table AM >( user Table Ġ= ĠUser AM ) Ġ{ ĊĠĠĠ Ġval Ġname Ġby Ġvarchar (" name ", Ġ 2 5 5 ) Ċ } Ċ Ċ class ĠCountry AM : ĠInt Entity (), ĠI Audit able Entity < Int , ĠUser AM > Ġ Ġ{ ĊĠĠĠ Ġcompanion Ġobject ĠTable : ĠCountry Table AM () ĊĠĠĠ Ġvar Ġname Ġby ĠTable . name Ċ } Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ class ĠTest Audit Manager Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġconnection : ĠConnection ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun Ġbefore All () Ġ{ ĊĠĠĠĠĠĠĠ ĠClass . forName (" org . h 2 . Driver "). newInstance () ĊĊĠĠĠĠĠĠĠ ĠDatabase . connect ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġspy k ( Driver Manager . getConnection (" jdbc : h 2 : mem : regular ; DB _ CLOSE _ DELAY =- 1 ;", Ġ"", Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . create ( User AM , ĠCountry AM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġclear Mocks ( connection ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun Ġafter () Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSchema Utils . drop ( Country AM , ĠUser AM ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġcreate Ġobject Ġwith Ġcreated Ġby `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġper u Ġ= ĠCountry AM () ĊĠĠĠĠĠĠĠ Ġper u . created By Ġ= ĠUser AM . new Ġ{ Ġname Ġ= Ġ" J uan ĠP ere z " Ġ} ĊĠĠĠĠĠĠĠ Ġper u . modified By Ġ= Ġper u . created By ĊĠĠĠĠĠĠĠ Ġper u . name Ġ= Ġ" Per u " ĊĠĠĠĠĠĠĠ Ġper u . save () ĊĠĠĠĠĠĠĠ ĠassertThat ( Country AM . objects . count ()). isEqualTo ( 1 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Test Ġrelated Ġfilter `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser A Ġ= ĠUser AM . new Ġ{ Ġname Ġ= Ġ" J uan ĠP ere z " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser B Ġ= ĠUser AM . new Ġ{ Ġname Ġ= Ġ" David ĠP ere z " Ġ} ĊĠĠĠĠĠĠĠ ĠCountry AM . new Ġ{ Ġname Ġ= Ġ" Co un tr "; Ġcreated By Ġ= Ġuser A ; Ġmodified By = user B Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ