/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠAnd rÃ© ĠM ion Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . and rem ion . b ikes . data . remote Ċ Ċ import Ġcom . and rem ion . b ikes . data . remote . api . City Bi ke Service Ċ import Ġcom . and rem ion . b ikes . data . remote . model . Find Networks Response Ċ import Ġcom . and rem ion . b ikes . data . remote . model . Get Network ById Response Ċ import Ġcom . and rem ion . b ikes . data . remote . model . Network Remote Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . mock k Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Test Ċ Ċ class ĠB ikes Remote DataSource Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġservice : ĠCity Bi ke Service Ġ= Ġmock k () ĊĠĠĠ Ġprivate Ġval ĠdataSource Ġ= ĠB ikes Remote DataSource ( service ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfind Ġnetworks Ġwith Ġsuccess , Ġshould Ġget Ġnetwork Ġlist Ġproperly `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . find Networks () Ġ} Ġreturns ĠPreconditions . find Network Response ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠdataSource . find Networks () ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( Expectations . networks ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġfind Ġnetworks Ġwith Ġerror , Ġshould Ġthrow Ġexception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . find Networks () Ġ} Ġthrows ĠPreconditions . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . find Networks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( e ). isEqualTo ( Expectations . error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġget Ġnetwork Ġby Ġid Ġwith Ġsuccess , Ġshould Ġget Ġnetwork Ġproperly `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠ Ġval Ġan Id Ġ= Ġ" id " ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . get Network ById ( an Id ) Ġ} Ġreturns ĠPreconditions . get Network ById Response ĊĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠdataSource . get Network ById ( an Id ) ĊĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠ ĠassertThat ( result ). isEqualTo ( Expectations . network ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` when Ġget Ġnetwork Ġby Ġid Ġwith Ġerror , Ġshould Ġthrown Ġexception `() Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGiven ĊĠĠĠĠĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġservice . find Networks () Ġ} Ġthrows ĠPreconditions . error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource . find Networks () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThen ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( e ). isEqualTo ( Expectations . error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġobject ĠPreconditions Ġ{ ĊĠĠĠ Ġval Ġnetwork Ġ= ĠNetwork Remote ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" id ", ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name ", ĊĠĠĠĠĠĠĠ Ġhref Ġ= Ġ" href ", ĊĠĠĠĠĠĠĠ Ġlocation Ġ= ĠNetwork Remote . Location ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġ" city ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 1 2 3 . 3 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 3 2 1 . 1 2 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġfind Network Response Ġ= ĠFind Networks Response ( ĊĠĠĠĠĠĠĠ Ġnetworks Ġ= ĠlistOf ( network ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġget Network ById Response Ġ= ĠGet Network ById Response ( ĊĠĠĠĠĠĠĠ Ġnetwork Ġ= Ġnetwork ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġerror Ġ= ĠSome Exception (" An Ġerror ") Ċ } Ċ Ċ private Ġobject ĠExpect ations Ġ{ ĊĠĠĠ Ġval Ġnetwork Ġ= ĠNetwork Remote ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġ" id ", ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" name ", ĊĠĠĠĠĠĠĠ Ġhref Ġ= Ġ" href ", ĊĠĠĠĠĠĠĠ Ġlocation Ġ= ĠNetwork Remote . Location ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcity Ġ= Ġ" city ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 1 2 3 . 3 2 1 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 3 2 1 . 1 2 3 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġnetworks Ġ= ĠlistOf ( network ) ĊĠĠĠ Ġval Ġerror Ġ= ĠSome Exception (" An Ġerror ") Ċ } Ċ Ċ private Ġdata Ġclass ĠSome Exception ( override Ġval Ġmessage : ĠString ) Ġ: ĠException ( message ) Ċ