@ file : Opt In ( Experimental Serialization Api :: class ) Ċ Ċ package Ġcom . one gravity . account service . util Ċ Ċ import Ġcom . one gravity . account service . application Module Ċ import Ġcom . one gravity . account service . controller . controller Module Ċ import Ġcom . one gravity . account service . main Module Ċ import Ġcom . one gravity . account service . persistence . model . Dao Provider Ċ import Ġcom . one gravity . account service . persistence . model . ex posed . Ex posed Dao Provider Ċ import Ġcom . one gravity . account service . persistence . model . kt orm . Kt orm Dao Provider Ċ import Ġio . kot est . core . spec . style . Behavior Spec Ċ import Ġio . kot est . core . spec . style . scopes . Behavior Spec Given Container Context Ġas ĠContext Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . server . testing .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . serialization . Experimental Serialization Api Ċ import Ġorg . k oin . core . context . Global Context . load K oin Modules Ċ import Ġorg . k oin . core . context . Global Context . stop K oin Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . dsl . module Ċ Ċ private Ġfun ĠApplication . kt orm App () Ġ{ ĊĠĠĠ Ġmain Module Ġ{ ĊĠĠĠĠĠĠĠ Ġtest DI Ġ{ ĠK t orm Dao Provider ( Test Database Config Impl ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠApplication . expose App () Ġ{ ĊĠĠĠ Ġmain Module Ġ{ ĊĠĠĠĠĠĠĠ Ġtest DI Ġ{ ĠEx posed Dao Provider ( Test Database Config Impl ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠApplication . test DI ( dao Provider : Ġ() Ġ-> ĠDao Provider ) Ġ{ ĊĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠ Ġmodules ( application Module ( environment , Ġgson )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġthere 's Ġa Ġdependency Ġbetween Ġthese Ġtwo Ġmodules Ġso Ġwe Ġneed Ġto Ġload Ġthem Ġse quent ially ĊĠĠĠ Ġload K oin Modules ( module Ġ{ ĊĠĠĠĠĠĠĠ Ġsingle Ġ{ Ġdao Provider () Ġ} ĊĠĠĠ Ġ}) ĊĠĠĠ Ġload K oin Modules ( controller Module ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRun Ġthe Ġtests Ġwith Ġboth ĠK t orm Ġand ĠEx posed . Ċ Ġ*/ Ċ fun Ġtest Apps ( ĊĠĠĠ Ġspec : ĠBehavior Spec , ĊĠĠĠ Ġtest : Ġsuspend ĠContext .( Test Application Engine , Ġprefix : ĠString ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġtest App ( Ġ{ Ġkt orm App () Ġ}, Ġ" kt orm ", Ġspec , Ġtest ) ĊĠĠĠ Ġtest App ( Ġ{ Ġexpose App () Ġ}, Ġ" ex posed ", Ġspec , Ġtest ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRun Ġthe Ġtests Ġonly Ġwith ĠK t orm . Ċ Ġ*/ Ċ fun Ġtest App ( ĊĠĠĠ Ġspec : ĠBehavior Spec , ĊĠĠĠ Ġtest : Ġsuspend ĠContext .( Test Application Engine , Ġprefix : ĠString ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġtest App ( Ġ{ Ġkt orm App () Ġ}, Ġ" kt orm ", Ġspec , Ġtest ) Ċ } Ċ Ċ private Ġfun Ġtest App ( ĊĠĠĠ Ġapp : ĠApplication . () Ġ-> ĠUnit , ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġspec : ĠBehavior Spec , ĊĠĠĠ Ġtest : Ġsuspend ĠContext .( Test Application Engine , Ġprefix : ĠString ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġspec . given ("$ name Ġtest Ġapplication Ġcontainer ") Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Test Application ( app ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtest ( this @ with Test Application , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop K oin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ