package Ġno . nav . sy fo . status . service Ċ Ċ import Ġio . mock k . clear All Mocks Ċ import Ġio . mock k . mock k Class Ċ import Ġio . mock k . verify Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . util . UUID Ċ import Ġno . nav . sy fo . db . Database Interface Ċ import Ġno . nav . sy fo . model . sy k meld ing status . Kafka Metadata DTO Ċ import Ġno . nav . sy fo . model . sy k meld ing status . Status Event DTO Ċ import Ġno . nav . sy fo . model . sy k meld ing status . Sy k meld ing Status Kafka Event DTO Ċ import Ġno . nav . sy fo . model . sy k meld ing status . Sy k meld ing Status Kafka Message DTO Ċ import Ġno . nav . sy fo . sy k meld ing . db . fin n E gen meld t Sy k meld ing Ċ import Ġno . nav . sy fo . sy k meld ing . db . regist rer E gen meld t Sy k meld ing Ċ import Ġno . nav . sy fo . sy k meld ing . db . s lett E gen meld t Sy k meld ing Ċ import Ġno . nav . sy fo . sy k meld ing . model . E gen meld t Sy k meld ing Ċ import Ġno . nav . sy fo . sy k meld ing . model . Per i ode Ċ import Ġno . nav . sy fo . sy k meld ing . util . Test DB Ċ import Ġno . nav . sy fo . sy k meld ing . util . drop Data Ċ import Ġorg . am sh ove . k lu ent . should Equal Ċ import Ġorg . am sh ove . k lu ent . should Not Be Ċ import Ġorg . spe k framework . spe k 2 . Spe k Ċ import Ġorg . spe k framework . spe k 2 . style . specification . describe Ċ Ċ class ĠStatus end ring Service Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġval Ġsy k meld ing Id Ġ= ĠUUID . randomUUID () ĊĠĠĠ Ġval Ġdatabase Mock Ġ= Ġmock k Class ( Database Interface :: class , Ġrelax ed Ġ= Ġtrue ) ĊĊĠĠĠ Ġval Ġtest DB Ġ= ĠTest DB () ĊĊĠĠĠ ĠafterEach Test Ġ{ ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠĠĠĠĠ Ġtest DB . connection . drop Data () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġafter Group Ġ{ ĊĠĠĠĠĠĠĠ Ġtest DB . stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Test Ġav Ġh Ã¥ nd ter ing Ġav Ġstatus end ring er ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus end ring Service Med Mock DB Ġ= ĠStatus end ring Service ( database Mock ) ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġign or ere Ġstat use vent ĠAP EN ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus end ring Service Med Mock DB . hand ter Status end ring ( op prett Kafka Mel ding ( sy k meld ing Id . toString (), Ġ" fn r ", ĠStatus Event DTO . AP EN )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġdatabase Mock . s lett E gen meld t Sy k meld ing ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġk alle Ġfin n Og S lett Ġfor Ġstat use vent ĠAV BR UT T ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus end ring Service Med Mock DB . hand ter Status end ring ( op prett Kafka Mel ding ( sy k meld ing Id . toString (), Ġ" fn r ", ĠStatus Event DTO . AV BR UT T )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġdatabase Mock . s lett E gen meld t Sy k meld ing ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" Test Ġav Ġh Ã¥ nd ter ing Ġav Ġstatus end ring er Ġmot Ġdatabase ") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus end ring Service Ġ= ĠStatus end ring Service ( test DB ) ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġs lette Ġsy k meld ing Ġh vis Ġden Ġfin nes Ġi Ġdatab as en ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest DB . regist rer E gen meld t Sy k meld ing ( E gen meld t Sy k meld ing ( sy k meld ing Id , Ġ" fn r ", Ġnull , ĠPer i ode ( LocalDate . now (). minus Days ( 5 ), ĠLocalDate . now (). plus Days ( 1 1 )), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest DB . fin n E gen meld t Sy k meld ing ( sy k meld ing Id ) Ġshould Not Be Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus end ring Service . hand ter Status end ring ( op prett Kafka Mel ding ( sy k meld ing Id . toString (), Ġ" fn r ", ĠStatus Event DTO . AV BR UT T )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest DB . fin n E gen meld t Sy k meld ing ( sy k meld ing Id ) Ġshould Equal Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġit (" Sk al Ġik ke Ġfe ile Ġh vis Ġdet Ġik ke Ġer Ġno en Ġsy k meld ing ĠÃ¥ Ġs lette Ġfor Ġstat use vent ĠAV BR UT T ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus end ring Service . hand ter Status end ring ( op prett Kafka Mel ding ( UUID . randomUUID (). toString (), Ġ" ann et fn r ", ĠStatus Event DTO . AV BR UT T )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ Ċ fun Ġopp rett Kafka Mel ding ( sy k meld ing Id : ĠString , Ġfn r : ĠString , Ġstatus : ĠStatus Event DTO ): ĠS yk meld ing Status Kafka Message DTO Ġ= ĊĠĠĠ ĠS yk meld ing Status Kafka Message DTO ( ĊĠĠĠĠĠĠĠ ĠKafka Metadata DTO ( sy k meld ing Id Ġ= Ġsy k meld ing Id , Ġtimestamp Ġ= ĠOffset DateTime . now (), Ġfn r Ġ= Ġfn r , Ġsource Ġ= Ġ" sy f oser vice "), ĊĠĠĠĠĠĠĠ ĠS yk meld ing Status Kafka Event DTO ( sy k meld ing Id Ġ= Ġsy k meld ing Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠOffset DateTime . now (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Event Ġ= Ġstatus , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġar be id sg iver Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp ors m als Ġ= Ġempty List () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ