/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 Ġ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 . schedules . presentation Ċ Ċ 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 . willReturn Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Scheduler Ċ import Ġorg . junit . Test Ċ import Ġru . o leg ivo . af s . analytics . domain . Analytics Provider Ċ import Ġru . o leg ivo . af s . club s . domain . GetCurrent Club UseCase Ċ import Ġru . o leg ivo . af s . common . add Ċ import Ġru . o leg ivo . af s . common . domain . Date Provider Ċ import Ġru . o leg ivo . af s . common . domain . Error Reporter Ċ import Ġru . o leg ivo . af s . common . first DayOfWeek Ċ import Ġru . o leg ivo . af s . common . presentation . Base Presenter Test Ċ import Ġru . o leg ivo . af s . common . presentation . Navigator Ċ import Ġru . o leg ivo . af s . extensions . to Maybe Ċ import Ġru . o leg ivo . af s . helpers . getRandom Int Ċ import Ġkotlin . random . Random Ċ Ċ class ĠWeek Schedule Presenter Test Ġ: ĊĠĠĠ ĠBase Presenter Test < Week Schedule Contract . Presenter , ĠWeek Schedule Contract . View >( ĊĠĠĠĠĠĠĠ ĠWeek Schedule Contract . View :: class ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Presenter ( ĊĠĠĠĠĠĠĠ Ġmain Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠ Ġerror Reporter : ĠError Reporter , ĊĠĠĠĠĠĠĠ Ġanalytics Provider : ĠAnalytics Provider ĊĠĠĠ Ġ) Ġ= ĠWeek Schedule Presenter ( ĊĠĠĠĠĠĠĠ ĠgetCurrent Club Ġ= ĠgetCurrent Club UseCase , ĊĠĠĠĠĠĠĠ Ġdate Provider Ġ= Ġdate Provider , ĊĠĠĠĠĠĠĠ Ġnavigator Ġ= Ġnavigator , ĊĠĠĠĠĠĠĠ Ġmain Scheduler Ġ= Ġtest Scheduler , ĊĠĠĠĠĠĠĠ Ġerror Reporter Ġ= Ġerror Reporter , ĊĠĠĠĠĠĠĠ Ġanalytics Provider Ġ= Ġanalytics Provider ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// < editor - fold Ġdesc =" mocks "> ĊĠĠĠ Ġprivate Ġval ĠgetCurrent Club UseCase : ĠGetCurrent Club UseCase Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġdate Provider : ĠDate Provider Ġ= Ġmock () ĊĠĠĠ Ġprivate Ġval Ġnavigator : ĠNavigator Ġ= Ġmock () ĊĊĠĠĠ Ġoverride Ġfun Ġget Presenter Mocks () Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠ ĠgetCurrent Club UseCase , ĊĠĠĠĠĠĠĠ Ġdate Provider , ĊĠĠĠĠĠĠĠ Ġnavigator ĊĠĠĠ Ġ) ĊĠĠĠ Ġ// </ editor - fold > ĊĊĠĠĠ Ġprivate Ġval Ġweek Week Schedule Presenter Ġget () Ġ= Ġinstance Ġas ĠWeek Schedule Presenter ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setUp () ĊĠĠĠĠĠĠĠ Ġweek Week Schedule Presenter . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` start ĠSHO WS Ġcurrent Ġday ĠWHEN Ġno Ġerrors , Ġhas Ġcurrent Ġclub `() Ġ= ĊĠĠĠĠĠĠĠ Ġbind ( TestData ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup GetCurrent Club () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify GetCurrent Club () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` start ĠSHO WS Ġerror ĠWHEN Ġhas Ġerror `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" Ðŀ ÑĪÐ¸Ð± ÐºÐ° ĠÐ¿ÑĢÐ¸ ĠÐ¿Ð¾Ð»ÑĥÑĩ ÐµÐ½Ð¸Ð¸ ĠÑĤÐµÐº ÑĥÑī ÐµÐ³Ð¾ ĠÐº Ð» ÑĥÐ± Ð° " ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= ĠRuntimeException () ĊĠĠĠĠĠĠĠ Ġval ĠtestData Ġ= ĠTest Data ( current Club Id Maybe Provider Ġ= Ġ{ ĠMaybe . error ( exception ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbind ( testData ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup GetCurrent Club () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify GetCurrent Club ( expected Week Days Ready Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( view ). show ErrorMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( error Reporter ). report Error ( exception , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` start Ġdo Ġnothing ĠWHEN Ġhas Ġno Ġcurrent Ġclub Id `() Ġ= ĊĠĠĠĠĠĠĠ Ġbind ( TestData ( current Club Id Maybe Provider Ġ= Ġ{ ĠMaybe . empty () Ġ})) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup GetCurrent Club () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify GetCurrent Club ( expected Week Days Ready Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTest Data . setup GetCurrent Club () Ġ{ ĊĠĠĠĠĠĠĠ Ġgiven ( getCurrent Club UseCase . invoke ()). willReturn Ġ{ Ġthis . current Club Id Maybe Provider () Ġ} ĊĠĠĠĠĠĠĠ Ġgiven ( date Provider . getDate ()). willReturn Ġ{ Ġnow Ġ} ĊĠĠĠĠĠĠĠ Ġgiven ( date Provider . getCurrent Week Day Number ()). willReturn ( initial Position Ġ+ Ġ 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTest Data . verify GetCurrent Club ( expected Week Days Ready : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġverify ( date Provider ). getDate () ĊĠĠĠĠĠĠĠ Ġverify ( date Provider ). getCurrent Week Day Number () ĊĠĠĠĠĠĠĠ Ġverify ( getCurrent Club UseCase ). invoke () ĊĠĠĠĠĠĠĠ Ġif Ġ( expected Week Days Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify ( view ). on Ready ( initial Position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( view ). show Progress () ĊĠĠĠĠĠĠĠ Ġverify ( view ). hide Progress () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠTest Data ( ĊĠĠĠĠĠĠĠ Ġval Ġclub Id : ĠInt Ġ= ĠgetRandom Int (), ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Club Id Maybe Provider : Ġ() Ġ-> ĠMaybe < Int > Ġ= Ġ{ Ġclub Id . to Maybe () Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst DayOfWeek Ġ= Ġfirst DayOfWeek () ĊĠĠĠĠĠĠĠ Ġval Ġinitial Position : ĠInt Ġ= ĠRandom . nextInt ( 0 , Ġ 6 ) ĊĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst DayOfWeek . add ( days Ġ= Ġinitial Position , Ġhours Ġ= ĠRandom . nextInt ( 0 , Ġ 2 3 )) ĊĠĠĠ Ġ} Ċ } Ċ