package Ġorg . vide ol an . v lc . view models . browser Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroidx . core . net . to Uri Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġcom . jr ask a . li ved ata . test Ċ import Ġio . mock k . every Ċ import Ġio . mock k . mock k Ċ import Ġio . mock k . spy k Ċ import Ġjunit . framework . Assert . assertEquals Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Obsolete Cor outines Api Ċ import Ġorg . junit . Rule Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . rules . Temporary Folder Ċ import Ġorg . vide ol an . lib v lc . Lib VL C Ċ import Ġorg . vide ol an . lib v lc . util . Media Browser Ċ import Ġorg . vide ol an . med iali brary . interfaces . media . Media Wrapper Ċ import Ġorg . vide ol an . med iali brary . media . Media Library Item Ċ import Ġorg . vide ol an . med iali brary . media . Media Wrapper Impl Ċ import Ġorg . vide ol an . tools . Coroutine Context Provider Ċ import Ġorg . vide ol an . tools . Settings Ċ import Ġorg . vide ol an . v lc . Base Test Ċ import Ġorg . vide ol an . v lc . database . Browser Fav Dao Ċ import Ġorg . vide ol an . v lc . providers . Browser Provider Ċ import Ġorg . vide ol an . v lc . repository . Browser Fav Repository Ċ import Ġorg . vide ol an . v lc . util . Test Coroutine Context Provider Ċ import Ġorg . vide ol an . v lc . util . apply Mock Ċ Ċ @ Obsolete Cor outines Api Ċ @ Experimental Cor outines Api Ċ class ĠNetwork Model Test Ġ: ĠBaseTest () Ġ{ ĊĠĠĠ Ġ@ get : Rule ĊĠĠĠ Ġval Ġtemporary Folder Ġ= ĠTemporary Folder () ĊĊĠĠĠ Ġprivate Ġval Ġmocked Lib V lc : ĠLib VL C Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġmocked F avorites Dao : ĠBrowser Fav Dao Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġprivate Ġval Ġmocked F avorites Repo : ĠBrowser Fav Repository Ġ= Ġspy k ( Browser Fav Repository ( mocked F avorites Dao )) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmedia Browser : ĠMedia Browser ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbrowser Model : ĠBrowser Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbrowser Provider : ĠBrowser Provider ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠBrowser Fav Repository . apply Mock ( mocked F avorites Repo ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠBrowser Handler Ġmocked . ĊĠĠĠĠĠĠĠ Ġval Ġhandler : ĠHandler Ġ= Ġmock k () ĊĊĠĠĠĠĠĠĠ ĠBrowser Provider . override Creator Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠBrowser Provider . register Creator Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Browser Ġ= Ġspy k ( Media Browser ( mocked Lib V lc , Ġnull , Ġhandler )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Browser ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠBrowser Provider . register Creator ( clazz Ġ= ĠCor outine Context Provider :: class . java ) Ġ{ ĠTest Coroutine Context Provider () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Network Model ( url : ĠString ?, Ġshow Hidden Files : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbrowser Model Ġ= ĠNetwork Model ( application , Ġurl , Ġshow Hidden Files , ĠTest Coroutine Context Provider ()) ĊĠĠĠĠĠĠĠ Ġbrowser Provider Ġ= Ġbrowser Model . provider ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Fake Media Wrapper ( index : ĠInt ): ĠMedia Wrapper Impl Ġ= ĠMedia Wrapper Impl (" http :// fake _ media . io / vid _$ index . mp 4 ". to Uri ()) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen At Root And No F avorites _ check Result IsEmpty () Ġ{ ĊĠĠĠĠĠĠĠ ĠSettings . override Tv UI Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmocked F avorites Repo . network F avorites Ġ} Ġreturns ĠMed iator LiveData < List < Media Wrapper >> (). apply Ġ{ Ġvalue Ġ= Ġempty List () Ġ} ĊĠĠĠĠĠĠĠ Ġinit Network Model ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtest Result Ġ= Ġbrowser Model . dataset . test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. value () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 0 , Ġtest Result . size ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen At Root With One Favorite And One Favorite Added Later _ check Result Is NotEmpty And Contains The m () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlive F avorites : ĠMed iator LiveData < List < Media Wrapper >> Ġ= ĠMed iator LiveData () ĊĠĠĠĠĠĠĠ ĠSettings . override Tv UI Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmocked F avorites Repo . network F avorites Ġ} Ġreturns Ġlive F avorites ĊĊĠĠĠĠĠĠĠ Ġlive F avorites . value Ġ= ĠlistOf ( get Fake Media Wrapper ( 0 ). apply Ġ{ ĠsetState Flags ( Media Library Item . FLAG _ FA V OR ITE ) Ġ}) ĊĠĠĠĠĠĠĠ Ġinit Network Model ( null ) ĊĊĠĠĠĠĠĠĠ Ġval Ġold Result Ġ= Ġbrowser Model . dataset . test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. value () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 3 , Ġold Result . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( get Fake Media Wrapper ( 0 ), Ġold Result [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġlive F avorites . value Ġ= ĠArrayList < Media Wrapper >(). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive F avorites . value ?. let Ġ{ Ġadd All ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( get Fake Media Wrapper ( 1 ). apply Ġ{ ĠsetState Flags ( Media Library Item . FLAG _ FA V OR ITE ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Result Ġ= Ġbrowser Model . dataset . test () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. await Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. value () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( 4 , Ġnew Result . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( get Fake Media Wrapper ( 0 ), Ġnew Result [ 1 ]) ĊĠĠĠĠĠĠĠ ĠassertEquals ( get Fake Media Wrapper ( 1 ), Ġnew Result [ 2 ]) ĊĠĠĠ Ġ} Ċ }