package Ġcom . tak use mb a . je th ub . api Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġcom . jak ew h art on . ret rofit 2 . converter . kotlin x . serialization . as Converter Factory Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType Ċ import Ġokhttp 3 . mock webserver . Mock Response Ċ import Ġokhttp 3 . mock webserver . Mock WebServer Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġretrofit 2 . Ret rofit Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠRepo ApiClient Test Ġ{ ĊĊĠ Ġ@ get : Rule ĊĠ Ġval Ġmock WebServer Ġ= ĠMock WebServer () ĊĊĠ Ġprivate Ġlateinit Ġvar Ġclient : ĠRepo ApiClient ĊĊĠ Ġ@ Before ĊĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠ Ġval Ġconverter Factory Ġ= ĠJson Ġ{ ĊĠĠĠĠĠ Ġis Len ient Ġ= Ġtrue ĊĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠ Ġ}. as Converter Factory (" application / json ". to MediaType ()) ĊĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠ Ġ. baseUrl ( mock WebServer . url ("/ "). toString ()) ĊĠĠĠĠĠ Ġ. add Converter Factory ( converter Factory ) ĊĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġclient Ġ= ĠRepo ApiClient ( ret rofit ) ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` get Ġrepo `() Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġjson Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ 1 6 3 2 6 0 7 5 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" node _ id ": Ġ" M DE w Ol J lc G 9 za XR vc nk x Nj My Nj A 3 N TI =", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" Jet Hub ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" full _ name ": Ġ" T aku Sem ba / Jet Hub ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" private ": Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" owner ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" login ": Ġ" T aku Sem ba ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id ": Ġ 1 3 9 5 6 8 6 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" node _ id ": Ġ" MD Q 6 V XN lc j Ez OT U 2 ODY 5 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" avatar _ url ": Ġ" https :// avatars 3 . githubusercontent . com / u / 1 3 9 5 6 8 6 9 ? v = 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" gr avatar _ id ": Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url ": Ġ" https :// api . github . com / users / T aku Sem ba ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" User ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" site _ admin ": Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" html _ url ": Ġ" https :// github . com / T aku Sem ba / Jet Hub ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" description ": Ġ" Sample ĠApp Ġwith ĠJet pack Ġcomponents ( LiveData , ĠNavigation , ĠViewModel ) Ġ+ ĠMV VM Ġ+ Ġcoroutine Ġ+ Ġsingle Ġactivity ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fork ": Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url ": Ġ" https :// api . github . com / repos / T aku Sem ba / Jet Hub ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" created _ at ": Ġ" 2 0 1 8 - 1 2 - 2 7 T 0 7 : 1 2 : 1 5 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" updated _ at ": Ġ" 2 0 1 9 - 0 1 - 0 3 T 0 7 : 4 3 : 1 1 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pus hed _ at ": Ġ" 2 0 1 9 - 0 1 - 0 1 T 0 5 : 0 4 : 2 0 Z ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" git _ url ": Ġ" git :// github . com / T aku Sem ba / Jet Hub . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ssh _ url ": Ġ" git @ github . com : T aku Sem ba / Jet Hub . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" clone _ url ": Ġ" https :// github . com / T aku Sem ba / Jet Hub . git ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" svn _ url ": Ġ" https :// github . com / T aku Sem ba / Jet Hub ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" homepage ": Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" size ": Ġ 1 8 0 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" st arg az ers _ count ": Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" watch ers _ count ": Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" language ": Ġ" Kotlin ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ issues ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ projects ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ downloads ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ wiki ": Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" has _ pages ": Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fork s _ count ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" mirror _ url ": Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arch ived ": Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" open _ issues _ count ": Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" license ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" key ": Ġ" apache - 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" Apache ĠLicense Ġ 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sp dx _ id ": Ġ" Apache - 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" url ": Ġ" https :// api . github . com / licenses / apache - 2 . 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" node _ id ": Ġ" MD c 6 T Gl j ZW 5 z Z TI =" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fork s ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" open _ issues ": Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" watch ers ": Ġ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" default _ branch ": Ġ" master ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" network _ count ": Ġ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" subscribers _ count ": Ġ 1 ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠ Ġmock WebServer . enqueue ( Mock Response (). set Response Code ( 2 0 0 ). set Body ( json )) ĊĊĠĠĠĠĠ Ġval Ġrepo Ġ= Ġclient . get Repo (" T aku Sem ba ", Ġ" Jet Hub ") ĊĊĠĠĠĠĠ ĠassertThat ( repo . id ). isEqualTo ( 1 6 3 2 6 0 7 5 2 ) ĊĠĠĠĠĠ ĠassertThat ( repo . name ). isEqualTo (" Jet Hub ") ĊĠĠĠĠĠ ĠassertThat ( repo . createdAt . toString ()). isEqualTo (" 2 0 1 8 - 1 2 - 2 7 T 0 7 : 1 2 : 1 5 ") ĊĠĠĠĠĠ ĠassertThat ( repo . updatedAt . toString ()). isEqualTo (" 2 0 1 9 - 0 1 - 0 3 T 0 7 : 4 3 : 1 1 ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ@ Test ĊĠ Ġfun Ġ` get Ġread Me `() Ġ{ ĊĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠ Ġval Ġjson Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" type ": Ġ" file ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" encoding ": Ġ" base 6 4 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" size ": Ġ 5 3 6 2 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" name ": Ġ" README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" path ": Ġ" README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" content ": Ġ" encoded Ġcontent ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" sha ": Ġ" 3 d 2 1 ec 5 3 a 3 3 1 a 6 f 0 3 7 a 9 1 c 3 6 8 7 1 0 b 9 9 3 8 7 d 0 1 2 c 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" url ": Ġ" https :// api . github . com / repos / oct okit / oct okit . rb / contents / README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" git _ url ": Ġ" https :// api . github . com / repos / oct okit / oct okit . rb / git / blobs / 3 d 2 1 ec 5 3 a 3 3 1 a 6 f 0 3 7 a 9 1 c 3 6 8 7 1 0 b 9 9 3 8 7 d 0 1 2 c 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" html _ url ": Ġ" https :// github . com / oct okit / oct okit . rb / blob / master / README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" download _ url ": Ġ" https :// raw . githubusercontent . com / oct okit / oct okit . rb / master / README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ links ": Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" git ": Ġ" https :// api . github . com / repos / oct okit / oct okit . rb / git / blobs / 3 d 2 1 ec 5 3 a 3 3 1 a 6 f 0 3 7 a 9 1 c 3 6 8 7 1 0 b 9 9 3 8 7 d 0 1 2 c 1 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" self ": Ġ" https :// api . github . com / repos / oct okit / oct okit . rb / contents / README . md ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" html ": Ġ" https :// github . com / oct okit / oct okit . rb / blob / master / README . md " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠ Ġmock WebServer . enqueue ( Mock Response (). set Response Code ( 2 0 0 ). set Body ( json )) ĊĊĠĠĠĠĠ Ġval Ġread Me Ġ= Ġclient . get Read Me (" oct okit ", Ġ" oct okit . rb ") ĊĠĠĠĠĠ ĠassertThat ( read Me . name ). isEqualTo (" README . md ") ĊĠĠĠĠĠ ĠassertThat ( read Me . path ). isEqualTo (" README . md ") ĊĠĠĠĠĠ ĠassertThat ( read Me . content ). isEqualTo (" encoded Ġcontent ") ĊĠĠĠĠĠ ĠassertThat ( read Me . url ). isEqualTo (" https :// api . github . com / repos / oct okit / oct okit . rb / contents / README . md ") ĊĠĠĠĠĠ ĠassertThat ( read Me . git Url ). isEqualTo (" https :// api . github . com / repos / oct okit / oct okit . rb / git / blobs / 3 d 2 1 ec 5 3 a 3 3 1 a 6 f 0 3 7 a 9 1 c 3 6 8 7 1 0 b 9 9 3 8 7 d 0 1 2 c 1 ") ĊĠĠĠĠĠ ĠassertThat ( read Me . html Url ). isEqualTo (" https :// github . com / oct okit / oct okit . rb / blob / master / README . md ") ĊĠĠĠĠĠ ĠassertThat ( read Me . download Url ). isEqualTo (" https :// raw . githubusercontent . com / oct okit / oct okit . rb / master / README . md ") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ