package Ġcom . med ly . norm Ċ Ċ import Ġio . kot est . core . spec . Spec Ċ import Ġio . kot est . core . spec . style . String Spec Ċ import Ġio . kot est . extensions . test containers . per Spec Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġorg . test containers . sh aded . com . google . common . io . Files Ċ import Ġjava . io . File Ċ Ċ class ĠNorm Plugin IntegrationTest Ġ: ĠString Spec () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpg Container Ġ= ĠPG Container (). with Init Script (" norm - plugin - init . sql ") ĊĠĠĠ Ġprivate Ġval Ġtmp Dir Ġ= ĠFiles . create TempDir () ĊĠĠĠ Ġprivate Ġval Ġproject Ġ= Ġtmp Dir . resolve (" plugin - test "). apply Ġ{ Ġmkdir () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlisteners () Ġ= ĠlistOf ( pg Container . per Spec ()) ĊĊĠĠĠ Ġoverride Ġfun Ġafter Spec ( spec : ĠSpec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . after Spec ( spec ) ĊĠĠĠĠĠĠĠ ĠFile ( tmp Dir . to URI ()). delete Re cursively () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Spec ( spec : ĠSpec ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . before Spec ( spec ) ĊĠĠĠĠĠĠĠ Ġ// language = Gro ovy ĊĠĠĠĠĠĠĠ Ġproject . default Project Setup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnorm Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Ġ= Ġ"${ pg Container . username }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Ġ= Ġ"${ pg Container . password }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Url Ġ= Ġ"${ pg Container . jdbc Url }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Dir Ġ= Ġfile (" src / main / kotlin / sql ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġout Dir Ġ= Ġfile (" src / main / kotlin / gen ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ" project Ġshould Ġgenerate Ġfiles Ġon Ġcalling Ġcodegen Ġtask " Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . create SourceFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" src / main / kotlin / sql / users / find - users . sql ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ* Ġfrom Ġusers Ġwhere Ġname Ġ= Ġ: name ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . build ( Constants . NORM _ CODE GEN _ TASK ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFile ("${ project . absolute Path }/ src / main / kotlin / gen / users / Find Users . kt "). exists () ĠshouldBe Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ