/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠO leg ĠI v ash ch enko Ġ< o leg ivo @ gmail . com > Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠA FS . Ċ Ġ* Ċ Ġ* ĠA FS Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ* ĠA FS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠA FS . Ċ Ġ*/ Ċ Ċ package Ġru . o leg ivo . af s . favorites . domain Ċ Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . given Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . mock Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Ċ import Ġcom . n ha ar man . mock it ok otlin 2 . verify Blocking Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . Test Ċ import Ġru . o leg ivo . af s . Base Test Of Ċ import Ġru . o leg ivo . af s . common . add Ċ import Ġru . o leg ivo . af s . common . date Ċ import Ġru . o leg ivo . af s . common . domain . Date Provider Ċ import Ġru . o leg ivo . af s . common . network . Api Ċ import Ġru . o leg ivo . af s . common . to Instant X Ċ import Ġru . o leg ivo . af s . favorites . data . models . create Favorite Filter Ċ import Ġru . o leg ivo . af s . favorites . domain . models . Favorite Filter Ċ import Ġru . o leg ivo . af s . helpers . check Single Value Ċ import Ġru . o leg ivo . af s . helpers . getRandom Date Ċ import Ġru . o leg ivo . af s . helpers . getRandom Int Ċ import Ġru . o leg ivo . af s . helpers . given Blocking Ċ import Ġru . o leg ivo . af s . helpers . willReturn Ċ import Ġru . o leg ivo . af s . schedules . data . Schedule Repository Impl Ċ import Ġru . o leg ivo . af s . schedules . data . models . create Data Schedule Ċ import Ġru . o leg ivo . af s . schedules . db . Schedule Db Source Impl Ċ import Ġru . o leg ivo . af s . schedules . db . models . to Db Ċ import Ġru . o leg ivo . af s . schedules . network . Schedule Network Source Impl Ċ import Ġru . o leg ivo . af s . shared . schedules . db . Reserve Dao Ċ import Ġru . o leg ivo . af s . shared . schedules . db . Schedule Dao Ċ import Ġru . o leg ivo . af s . shared . schedules . db . models . Schedules Ċ import Ġjava . util . Calendar Ċ import Ġjava . util . Date Ċ Ċ class ĠGet Closest S ports Activity UseCase Impl Test Ġ: ĠBaseTest Of < Get Closest S ports Activity UseCase >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Instance () Ġ= ĠGet Closest S ports Activity UseCase Impl ( ĊĠĠĠĠĠĠĠ Ġdate Provider Ġ= Ġdate Provider , ĊĠĠĠĠĠĠĠ Ġschedule Repository Ġ= ĠSchedule Repository Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Network Source Ġ= ĠSchedule Network Source Impl ( api Ġ= Ġapi ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Db Source Ġ= ĠSchedule Db Source Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreserve Dao Ġ= Ġreserve Dao , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschedule Dao Ġ= Ġschedule Dao , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġio Scheduler Ġ= Ġtest Scheduler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputation Scheduler Ġ= Ġtest Scheduler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine To Rx Adapter Ġ= Ġcoroutine To Rx Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate Provider Ġ= Ġdate Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine To Rx Adapter Ġ= Ġcoroutine To Rx Adapter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomputation Scheduler Ġ= Ġtest Scheduler ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġio Scheduler Ġ= Ġtest Scheduler ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" Mocks "> ĊĠĠĠ Ġoverride Ġfun ĠgetAll Mocks (): ĠArray < Any > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ Ġdate Provider , ĊĠĠĠĠĠĠĠ Ġschedule Dao , ĊĠĠĠĠĠĠĠ Ġreserve Dao , ĊĠĠĠĠĠĠĠ Ġapi ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġapi Ġ= Ġmock < Api >() ĊĠĠĠ Ġprivate Ġval Ġdate Provider : ĠDate Provider Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġschedule Dao : ĠSchedule Dao Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġreserve Dao Ġ= Ġmock < Reserve Dao >() ĊĊĠĠĠ Ġ// </ editor - fold > ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġempty ĠWHEN Ġhas Ġno Ġs chedules Ġin ĠDb `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter () ĊĊĠĠĠĠĠĠĠ Ġsetup ( filter , Ġempty List ()) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Values () ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġempty ĠWHEN Ġhas Ġno Ġs chedules Ġwith Ġthat Ġday OfWeek `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġth ursday , Ġ 2 1 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 1 9 , Ġ 2 1 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( filter , ĠlistOf ( element ), Ġnow ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Values () ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġempty ĠWHEN Ġhas Ġno Ġs chedules Ġwith Ġthat Ġminutes OfDay `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġf riday , Ġ 2 0 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 2 0 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( filter , ĠlistOf ( element ), Ġnow ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Values () ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġthe Ġone Ġid ĠWHEN Ġhas Ġsingle Ġschedule Ġwith Ġthose Ġday OfWeek Ġand Ġminutes OfDay `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġf riday , Ġ 2 1 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 2 1 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( filter , ĠlistOf ( element ), Ġnow ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Single Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( element . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġid Ġfrom Ġthe Ġmiddle ĠWHEN Ġhas Ġ 3 Ġs chedules Ġ- Ġ 1 Ġweek Ġlater , Ġ 1 Ġweeks Ġearlier , Ġ 1 Ġin Ġthe Ġmiddle Ġof Ġthem `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġf riday , Ġ 2 1 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 2 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġpast Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ- 7 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġmiddle Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= ĠgetRandom Int ( from Ġ= Ġ- 6 , Ġuntil Ġ= Ġ 7 )). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfuture Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ 7 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġfilter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= ĠlistOf ( past , Ġmiddle , Ġfuture ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnow Ġ= Ġnow ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Single Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( middle . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġid Ġfrom Ġthe Ġearlier ĠWHEN Ġhas Ġ 2 Ġs chedules Ġ- Ġ 1 Ġweek Ġlater , Ġ 2 Ġweeks Ġlater `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġf riday , Ġ 2 1 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 2 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġearlier Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ 7 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġlater Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ 1 4 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġfilter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= ĠlistOf ( ear lier , Ġlater ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnow Ġ= Ġnow ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Single Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( ear lier . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` invoke ĠRET URNS Ġid Ġfrom Ġthe Ġlater ĠWHEN Ġhas Ġ 2 Ġs chedules Ġ- Ġ 1 Ġweek Ġer al ier , Ġ 2 Ġweeks Ġearlier `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġcreate Favorite Filter (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġday OfWeek Ġ= ĠCalendar . FR ID AY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġminutes OfDay Ġ= Ġ 6 0 Ġ* Ġ 2 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġf riday , Ġ 2 1 : 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= Ġdate ( 2 0 2 0 , Ġ 1 0 , Ġ 2 0 , Ġ 2 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= Ġcreate Data Schedule (). to Db (). copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= Ġfilter . groupId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġfilter . group , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġfilter . activity Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġfilter . activity ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġearlier Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ- 1 4 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġlater Ġ= Ġtemplate . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatetime Ġ= Ġnow . add ( days Ġ= Ġ- 7 ). to Instant X () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsetup ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Ġ= Ġfilter , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Ġ= ĠlistOf ( ear lier , Ġlater ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnow Ġ= Ġnow ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġinstance . invoke ( filter , Ġfilter . club Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. test (). and Trigger Actions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Single Value Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( it ). isEqualTo ( later . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġverify ( filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ( ĊĠĠĠĠĠĠĠ Ġfilter : ĠF avorite Filter , ĊĠĠĠĠĠĠĠ Ġlist : ĠList < Schedules >, ĊĠĠĠĠĠĠĠ Ġnow : ĠDate Ġ= ĠgetRandom Date () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven Blocking ( schedule Dao ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Schedules ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= ĠgroupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġactivity Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. willReturn Ġ{ Ġlist Ġ} ĊĠĠĠĠĠĠĠ Ġgiven Ġ{ Ġdate Provider . getDate () Ġ}. willReturn ( now ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify ( filter : ĠF avorite Filter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Blocking ( schedule Dao ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfilter Schedules ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclub Id Ġ= Ġfilter . club Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgroupId Ġ= ĠgroupId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Id Ġ= Ġactivity Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( date Provider ). getDate () ĊĠĠĠ Ġ} Ċ } Ċ