package Ġno . nav . yr k ess k ade . meld ing mot tak . repository Ċ Ċ import Ġno . nav . yr k ess k ade . meld ing mot tak . Base SpringBoot TestClass Ċ import Ġno . nav . yr k ess k ade . meld ing mot tak . test utils . docker . Postgres Docker Container Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . After Each Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . springframework . beans . factory . annotation . Value Ċ import Ġorg . springframework . boot . test . autoconfigure . jdbc . Auto Configure Test Database Ċ import Ġorg . springframework . boot . test . autoconfigure . orm . jpa . Data Jpa Test Ċ import Ġorg . springframework . test . context . Active Profiles Ċ import Ġorg . springframework . test . context . Context Configuration Ċ import Ġorg . springframework . transaction . annotation . Transactional Ċ import Ġjava . sql . Connection Ċ import Ġjava . sql . Driver Manager Ċ import Ġjava . sql . SQLException Ċ Ċ /** Ċ Ġ* ĠTest Ġat Ġdatabase tabel ler Ġer Ġopp rett et Ġfor ĠTask . ĠMer Ġutf Ã¸ r li ge Ġdb - tester Ġfor Ġtask , Ġfin nes Ġi Ġk ode - repository Ċ Ġ* Ġy rk ess k ade - pro sess ering - backend , Ġh vor Ġtask Ġrepository s Ġfin nes . Ċ Ġ* Ċ Ġ* Ġ@ Data Jpa Test Ġer Ġben y tt et Ġfor ĠÃ¥ Ġf Ã¥ Ġlast et Ġdb - migr ering ene ĠpÃ¥ Ġen kle st ĠmÃ¥ te Ġ( dr ar Ġopp ĠSpring ) Ċ Ġ*/ Ċ @ Data Jpa Test Ċ @ Active Profiles (" test ") Ċ @ Auto Configure Test Database ( replace Ġ= ĠAuto Configure Test Database . Replace . NONE ) Ċ @ Context Configuration ( initial izers Ġ= Ġ[ Base SpringBoot TestClass . Docker Config Initializer :: class ]) Ċ class ĠTask Database IT Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠPostgres Docker Container . container ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġconnection : ĠConnection ĊĊĠĠĠ Ġ@ Value ("\ ${ spring . datasource . url }") ĊĠĠĠ Ġlateinit Ġvar Ġjdbc Url : ĠString ĊĊĠĠĠ Ġ@ Value ("\ ${ spring . datasource . username }") ĊĠĠĠ Ġlateinit Ġvar Ġusername : ĠString ĊĊĠĠĠ Ġ@ Value ("\ ${ spring . datasource . password }") ĊĠĠĠ Ġlateinit Ġvar Ġpassword : ĠString ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection Ġ= ĠDriver Manager . getConnection ( jdbc Url , Ġusername , Ġpassword ) ĊĠĠĠĠĠĠĠ Ġreset Database () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Transactional ĊĠĠĠ Ġfun Ġreset Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection . prepareStatement (" TRUNC ATE ĠTABLE Ġtask ĠCASCADE "). execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` sk al Ġkun ne Ġlag re Ġen Ġtask Ġog Ġh ente Ġden Ġopp Ġig jen `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( connection . isValid ( 0 )). isTrue ĊĊĠĠĠĠĠĠĠ Ġval Ġselect Ġ= Ġconnection . prepareStatement (" select Ġ* Ġfrom Ġtask ") ĊĠĠĠĠĠĠĠ Ġval Ġempty ResultSet Ġ= Ġselect . executeQuery () ĊĠĠĠĠĠĠĠ ĠassertThat ( empty ResultSet . next ()). isFalse ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Ġ= Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" insert Ġinto Ġtask Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( id , Ġpayload , Ġstatus , Ġvers jon , Ġopp rett et _ tid , Ġtype , Ġmetadata , Ġtrigger _ tid , Ġav vik stype ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" values ( 1 0 1 , Ġ' bl ab la ', Ġ' FIN - FIN ', Ġ 1 , Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' TYPE 1 ', Ġ' no en Ġmetadata ', Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' AN NET ')" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprintln (" Insert Ġtask : Ġ$ insert ") ĊĠĠĠĠĠĠĠ Ġinsert . executeUpdate () ĊĊĠĠĠĠĠĠĠ Ġval ĠresultSet Ġ= Ġselect . executeQuery () ĊĠĠĠĠĠĠĠ ĠassertThat ( resultSet . next ()). isTrue ĊĠĠĠĠĠĠĠ Ġval ĠtaskId Ġ= ĠresultSet . getLong (" id ") ĊĠĠĠĠĠĠĠ ĠassertThat ( taskId ). isEqualTo ( 1 0 1 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġtask _ log g Ġtabel l : ĊĠĠĠĠĠĠĠ Ġval Ġselect Log g Ġ= Ġconnection . prepareStatement (" select Ġ* Ġfrom Ġtask _ log g ") ĊĠĠĠĠĠĠĠ Ġval Ġing en Logger RS Ġ= Ġselect Log g . executeQuery () ĊĠĠĠĠĠĠĠ ĠassertThat ( ingen Logger RS . next ()). isFalse ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Log g Ġ= Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" insert Ġinto Ġtask _ log g Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( id , Ġtask _ id , Ġtype , Ġnode , Ġopp rett et _ tid , Ġme ld ing , Ġend ret _ av ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" values ( 1 0 1 2 , Ġ$ taskId , Ġ' TYPE 2 ', Ġ' Node Ġ 2 ', Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' Det te Ġer Ġen Ġme ld ing ', Ġ' U tv ik ler ')" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprintln (" Insert Ġtask _ log g : Ġ$ insert Log g ") ĊĠĠĠĠĠĠĠ Ġinsert Log g . executeUpdate () ĊĊĠĠĠĠĠĠĠ Ġval Ġlogger Result Ġ= Ġselect . executeQuery () ĊĠĠĠĠĠĠĠ ĠassertThat ( logger Result . next ()). isTrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` sk al Ġik ke Ġkun ne Ġlag re Ġto Ġtask er Ġmed Ġident isk Ġpayload `() Ġ{ ĊĠĠĠĠĠĠĠ ĠassertThat ( connection . isValid ( 0 )). isTrue ĊĊĠĠĠĠĠĠĠ Ġval Ġselect Ġ= Ġconnection . prepareStatement (" select Ġ* Ġfrom Ġtask ") ĊĠĠĠĠĠĠĠ Ġval Ġempty ResultSet Ġ= Ġselect . executeQuery () ĊĠĠĠĠĠĠĠ ĠassertThat ( empty ResultSet . next ()). isFalse ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert Ġ= Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" insert Ġinto Ġtask Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( id , Ġpayload , Ġpayload _ hash , Ġstatus , Ġvers jon , Ġopp rett et _ tid , Ġtype , Ġmetadata , Ġtrigger _ tid , Ġav vik stype ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" values ( 1 0 1 , Ġ' bl ab la ', Ġ' en Ġfin Ġhash ver di ', Ġ' FIN - FIN ', Ġ 1 , Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' TYPE 1 ', Ġ' no en Ġmetadata ', Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' AN NET ')" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġinsert . executeUpdate () ĊĊĠĠĠĠĠĠĠ Ġval Ġinsert For Dup lis ert Task Ġ= Ġconnection . prepareStatement ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" insert Ġinto Ġtask Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( id , Ġpayload , Ġpayload _ hash , Ġstatus , Ġvers jon , Ġopp rett et _ tid , Ġtype , Ġmetadata , Ġtrigger _ tid , Ġav vik stype ) Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" values ( 1 0 2 , Ġ' bl ab la ', Ġ' en Ġfin Ġhash ver di ', Ġ' FIN - FIN ', Ġ 1 , Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' TYPE 1 ', Ġ' no en Ġmetadata ', Ġ' 2 0 2 2 - 0 1 - 1 9 ', Ġ' AN NET ')" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġthrown Ġ= ĠassertThrows < SQLException > Ġ{ Ġinsert For Dup lis ert Task . executeUpdate () Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( throw n . message ). contains (""" duplicate Ġkey Ġvalue Ġviol ates Ġunique Ġconstraint Ġ" payload _ hash _ key """ ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After Each ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġconnection . close () ĊĠĠĠ Ġ} Ċ }