/* Ċ Ġ* ĠCopyright Ġ 2 0 1 6 ĠF ut ur ice ĠGmbH Ċ Ġ* Ċ Ġ* Ġ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 . fut ur ice . fre es ound . network . api Ċ Ċ import Ġcom . fut ur ice . fre es ound . network . api . model . AccessToken Ċ import Ġcom . fut ur ice . fre es ound . network . api . model . Sound Fields Ċ import Ġcom . fut ur ice . fre es ound . network . api . model . Sound SearchResult Ċ import Ġcom . fut ur ice . fre es ound . network . api . model . User Ċ import Ġcom . fut ur ice . fre es ound . test . data . TestData Ċ import Ġio . reactivex . Single Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . mockito . Argument Matchers .* Ċ import Ġorg . mockito . Mock Ċ import Ġorg . mockito . Mockito .` when ` Ċ import Ġorg . mockito . Mockito . verify Ċ import Ġorg . mockito . Mockito Annotations Ċ Ċ class ĠDefault Free Sound ApiClient Test Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTEST _ CLIENT _ ID Ġ= Ġ" clientId " ĊĠĠĠ Ġprivate Ġval ĠTEST _ CLIENT _ SECRET Ġ= Ġ" client Secret " ĊĠĠĠ Ġprivate Ġval ĠTEST _ SEARCH _ RESULT Ġ= ĠTest Data . search Result ( 5 ) ĊĠĠĠ Ġprivate Ġval ĠD UMMY _ USER Ġ= ĠTest Data . user () ĊĠĠĠ Ġprivate Ġval ĠD UMMY _ ACCESS _ TOKEN Ġ= ĠTest Data . accessToken () ĊĠĠĠ Ġprivate Ġval ĠERROR Ġ= ĠThrowable () ĊĊĠĠĠ Ġ@ Mock ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfree Sound Api : ĠFree Sound Api ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdefault Free Sound ApiService : ĠDefault Free Sound ApiClient ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMockito Annotations . init Mocks ( this ) ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService Ġ= ĠDefault Free Sound ApiClient ( free Sound Api , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ CLIENT _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ CLIENT _ SECRET ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetUser _ em its User _ when Api Successful () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ{ ĠD UMMY _ USER Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . getUser (" username ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( D UMMY _ USER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetUser _ inv okes Api With Username Parameter () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Ġ{ ĠD UMMY _ USER Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġ" username " ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . getUser ( username ). subscribe () ĊĊĠĠĠĠĠĠĠ Ġverify ( free Sound Api ). user ( username ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun ĠgetUser _ em its Error _ when ApiError () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Error Ġ{ ĠERROR Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . getUser (" username ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget AccessToken _ em its AccessToken _ when Api Successful () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ{ ĠD UMMY _ ACCESS _ TOKEN Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . get AccessToken (" code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( D UMMY _ ACCESS _ TOKEN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget AccessToken _ inv okes Api With Correct Parameters () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Ġ{ ĠD UMMY _ ACCESS _ TOKEN Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ" code " ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . get AccessToken ( code ). subscribe () ĊĊĠĠĠĠĠĠĠ Ġverify ( free Sound Api ). accessToken ( TEST _ CLIENT _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTEST _ CLIENT _ SECRET , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApi Constants . AUTHORIZATION _ CODE _ GRANT _ TYPE _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġget AccessToken _ em its Error _ when ApiError () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Error Ġ{ ĠERROR Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . get AccessToken (" code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsearch _ em its Results _ when Api Successful () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Ġ{ ĠTEST _ SEARCH _ RESULT Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . search (" query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value ( TEST _ SEARCH _ RESULT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsearch _ inv okes Api With Correct Parameters () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Ġ{ ĠTEST _ SEARCH _ RESULT Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġ" query " ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . search ( query ). subscribe () ĊĊĠĠĠĠĠĠĠ Ġverify ( free Sound Api ). search ( eq ( query ), Ġis Null < String >(), Ġeq ( Sound Fields . BASE )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġsearch _ em its Error _ when ApiError () Ġ{ ĊĠĠĠĠĠĠĠ Ġarrange Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Error Ġ{ ĠERROR Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdefault Free Sound ApiService . search (" query ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Error ( ERROR ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġarrange ( init : ĠArrange ment . () Ġ-> ĠUnit ) Ġ= ĠArrange ment (). apply ( init ) ĊĊĠĠĠ Ġinner Ġclass ĠArrange ment Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġsearch ( init : Ġ() Ġ-> ĠSound SearchResult ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . search ( any String (), Ġany < String >(), Ġany < Sound Fields > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Single . just ( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsearch Error ( init : Ġ() Ġ-> ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . search ( any String (), Ġany < String >(), Ġany < Sound Fields > ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( Single . error < Sound SearchResult >( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġuser ( init : Ġ() Ġ-> ĠUser ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . user ( any String ())). thenReturn ( Single . just ( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġuser Error ( init : Ġ() Ġ-> ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . user ( any String ())). thenReturn ( Single . error < User >( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtoken ( init : Ġ() Ġ-> ĠAccess Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . accessToken ( any String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String ())). thenReturn ( Single . just ( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġtoken Error ( init : Ġ() Ġ-> ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ` when `( free Sound Api . accessToken ( any String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġany String ())). thenReturn ( Single . error < AccessToken >( init ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ