package Ġde . j ot be p unkt . black book . service Ċ Ċ import Ġassert k . assert Ċ import Ġassert k . assertions . has Size Ċ import Ġassert k . assertions . isEqualTo Ċ import Ġassert k . assertions . is Same As Ċ import Ġassert k . assertions . prop Ċ import Ġde . j ot be p unkt . black book . persistence . Repeated Event Master Ċ import Ġde . j ot be p unkt . black book . persistence . Repeated Event Master Repository Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . verify Ċ import Ġorg . junit . jupiter . api . BeforeEach Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġjava . time . LocalDate Ċ Ċ class ĠRe peated Event Master Service Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrepo Ġ= Ġmock k < Repeated Event Master Repository >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval ĠeventType Service Ġ= Ġmock k < EventType Service >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġtag Service Ġ= Ġmock k < Tag Service >( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġrepeated Event Service Ġ= Ġmock k < Repeated Event Service >() ĊĊĊĠĠĠ Ġval Ġsaved Repeated Events Ġ= Ġmutable ListOf < Repeated Event Instance Bo >() ĊĊĊĠĠĠ Ġprivate Ġval Ġrepeated Event Master Service Ġ= ĠRe peated Event Master Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Ġ= Ġrepo , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠeventType Service Ġ= ĠeventType Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Service Ġ= Ġtag Service , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Service Ġ= Ġrepeated Event Service ) ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass ĠGeneral Tests Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` save Ġshould Ġcreate Ġa Ġsingle Ġevent Ġwhen Ġthe Ġend Ġdate Ġis Ġthe Ġstart Ġdate `() Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaster Ġ= Ġrepeated Event Master Bo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Master Service . save ( master ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Service . save ( any ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( saved Repeated Events ). has Size ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( saved Repeated Events [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Same As ( master ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( saved Repeated Events [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( master . date ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Daily ĠEvents ` Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` daily Ġevent Ġoccurs Ġ 8 Ġtimes Ġfrom Ġtoday Ġuntil Ġthe Ġsame Ġday Ġin Ġa Ġweek `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaster Ġ= Ġrepeated Event Master Bo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= ĠLocalDate . now (). plus Week s ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Master Service . save ( master ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( saved Repeated Events ). has Size ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved Repeated Events . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( it , Ġ" element Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( master ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( it , Ġ" element Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( LocalDate . now (). plus Days ( index . to Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` daily Ġevent Ġoccurs Ġ 4 Ġtimes Ġfrom Ġtoday Ġuntil Ġthe Ġsame Ġday Ġin Ġa Ġweek Ġwhen Ġit Ġis Ġsc ed ule d Ġevery Ġsecond Ġday `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmaster Ġ= Ġrepeated Event Master Bo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= ĠLocalDate . now () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠendDate Ġ= ĠLocalDate . now (). plus Week s ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevery Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Master Service . save ( master ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( saved Repeated Events ). has Size ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved Repeated Events . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( it , Ġ" element Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( master ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( it , Ġ" element Ġ$ index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. prop ( Repeated Event Instance Bo :: date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isEqualTo ( LocalDate . now (). plus Days ( index . to Long () Ġ* Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Week ly ĠEvents ` Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ@ Test Ċ // ĠĠĠĠĠĠĠ Ġfun Ġ` save Ġcreate as Ġan Ġevent Ġfor Ġevery Ġweek Ġwhen Ġthe Ġevent Ġis Ġweekly Ġand Ġover Ġone Ġmonth `() Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfail (" not Ġyet Ġimplemented ") Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Monthly ĠEvents ` ĊĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġinit Mapper Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠeventType Service . type Ġ} Ġreturns ĠEventType Bo :: class ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠeventType Service . map Single Ġ} Ġreturns Ġ{ ĠEventType Bo () Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtag Service . type Ġ} Ġreturns ĠTag Bo :: class ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtag Service . map Single Ġ} Ġreturns Ġ{ ĠTag Bo () Ġ} ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġtag Service . map Multiple Ġ} Ġreturns Ġ{ Ġset Of ( Tag Bo ()) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġinit Repeated Event Service Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ Ġsaved Repeated Events . clear () ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepeated Event Service . save ( capture ( saved Repeated Events )) ĊĠĠĠĠĠĠĠ Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsaved Repeated Events . captured () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ BeforeEach ĊĠĠĠ Ġfun Ġinit Repo Behaviour () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstored Data Objects Ġ= Ġmutable ListOf < Repeated Event Master >() ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepo . save ( capture ( stored Data Objects )) ĊĠĠĠĠĠĠĠ Ġ} Ġanswers Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstored Data Objects . captured () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ