/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 8 ĠK eval ĠP ate l . Ċ Ġ* Ċ Ġ* Ġ Ġ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 . stand up . app . about . repo Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . ke val p ate l 2 1 0 6 . common . prefs . User Session Manager Ċ import Ġcom . ke val p ate l 2 1 0 6 . network . Network Api Ċ import Ġcom . ke val p ate l 2 1 0 6 . test utils . Mock Server Manager Ċ import Ġcom . ke val p ate l 2 1 0 6 . utils . Shared Prefs Provider Ċ import Ġcom . stand up . app . about . Build Config Ċ import Ġio . reactivex . subscribers . Test Subscriber Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġorg . mockito . Argument Matchers Ċ import Ġorg . mockito . Mockito Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠK eval p ate l 2 1 0 6 Ġon Ġ 0 1 - Jan - 1 8 . Ċ Ġ* Ċ Ġ* Ġ@ author Ġ[ ke val p ate l 2 1 0 6 ]( https :// github . com / ke val p ate l 2 1 0 6 ) Ċ Ġ*/ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠAbout Repository Impl Test Ġ{ ĊĠĠĠ Ġprivate Ġval Ġmock Server Manager Ġ= ĠMock Server Manager () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġabout Repository : ĠAbout Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Ġ= ĠMockito . mock ( SharedPreferences :: class . java ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Prefs . getLong ( Argument Matchers . any String (), ĠArgument Matchers . any Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. thenReturn ( 1 2 L ) ĊĊĠĠĠĠĠĠĠ Ġval Ġshared Prefs Editor Ġ= ĠMockito . mock ( SharedPreferences . Editor :: class . java ) ĊĠĠĠĠĠĠĠ ĠMockito .` when `( shared Prefs . edit ()). thenReturn ( shared Prefs Editor ) ĊĊĠĠĠĠĠĠĠ Ġmock Server Manager . start Mock WebServer () ĊĠĠĠĠĠĠĠ Ġabout Repository Ġ= ĠAbout Repository Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork Api (). get Ret rofit Client ( mock Server Manager . get BaseUrl ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Session Manager ( Shared Prefs Provider ( shared Prefs )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun Ġtear Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Get Latest Version Success Update Available () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . enqueue Response ( File ( mock Server Manager . get Responses Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"/ get _ latest _ version _ success _ update _ available . json ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Subscriber Ġ= ĠTest Subscriber < Check Version Response >() ĊĠĠĠĠĠĠĠ Ġabout Repository . get Latest Version (). subscribe ( test Subscriber ) ĊĠĠĠĠĠĠĠ Ġtest Subscriber . await Terminal Event () ĊĊĠĠĠĠĠĠĠ Ġtest Subscriber . assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value At ( 0 ) Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . latest Version Name Ġ== Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġt . latest Version Code Ġ== Ġ 1 0 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġt . latest Version Code Ġ> ĠBuild Config . VERSION _ CODE Ġ== Ġt . is Update ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġt . release Notes Ġ== Ġ" This Ġis Ġthe Ġrelease Ġnote Ġfor Ġthe Ġversion Ġ 3 ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Get Latest Version Success Latest Version Available () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . enqueue Response ( File ( mock Server Manager . get Responses Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"/ get _ latest _ version _ success _ latest _ available . json ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Subscriber Ġ= ĠTest Subscriber < Check Version Response >() ĊĠĠĠĠĠĠĠ Ġabout Repository . get Latest Version (). subscribe ( test Subscriber ) ĊĠĠĠĠĠĠĠ Ġtest Subscriber . await Terminal Event () ĊĊĠĠĠĠĠĠĠ Ġtest Subscriber . assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value At ( 0 ) Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . latest Version Name Ġ== Ġ" 1 . 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġt . latest Version Code Ġ== Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! t . is Update ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġt . release Notes Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Get Latest Version Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . enqueue Response ( File ( mock Server Manager . get Responses Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"/ authentication _ field _ missing . json ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Subscriber Ġ= ĠTest Subscriber < Check Version Response >() ĊĠĠĠĠĠĠĠ Ġabout Repository . get Latest Version (). subscribe ( test Subscriber ) ĊĠĠĠĠĠĠĠ Ġtest Subscriber . await Terminal Event () ĊĊĠĠĠĠĠĠĠ Ġtest Subscriber . assert Error Ġ{ Ġit . message Ġ== Ġ" Required Ġfield Ġmissing ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Count ( 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Report Issue Success () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . enqueue Response ( File ( mock Server Manager . get Responses Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"/ report _ issue _ success . json ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Subscriber Ġ= ĠTest Subscriber < Report Issue Response >() ĊĠĠĠĠĠĠĠ Ġabout Repository . report Issue (" This Ġis Ġtest Ġtitle .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġis Ġtest Ġmessage .", Ġ" test _ device _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( test Subscriber ) ĊĠĠĠĠĠĠĠ Ġtest Subscriber . await Terminal Event () ĊĊĠĠĠĠĠĠĠ Ġtest Subscriber . assert No Errors () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Count ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value At ( 0 ) Ġ{ Ġt Ġ-> Ġt . issue Id Ġ== Ġ 1 2 3 4 5 6 7 8 9 L Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġcheck Report Issue Error () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Server Manager . enqueue Response ( File ( mock Server Manager . get Responses Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"/ authentication _ field _ missing . json ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Subscriber Ġ= ĠTest Subscriber < Report Issue Response >() ĊĠĠĠĠĠĠĠ Ġabout Repository . report Issue (" This Ġis Ġtest Ġtitle .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This Ġis Ġtest Ġmessage .", Ġ" test _ device _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( test Subscriber ) ĊĠĠĠĠĠĠĠ Ġtest Subscriber . await Terminal Event () ĊĊĠĠĠĠĠĠĠ Ġtest Subscriber . assert Error Ġ{ Ġit . message Ġ== Ġ" Required Ġfield Ġmissing ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. assert Value Count ( 0 ) ĊĠĠĠ Ġ} Ċ } Ċ