package Ġcom . star schema . br illi ant . table aut rack er . test . integration Ċ Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . fasterxml . jackson . databind . node . Object Node Ċ import Ġcom . star schema . br illi ant . table aut rack er . API _ PREFIX _ 1 _ 0 Ċ import Ġcom . star schema . br illi ant . table aut rack er . EVENTS _ PREFIX Ċ import Ġcom . star schema . br illi ant . table aut rack er . db . Db Utils Ċ import Ġcom . star schema . br illi ant . table aut rack er . model . Deployment Entity Ċ import Ġcom . star schema . br illi ant . table aut rack er . model . Event Entity Ċ import Ġcom . star schema . br illi ant . table aut rack er . model . Event Kind Ċ import Ġcom . star schema . br illi ant . table aut rack er . model . Event Table Ċ import Ġcom . star schema . br illi ant . table aut rack er . test . Database TestBase Ċ import Ġio . ktor . http . HttpMethod Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġorg . jetbrains . ex posed . sql . delete All Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . junit . After Ċ import Ġorg . junit . After Class Ċ import Ġorg . junit . BeforeClass Ċ import Ġorg . junit . Test Ċ import Ġjava . util .* Ċ import Ġkotlin . test . assertEquals Ċ import Ġkotlin . test . assertNotNull Ċ import Ġkotlin . test . assertTrue Ċ Ċ class ĠAdd Event Test Ġ: ĠDatabase TestBase ("$ API _ PREFIX _ 1 _ 0 $ EVENTS _ PREFIX / table au - events ") Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Deployment : ĠDeployment Entity ĊĊĠĠĠĠĠĠĠ Ġ@ BeforeClass ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload Config () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Deployment Ġ= ĠDb Utils . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDeployment Entity . new Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeployment Id Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName Ġ= Ġ" dummy " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlastName Ġ= Ġ" dum dum " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorganization Ġ= Ġ" Dummy Ġinc " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjob Title Ġ= Ġ" Dummy Ġjob " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Ġ= Ġ" dummy @ example . com " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadmin Key Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopt In For Updates Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ After Class ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġteardown () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( use Mock Database ) Ġload Config () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb Utils . exec Ġ{ Ġtest Deployment . delete () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` add Ġproper Ġevents `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . Post , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Ġ= Ġbody FromFile (" event Req Ok . json ", Ġmap Of (" deployment Id " Ġto Ġtest Deployment . deployment Id )) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . OK , Ġresponse . status ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . content , Ġ" There Ġis Ġno Ġresponse Ġcontent !") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" OK ", Ġresponse . content ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDb Utils . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 2 , ĠEvent Entity . all (). count (), Ġ" Not Ġall Ġevents Ġpersisted Ġin Ġthe Ġdatabase !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Entity . all (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata As Map Ġ= ĠObjectMapper (). readValue ( it . data , ĠLinkedHashMap :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . kind Ġ== ĠEvent Kind . FILTER _ CHANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" H UNT ĠIT ĠDOWN ", Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠString >). get (" sheet ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" categorical ", Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠString >). get (" filter Type ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Size ", Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠString >). get (" fieldName ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( Event Kind . NO OP , Ġit . kind ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Dashboard Ġ 1 ", Ġit . dashboard Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( test Deployment . deployment Id , Ġit . deployment . deployment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( DateTime . parse (" 2 0 1 8 - 1 2 - 0 3 T 2 1 : 5 8 : 1 5 . 9 4 7 Z "). millis , Ġit . re corded At . millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" pj g 6 - uo 9 2 - mk bp - e om q - i hs 2 - ais j ", Ġit . source Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Super store ", Ġit . workbook Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( 1 5 , Ġit . source Sequence Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// table au - tracker . star schema . com / extension /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠLinkedHashMap < String , ĠString >> ). get (" document ") ?. get (" location ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" NULL ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠLinkedHashMap < String , ĠString >> ). get (" document ") ?. get (" refer er ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 8 7 6 Ġas ĠInteger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠLinkedHashMap < String , ĠInteger >> ). get (" window ") ?. get (" height ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 1 6 Ġas ĠInteger , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( data As Map Ġas ĠLinkedHashMap < String , ĠLinkedHashMap < String , ĠInteger >> ). get (" window ") ?. get (" width ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` event Ġwithout Ġdeployment Ġerror `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . Post , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Ġ= Ġbody FromFile (" event Req Ok . json ", Ġmap Of (" deployment Id " Ġto Ġ" bad _ deployment _ id ")) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . BadRequest , Ġresponse . status ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . content , Ġ" There Ġis Ġno Ġresponse Ġcontent !") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals (" Couldn 't Ġfind Ġdeployment Ġwith Ġid : Ġbad _ deployment _ id ", Ġresponse . content ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` event Ġwithout Ġrequired Ġfields Ġerror `() Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Request ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHttpMethod . Post , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Ġ= Ġbody FromFile ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" event Req Missing Required Error . json ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of (" deployment Id " Ġto Ġtest Deployment . deployment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( HttpStatusCode . BadRequest , Ġresponse . status ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertNotNull ( response . content , Ġ" There Ġis Ġno Ġresponse Ġcontent !") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertTrue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . content !!. startsWith (" Parameter ") Ġ&& Ġresponse . content !!. endsWith (" is Ġrequired ! "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Not Ġa Ġparameter Ġerror !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġtruncate Events () Ġ{ ĊĠĠĠĠĠĠĠ ĠDb Utils . exec Ġ{ ĠEvent Table . delete All () Ġ} ĊĠĠĠ Ġ} Ċ }