package Ġcloud . pace . sdk . app kit Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . location . Location Ċ import Ġcloud . pace . sdk . PACE Cloud SDK Ċ import Ġcloud . pace . sdk . api . poi . generated . model . Location Based App With Refs Ċ import Ġcloud . pace . sdk . api . poi . generated . model . Location Based App sWith Refs Ċ import Ġcloud . pace . sdk . app kit . app . api . App Repository Impl Ċ import Ġcloud . pace . sdk . app kit . model . App Manifest Ċ import Ġcloud . pace . sdk . app kit . utils . Test App API Ċ import Ġcloud . pace . sdk . app kit . utils . Test Cache Model Ċ import Ġcloud . pace . sdk . app kit . utils . Test Geo API Manager Ċ import Ġcloud . pace . sdk . app kit . utils . Test Uri Utils Ċ import Ġcloud . pace . sdk . po ikit . geo . Geo Gas Station Ċ import Ġcloud . pace . sdk . utils . Configuration Ċ import Ġcloud . pace . sdk . utils . Environment Ċ import Ġcloud . pace . sdk . utils . Failure Ċ import Ġcloud . pace . sdk . utils . Success Ċ import Ġjunit . framework . Assert .* Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Mockito . mock Ċ Ċ class ĠApp Repository Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġmock ( Context :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġlocation With App Ġ= ĠLocation (" "). also Ġ{ ĊĠĠĠĠĠĠĠ Ġit . latitude Ġ= Ġ 4 8 . 0 ĊĠĠĠĠĠĠĠ Ġit . longitude Ġ= Ġ 8 . 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġid Ġ= Ġ" ed 8 2 a 1 d 5 - edd 3 - 4 bd 7 - 9 ad 1 - f 1 a 5 0 1 f 2 3 5 5 5 " ĊĠĠĠ Ġprivate Ġval Ġurl Location Based App Ġ= Ġ" https :// app . test " ĊĠĠĠ Ġprivate Ġval Ġstart Url Ġ= Ġ" https :// app . test . start " ĊĠĠĠ Ġprivate Ġval Ġlocation Based App Ġ= ĠLocation Based App With Refs (). apply Ġ{ Ġp wa Url Ġ= Ġurl Location Based App Ġ} ĊĠĠĠ Ġprivate Ġval Ġmanifest Ġ= ĠApp Manifest ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Tan ke ĠEm ma ", ĊĠĠĠĠĠĠĠ Ġshort Name Ġ= Ġ" Connected ĠF ue ling ", ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Jet zt Ġtan ken ", ĊĠĠĠĠĠĠĠ Ġstart Url Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġsdk Start Url Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġdisplay Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġicons Ġ= ĠarrayOf (), ĊĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġtheme Color Ġ= Ġ"", ĊĠĠĠĠĠĠĠ ĠtextColor Ġ= Ġ"" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġapp Api Ġ= Ġobject Ġ: ĠTest App API () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Location Based Apps ( latitude : ĠDouble , Ġlongitude : ĠDouble , Ġcompletion : Ġ( Result < Location Based App sWith Refs >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( latitude Ġ== Ġlocation With App . latitude Ġ&& Ġlongitude Ġ== Ġlocation With App . longitude ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( listOf ( location Based App ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( emptyList ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġuri Util Ġ= Ġobject Ġ: ĠTest Uri Utils () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Start Urls ( baseUrl : ĠString , Ġmanifest Url : ĠString , Ġsdk Start Url : ĠString ?, Ġreferences : ĠList < String >? ): ĠMap < String ?, ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( null Ġto Ġstart Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcache Ġ= Ġobject Ġ: ĠTest Cache Model () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Manifest ( context : ĠContext , Ġurl : ĠString , Ġcompletion : Ġ( Result < App Manifest >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( url Ġ== Ġurl Location Based App ) Ġcompletion ( Result . success ( manifest )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgeo Api Manager Ġ= Ġobject Ġ: ĠTest Geo API Manager () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapps ( latitude : ĠDouble , Ġlongitude : ĠDouble , Ġcompletion : Ġ( Result < List < Geo Gas Station >>) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( latitude Ġ== Ġlocation With App . latitude Ġ&& Ġlongitude Ġ== Ġlocation With App . longitude ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( listOf ( Geo Gas Station ( id , ĠlistOf ( url Location Based App ))))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( emptyList ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġapp Repository Ġ= ĠApp Repository Impl ( context , Ġcache , Ġapp Api , Ġuri Util , Ġgeo Api Manager ) ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠP ACE Cloud SDK . configuration Ġ= ĠConfiguration ("", Ġ"", Ġ"", Ġ"", Ġenvironment Ġ= ĠEnvironment . DE VELO P MENT , Ġoid Configuration Ġ= Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` get Ġlocal Ġavailable Ġapps `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapps Ġ= Ġ( app Repository . getLocation Based Apps ( location With App . latitude , Ġlocation With App . longitude ) Ġas ĠSuccess ). result ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġapps . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= Ġapps [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . name , Ġapp . name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . description , Ġapp . description ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . backgroundColor , Ġapp . icon BackgroundColor ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( start Url , Ġapp . url ) ĊĠĠĠĠĠĠĠ ĠassertNull ( app . logo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` no Ġlocal Ġapps Ġavailable `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapps Ġ= Ġapp Repository . getLocation Based Apps ( 4 0 . 0 , Ġ 7 . 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġ( apps Ġas ĠSuccess ). result . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` do Ġnot Ġreturn Ġapp Ġwhen Ġmanifest Ġis Ġmissing `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Model Ġ= Ġobject Ġ: ĠTest Cache Model () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Manifest ( context : ĠContext , Ġurl : ĠString , Ġcompletion : Ġ( Result < App Manifest >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . failure ( Exception ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Repository Ġ= ĠApp Repository Impl ( context , Ġcache Model , Ġapp Api , Ġuri Util , Ġgeo Api Manager ) ĊĠĠĠĠĠĠĠ Ġval Ġapps Ġ= Ġapp Repository . getLocation Based Apps ( location With App . latitude , Ġlocation With App . longitude ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġ( apps Ġas ĠSuccess ). result . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` pass Ġerror Ġwhen Ġsomething Ġfailed `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgeo Api Manager Ġ= Ġobject Ġ: ĠTest Geo API Manager () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapps ( latitude : ĠDouble , Ġlongitude : ĠDouble , Ġcompletion : Ġ( Result < List < Geo Gas Station >>) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . failure ( RuntimeException ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Api Ġ= Ġobject Ġ: ĠTest App API () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Location Based Apps ( latitude : ĠDouble , Ġlongitude : ĠDouble , Ġcompletion : Ġ( Result < Location Based App sWith Refs >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . failure ( RuntimeException ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapp Repository Ġ= ĠApp Repository Impl ( context , Ġcache , Ġapp Api , Ġuri Util , Ġgeo Api Manager ) ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġapp Repository . getLocation Based Apps ( location With App . latitude , Ġlocation With App . longitude ) ĊĠĠĠĠĠĠĠ ĠassertTrue (( exception Ġas ĠFailure ). throwable Ġis ĠRuntimeException ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` return Ġtwo Ġapps Ġwhen Ġone Ġapp Ġreferences Ġtwo Ġpo is `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid 1 Ġ= Ġ" c 3 4 a 7 8 bc - de 0 a - 4 daa - 9 f 5 e - 8 cc 7 1 0 3 cf 5 5 e " ĊĠĠĠĠĠĠĠ Ġval Ġid 2 Ġ= Ġ" 2 0 6 9 1 2 5 c - b 6 5 b - 4 5 1 4 - 8 1 f 9 - 3 d 0 9 7 7 9 b 1 7 5 f " ĊĠĠĠĠĠĠĠ Ġval Ġlocation Based App Ġ= ĠLocation Based App With Refs (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp wa Url Ġ= Ġurl Location Based App ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreferences Ġ= ĠlistOf ( id 1 , Ġid 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapp Api Ġ= Ġobject Ġ: ĠTest App API () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Location Based Apps ( latitude : ĠDouble , Ġlongitude : ĠDouble , Ġcompletion : Ġ( Result < Location Based App sWith Refs >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( latitude Ġ== Ġlocation With App . latitude Ġ&& Ġlongitude Ġ== Ġlocation With App . longitude ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( listOf ( location Based App ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion ( Result . success ( emptyList ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuri Util Ġ= Ġobject Ġ: ĠTest Uri Utils () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Start Urls ( baseUrl : ĠString , Ġmanifest Url : ĠString , Ġsdk Start Url : ĠString ?, Ġreferences : ĠList < String >? ): ĠMap < String ?, ĠString > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 1 Ġto Ġ"$ start Url /? references =$ id 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid 2 Ġto Ġ"$ start Url /? references =$ id 2 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġapp Repository Ġ= ĠApp Repository Impl ( context , Ġcache , Ġapp Api , Ġuri Util , Ġgeo Api Manager ) ĊĠĠĠĠĠĠĠ Ġval Ġapps Ġ= Ġ( app Repository . getLocation Based Apps ( location With App . latitude , Ġlocation With App . longitude ) Ġas ĠSuccess ). result ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġapps . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp 1 Ġ= Ġapps [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . name , Ġapp 1 . name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . description , Ġapp 1 . description ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . backgroundColor , Ġapp 1 . icon BackgroundColor ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( id 1 , Ġapp 1 . poi Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("$ start Url /? references =$ id 1 ", Ġapp 1 . url ) ĊĠĠĠĠĠĠĠ ĠassertNull ( app 1 . logo ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp 2 Ġ= Ġapps [ 1 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . name , Ġapp 2 . name ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . description , Ġapp 2 . description ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( manifest . backgroundColor , Ġapp 2 . icon BackgroundColor ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( id 2 , Ġapp 2 . poi Id ) ĊĠĠĠĠĠĠĠ ĠassertEquals ("$ start Url /? references =$ id 2 ", Ġapp 2 . url ) ĊĠĠĠĠĠĠĠ ĠassertNull ( app 2 . logo ) ĊĠĠĠ Ġ} Ċ } Ċ