package Ġno . nav . ple i ep enger bar n . utt ak . server Ċ Ċ import Ġcom . zaxxer . hikari . HikariConfig Ċ import Ġcom . zaxxer . hikari . Hikari DataSource Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . test containers . containers . PostgreSQL Container Ċ import Ġjavax . sql . DataSource Ċ Ċ @ Configuration Ċ class ĠDb Test Config Ġ{ ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġtest DataSource (): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġpostgres . start () ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Local Datasource ( postgres . jdbc Url , Ġpostgres . username , Ġpostgres . password ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun Ġapplication Data Connection (): ĠJdbc Template Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠJdbc Template ( test DataSource ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Local Datasource ( url : ĠString , Ġusername : ĠString , Ġpassword : ĠString ): ĠDataSource Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġcreate Config ( url ) ĊĠĠĠĠĠĠĠ Ġconfig . username Ġ= Ġusername ĊĠĠĠĠĠĠĠ Ġconfig . password Ġ= Ġpassword Ġ// ĠNO SON AR Ġfalse Ġpositive ĊĠĠĠĠĠĠĠ Ġreturn ĠH ikari DataSource ( config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Config ( url : ĠString ): ĠH ikariConfig Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠH ikariConfig () ĊĠĠĠĠĠĠĠ Ġconfig . jdbc Url Ġ= Ġurl ĊĠĠĠĠĠĠĠ Ġconfig . minimum Idle Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġconfig . maximum PoolSize Ġ= Ġ 2 ĊĠĠĠĠĠĠĠ Ġconfig . connection Test Query Ġ= Ġ" select Ġ 1 " ĊĠĠĠĠĠĠĠ Ġconfig . driver ClassName Ġ= Ġ" org . postgresql . Driver " ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠLazy Ġbecause Ġwe Ġonly Ġwant Ġit Ġto Ġbe Ġinitialized Ġwhen Ġaccessed ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpostgres : ĠK PostgreSQL Container Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK PostgreSQL Container (" postgres : 1 1 . 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Database Name (" datab as ename ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Username (" postgres ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Password (" test ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠHack Ġneeded Ġbecause Ġtest containers Ġuse Ġof Ġgener ics Ġconf uses ĠKotlin Ċ class ĠK PostgreSQL Container ( image Name : ĠString ) Ġ: ĠPostgreSQL Container < K PostgreSQL Container >( image Name )