package Ġno . nav . person br uk er . dit tn av . event handler . bes kj ed Ċ Ċ import ĠBes kj ed Ċ import Ġio . kot est . matchers . collections . shouldBe Empty Ċ import Ġio . kot est . matchers . collections . should Contain All Ċ import Ġio . kot est . matchers . shouldBe Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġno . nav . person br uk er . dit tn av . event handler . common . database . Local Postgres Database Ċ import Ġno . nav . person br uk er . dit tn av . event handler . common . find Count For Ċ import Ġorg . junit . jupiter . api . After All Ċ import Ġorg . junit . jupiter . api . Before All Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . Test Instance Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Z onedDateTime Ċ Ċ @ Test Instance ( Test Instance . Lifecycle . PER _ CLASS ) Ċ class ĠBes kj ed Queries Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Ġ= ĠLocal Postgres Database . clean Db () ĊĊĠĠĠ Ġprivate Ġval Ġf od se ls nummer Ġ= Ġ" 1 2 3 4 5 " ĊĠĠĠ Ġprivate Ġval Ġevent Id Ġ= Ġ" 1 2 4 " ĊĠĠĠ Ġprivate Ġval Ġgr upper ings id Ġ= Ġ" 1 0 0 ${ f od se ls nummer }" ĊĠĠĠ Ġprivate Ġval Ġsystem br uk er Ġ= Ġ" x - dit tn av " ĊĠĠĠ Ġprivate Ġval Ġnamespace Ġ= Ġ" localhost " ĊĠĠĠ Ġprivate Ġval Ġapp nav n Ġ= Ġ" dit tn av " ĊĊĠĠĠ Ġprivate Ġval Ġbes kj ed 1 Ġ= ĠBes kj ed Object M other . create B es kj ed ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 1 , ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġ" 1 2 3 ", ĊĠĠĠĠĠĠĠ Ġf od se ls nummer Ġ= Ġf od se ls nummer , ĊĠĠĠĠĠĠĠ Ġgr upper ings Id Ġ= Ġgr upper ings id , ĊĠĠĠĠĠĠĠ Ġsyn lig F rem Til Ġ= ĠZ onedDateTime . now (). plus Hours ( 1 ), ĊĠĠĠĠĠĠĠ Ġfor st Be hand let Ġ= ĠZ onedDateTime . now (), ĊĠĠĠĠĠĠĠ Ġaktiv Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġsystem br uk er Ġ= Ġsystem br uk er , ĊĠĠĠĠĠĠĠ Ġnamespace Ġ= Ġnamespace , ĊĠĠĠĠĠĠĠ Ġapp nav n Ġ= Ġapp nav n ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġbes kj ed 2 Ġ= ĠBes kj ed Object M other . create B es kj ed ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 2 , ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġevent Id , ĊĠĠĠĠĠĠĠ Ġf od se ls nummer Ġ= Ġf od se ls nummer , ĊĠĠĠĠĠĠĠ Ġgr upper ings Id Ġ= Ġgr upper ings id , ĊĠĠĠĠĠĠĠ Ġsyn lig F rem Til Ġ= ĠZ onedDateTime . now (). plus Hours ( 1 ), ĊĠĠĠĠĠĠĠ Ġfor st Be hand let Ġ= ĠZ onedDateTime . now (). minus Days ( 5 ), ĊĠĠĠĠĠĠĠ Ġaktiv Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġsystem br uk er Ġ= Ġsystem br uk er , ĊĠĠĠĠĠĠĠ Ġnamespace Ġ= Ġnamespace , ĊĠĠĠĠĠĠĠ Ġapp nav n Ġ= Ġapp nav n ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġbes kj ed 3 Ġ= ĠBes kj ed Object M other . create B es kj ed ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 3 , ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġ" 5 6 7 ", ĊĠĠĠĠĠĠĠ Ġf od se ls nummer Ġ= Ġf od se ls nummer , ĊĠĠĠĠĠĠĠ Ġgr upper ings Id Ġ= Ġgr upper ings id , ĊĠĠĠĠĠĠĠ Ġsyn lig F rem Til Ġ= ĠZ onedDateTime . now (). plus Hours ( 1 ), ĊĠĠĠĠĠĠĠ Ġfor st Be hand let Ġ= ĠZ onedDateTime . now (). minus Days ( 1 5 ), ĊĠĠĠĠĠĠĠ Ġaktiv Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġsystem br uk er Ġ= Ġsystem br uk er , ĊĠĠĠĠĠĠĠ Ġnamespace Ġ= Ġnamespace , ĊĠĠĠĠĠĠĠ Ġapp nav n Ġ= Ġapp nav n ĊĠĠĠ Ġ) ĊĠĠĠ Ġprivate Ġval Ġbes kj ed 4 Ġ= ĠBes kj ed Object M other . create B es kj ed ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ 4 , ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġ" 7 8 9 ", ĊĠĠĠĠĠĠĠ Ġf od se ls nummer Ġ= Ġ" 5 4 3 2 1 ", ĊĠĠĠĠĠĠĠ Ġsyn lig F rem Til Ġ= ĠZ onedDateTime . now (). plus Hours ( 1 ), ĊĠĠĠĠĠĠĠ Ġfor st Be hand let Ġ= ĠZ onedDateTime . now (). minus Days ( 2 5 ), ĊĠĠĠĠĠĠĠ Ġaktiv Ġ= Ġtrue , ĊĠĠĠĠĠĠĠ Ġsystem br uk er Ġ= Ġ" x - dit tn av - 2 ", ĊĠĠĠĠĠĠĠ Ġnamespace Ġ= Ġnamespace , ĊĠĠĠĠĠĠĠ Ġapp nav n Ġ= Ġ" dit tn av - 2 " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Before All ĊĠĠĠ Ġfun Ġ` pop uler Ġtest data `() Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate B es kj ed ( listOf ( bes kj ed 1 , Ġbes kj ed 2 , Ġbes kj ed 3 , Ġbes kj ed 4 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After All ĊĠĠĠ Ġfun Ġ` s lett Ġtest data `() Ġ{ ĊĠĠĠĠĠĠĠ Ġdelete B es kj ed ( listOf ( bes kj ed 1 , Ġbes kj ed 2 , Ġbes kj ed 3 , Ġbes kj ed 4 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fin n Ġalle Ġcache de ĠBes kj ed - event er Ġfor Ġf od se ls nummer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĠgetAll B es kj ed For F od se ls nummer ( f od se ls nummer ) Ġ}. size ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fin n Ġkun Ġakt ive Ġcache de ĠBes kj ed - event er Ġfor Ġf od se ls nummer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaktiv B es kj edBy User Ġ= Ġget A ktiv B es kj ed For F od se ls nummer ( f od se ls nummer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaktiv B es kj edBy User ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. size ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fin n Ġkun Ġin akt ive Ġcache de ĠBes kj ed - event er Ġfor Ġf od se ls nummer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġin aktiv B es kj edBy User Ġ= Ġget In aktiv B es kj ed For F od se ls nummer ( f od se ls nummer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin aktiv B es kj edBy User ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. size ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġtom Ġliste Ġh vis ĠBes kj ed - event er Ġfor Ġf od se ls nummer Ġik ke Ġfin nes `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbru ker S om Ik ke Fin nes Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget A ktiv B es kj ed For F od se ls nummer ( br uk er S om Ik ke Fin nes ) Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġtom Ġliste Ġh vis Ġf od se ls nummer Ġer Ġto mt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf od se ls nummer M ang ler Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget A ktiv B es kj ed For F od se ls nummer ( f od se ls nummer M ang ler ) Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġle sb art Ġnav n Ġfor Ġprod us ent Ġsom Ġkan Ġek spon eres Ġfor Ġakt ive Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbes kj ed Ġ= Ġdatabase . db Query Ġ{ Ġget A ktiv B es kj ed For F od se ls nummer ( f od se ls nummer ) Ġ}. first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbes kj ed . prod us ent ĠshouldBe Ġapp nav n ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġle sb art Ġnav n Ġfor Ġprod us ent Ġsom Ġkan Ġek spon eres Ġfor Ġin akt ive Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbes kj ed Ġ= Ġdatabase . db Query Ġ{ Ġget In aktiv B es kj ed For F od se ls nummer ( f od se ls nummer ) Ġ}. first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbes kj ed . prod us ent ĠshouldBe Ġapp nav n ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġle sb art Ġnav n Ġfor Ġprod us ent Ġsom Ġkan Ġek spon eres Ġfor Ġalle Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbes kj ed Ġ= Ġdatabase . db Query Ġ{ ĠgetAll B es kj ed For F od se ls nummer ( f od se ls nummer ) Ġ}. first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbes kj ed . prod us ent ĠshouldBe Ġapp nav n ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Fin n Ġalle Ġcache de Ġevents Ġsom Ġmatcher Ġf od se ls nummer Ġog Ġevent Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget B es kj ed ById s ( f od se ls nummer , Ġevent Id ) Ġ}. size ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġtom Ġliste Ġh vis ĠBes kj ed - event er Ġik ke Ġstem mer Ġmed Ġevent Id `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget B es kj ed ById s ( f od se ls nummer , Ġ" dummy EventId ") Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġtom Ġliste Ġh vis ĠBes kj ed - event er Ġik ke Ġstem mer Ġmed Ġf od se ls nummer `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbru ker S om Ik ke Fin nes Ġ= Ġ" 0 0 0 " ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget B es kj ed ById s ( br uk er S om Ik ke Fin nes , Ġevent Id ) Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġtom Ġliste Ġav ĠBes kj ed - event er Ġh vis Ġf od se ls nummer Ġer Ġto mt `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġf od se ls nummer M ang ler Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġget B es kj ed ById s ( f od se ls nummer M ang ler , Ġevent Id ) Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġen Ġliste Ġav Ġalle Ġgr upper te ĠBes kj ed - event er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll Group ed B es kj ed Events ById s ( f od se ls nummer , Ġgr upper ings id , Ġapp nav n ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. size ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġen Ġtom Ġliste Ġh vis Ġprod us ent Ġik ke Ġmatcher Ġbes kj ed - event et `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno Match Prod us ent Ġ= Ġ" dummy Prod us ent " ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll Group ed B es kj ed Events ById s ( f od se ls nummer , Ġgr upper ings id , Ġno Match Prod us ent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġen Ġtom Ġliste Ġh vis Ġgr upper ings id Ġik ke Ġmatcher Ġbes kj ed - event et `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġno Match Gr upper ings id Ġ= Ġ" dummy Gr upper ings id " ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll Group ed B es kj ed Events ById s ( f od se ls nummer , Ġno Match Gr upper ings id , Ġapp nav n ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. shouldBe Empty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġen Ġliste Ġav Ġalle Ġgr upper te ĠBes kj ed - event er Ġbas ert Ġp aa Ġsystem br uk er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrouped Events By System user Ġ= Ġdatabase . db Query Ġ{ ĠgetAll Group ed B es kj ed Events By System user () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user . size ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user [ bes kj ed 1 . system br uk er ] ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user [ bes kj ed 4 . system br uk er ] ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġen Ġliste Ġav Ġalle Ġgr upper te ĠBes kj ed - event er Ġbas ert Ġp aa Ġprod us ent `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrouped Events By System user Ġ= Ġdatabase . db Query Ġ{ ĠgetAll Group ed B es kj ed Events By Producer () Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user . size ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user . find Count For ( bes kj ed 1 . namespace , Ġbes kj ed 1 . app nav n ) ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped Events By System user . find Count For ( bes kj ed 4 . namespace , Ġbes kj ed 4 . app nav n ) ĠshouldBe Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġkun Ġevent er Ġder Ġfor st Be hand let Ġer Ġny ere Ġen n Ġbest em t Ġdat o Ġfor Ġakt ive Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent Events For Fn r Ġ= Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Recent A ktiv B es kj ed For F od se ls nummer ( f od se ls nummer , ĠLocalDate . now (). minus Days ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Events For Fn r . size ĠshouldBe Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Events For Fn r . map Ġ{ Ġit . id Ġ} Ġshould Contain All ĠlistOf ( 1 , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġkun Ġevent er Ġder Ġfor st Be hand let Ġer Ġny ere Ġen n Ġbest em t Ġdat o Ġfor Ġin akt ive Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent Events For Fn r Ġ= Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Recent In aktiv B es kj ed For F od se ls nummer ( f od se ls nummer , ĠLocalDate . now (). minus Days ( 1 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Events For Fn r . size ĠshouldBe Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Return er er Ġkun Ġevent er Ġder Ġfor st Be hand let Ġer Ġny ere Ġen n Ġbest em t Ġdat o Ġfor Ġalle Ġevent er `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecent Events For Fn r Ġ= Ġdatabase . db Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetAll Recent B es kj ed For F od se ls nummer ( f od se ls nummer , ĠLocalDate . now (). minus Days ( 2 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Events For Fn r . size ĠshouldBe Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Events For Fn r . map Ġ{ Ġit . id Ġ} Ġshould Contain All ĠlistOf ( 1 , 2 , 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate B es kj ed ( bes kj eder : ĠList < B es kj ed >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġcreate B es kj ed ( bes kj eder ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete B es kj ed ( bes kj eder : ĠList < B es kj ed >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . db Query Ġ{ Ġdelete B es kj ed ( bes kj eder ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ