package Ġat . cp ick l . g ads u . client . x props Ċ Ċ /* Ċ @ Test ( groups Ġ= ĠarrayOf (" h sql db ", Ġ" integration ")) Ċ class ĠProps ServiceImpl Test Ġ: ĠH sql db Test () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġclient Ġ= ĠClient . un saved Valid Instance () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepo : ĠClient Props Repository ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest ee : ĠProps Service ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhelper : ĠTest Prop Helper ĊĊĠĠĠ Ġprivate Ġval Ġtest Prop 1 Ġ= ĠPair ( Props . Enums . Sleep Enum . key , ĠMulti Enum Prop ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Enum . Problems Fall As leep . key , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSleep Enum . T ired InThe Mor ning . key ĊĠĠĠĠĠĠĠ Ġ))) ĊĠĠĠ Ġprivate Ġval Ġtest Props 1 Map Ġ= Ġmap Of ( test Prop 1 ) ĊĠĠĠ Ġprivate Ġval Ġtest Props 1 Ġ= ĠClient Props ( test Props 1 Map ) ĊĊĠĠĠ Ġ@ Before Method ĊĠĠĠ Ġfun Ġinit State () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient Ġ= Ġinsert Client Via Repo ( Client . un saved Valid Instance ()) ĊĠĠĠĠĠĠĠ Ġrepo Ġ= ĠX Props Jdbc Repository ( jdbc x ) ĊĠĠĠĠĠĠĠ Ġtest ee Ġ= ĠProps ServiceImpl ( repo ) ĊĠĠĠĠĠĠĠ Ġhelper Ġ= ĠTest Prop Helper ( jdbc x ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` update , Ġmulti Ġenum Ġproperty , Ġsun sh ine `() Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Default Enum Props () ĊĠĠĠĠĠĠĠ Ġhelper . assert Rows ( Prop Sql Row ( client . id !! , ĠProps . Enums . Sleep Enum . key , Ġ" Problems Fall As leep , T ired InThe Mor ning ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( depends On Methods Ġ= ĠarrayOf (" update , Ġmulti Ġenum Ġproperty , Ġsun sh ine ")) ĊĠĠĠ Ġfun Ġ` load , Ġmulti Ġenum Ġproperty , Ġsun sh ine `() Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Default Enum Props () ĊĊĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġtest ee . load ( client ) ĊĠĠĠĠĠĠĠ ĠassertThat ( actual . properties . size , ĠequalTo ( 1 )) ĊĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġactual . properties . iterator (). next () ĊĠĠĠĠĠĠĠ ĠassertThat ( entry . key , ĠequalTo ( test Prop 1 . first )) ĊĠĠĠĠĠĠĠ ĠassertThat ( entry . value , ĠequalTo ( test Prop 1 . second Ġas ĠProp )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Default Enum Props ( props : ĠClient Props Ġ= Ġtest Props 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// test ee . update ( client . copy ( props Ġ= Ġprops )) ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ */ Ċ Ċ //@ Test ( Ċ // ĠĠĠĠĠĠĠ Ġgroups Ġ= ĠarrayOf (" h sql db ", Ġ" integration ") Ċ // ) Ċ /* Ċ class ĠClient ServiceImpl For Props Test Ġ: ĠH sql db Test () Ġ{ ĊĊĠĠĠ Ġ// ĠMIN OR Ġ@ TEST Ġ- Ġthis Ġneeds Ġsome Ġrefactoring Ġ( reuse Ġit ! ), Ġor Ġjust Ġstartup Ġgu ice Ġcontext Ġand Ġinject Ġf aked Ġdatasource ĊĠĠĠ Ġprivate Ġvar Ġclient Repo : ĠClient Repository Ġ= ĠClient Spring Jdbc Repository ( null Jdbc x (), Ġid Generator ) ĊĠĠĠ Ġprivate Ġvar Ġprops Repo : ĠClient Props Repository Ġ= ĠClient Props Spring Jdbc Repository ( null Jdbc x ()) ĊĠĠĠ Ġprivate Ġprops Ser ice ĊĠĠĠ Ġprivate Ġvar Ġtreatment Repo : ĠT reatment Repository Ġ= ĠT reatment Spring Jdbc Repository ( null Jdbc x (), Ġid Generator ) ĊĠĠĠ Ġprivate Ġvar Ġtreatment Service : ĠT reatment Service Ġ= ĠT reatment ServiceImpl ( t reatment Repo , Ġnull Jdbc x (), Ġbus , Ġclock ) ĊĠĠĠ Ġprivate Ġvar Ġtest ee : ĠClient Service Ġ= ĠClient ServiceImpl ( client Repo , Ġprops Repo , Ġtreatment Service , Ġnull Jdbc x (), Ġbus , Ġclock , Ġcurrent Client ) ĊĊĠĠĠ Ġprivate Ġvar Ġhelper Ġ= ĠTest Prop Helper ( null Jdbc x ()) ĊĊĠĠĠ Ġprivate Ġvar Ġclient Ġ= ĠClient . un saved Valid Instance () ĊĊĠĠĠ Ġ@ Before Method ĊĠĠĠ Ġfun Ġinit State () Ġ{ ĊĠĠĠĠĠĠĠ Ġid Generator Ġ= ĠSe qu enced Test able Id Generator () ĊĠĠĠĠĠĠĠ Ġclient Repo Ġ= ĠClient Spring Jdbc Repository ( jdbc x (), Ġid Generator ) ĊĠĠĠĠĠĠĠ Ġprops Repo Ġ= ĠClient Props Spring Jdbc Repository ( jdbc x ()) ĊĠĠĠĠĠĠĠ Ġtreatment Repo Ġ= ĠT reatment Spring Jdbc Repository ( jdbc x (), Ġid Generator ) ĊĠĠĠĠĠĠĠ Ġtreatment Service Ġ= ĠT reatment ServiceImpl ( t reatment Repo , Ġjdbc x (), Ġbus , Ġclock ) ĊĠĠĠĠĠĠĠ Ġtest ee Ġ= ĠClient ServiceImpl ( client Repo , Ġprops Repo , Ġtreatment Service , Ġjdbc x (), Ġbus , Ġclock , Ġcurrent Client ) ĊĠĠĠĠĠĠĠ Ġhelper Ġ= ĠTest Prop Helper ( jdbc x ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ` insert Ġclient Ġwith Ġenum Ġprop Ġset , Ġshould Ġinsert Ġone Ġsql Ġrow Ġin Ġtable `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgiven Props Ġ= ĠClient Props ( map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( Props . Enums . Sleep Enum . key , ĠMulti Enum Prop ( listOf ( Props . Enums . Sleep Enum . Problems Fall As leep . key ))) ĊĠĠĠĠĠĠĠ Ġ)) Ċ // ĠĠĠĠĠĠĠ Ġ==> Ġadd Prop ( Props . Sleep . key ). with Value ( Props . Sleep . Problems Fall As leep , Ġ...) ĊĠĠĠĠĠĠĠ Ġval Ġinsert Client Ġ= Ġclient . copy ( props Ġ= Ġgiven Props ) ĊĠĠĠĠĠĠĠ Ġtest ee . insert OrUpdate ( insert Client ) ĊĠĠĠĠĠĠĠ Ġhelper . assert Rows ( Prop Sql Row ( insert Client . id !! , ĠProps . Enums . Sleep Enum . key , ĠProps . Enums . Sleep Enum . Problems Fall As leep . key )) ĊĠĠĠ Ġ} Ċ Ċ } Ċ */ Ċ