package Ġlong ph am . g iphy . view model Ċ Ċ import Ġjunit . framework . Assert . assertNotNull Ċ import Ġlong ph am . g iphy . Base ViewModel TestSuite Ċ import Ġlong ph am . g iphy . create Trend ing Images Observer Ċ import Ġlong ph am . g iphy . models . G iphy Images Object Ċ import Ġlong ph am . g iphy . ui . trend ing . Trend ing ViewModel Ċ import Ġlong ph am . g iphy . util . App Constants Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġorg . junit . runner . RunWith Ċ import Ġorg . junit . runners . JUnit 4 Ċ import Ġorg . mockito . Mockito .* Ċ Ċ @ RunWith ( JUnit 4 :: class ) Ċ class ĠT rend ing Images Test : ĠBase ViewModel TestSuite () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠT rend ing ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġno Data ViewModel : ĠT rend ing ViewModel ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġinit (){ ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠT rend ing ViewModel ( Mock Repository ()) ĊĠĠĠĠĠĠĠ Ġno Data ViewModel Ġ= ĠT rend ing ViewModel ( No Data Repository ()) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest LiveData NotNull (){ ĊĠĠĠĠĠĠĠ ĠassertNotNull ( viewModel . images ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Invalid Loading Trend ing Image (){ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠviewModel . create Trend ing Images Observer () ĊĠĠĠĠĠĠĠ ĠviewModel . load Trend ing Images ( request Items Count Ġ= Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( observer ) ĊĠĠĠĠĠĠĠ ĠviewModel . load Trend ing Images ( request Items Count Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġverify No More Interactions ( observer ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Loading Trend ing Images Once (){ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠviewModel . create Trend ing Images Observer () ĊĠĠĠĠĠĠĠ ĠviewModel . load Trend ing Images () ĊĠĠĠĠĠĠĠ Ġval Ġexpected Images Ġ= Ġmutable ListOf < G iphy Images Object >() ĊĠĠĠĠĠĠĠ Ġrepeat ( App Constants . ITEMS _ PER _ REQUEST ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Images . add ( Mock Repository . image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( observer ). on Changed ( expected Images ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Loading Trend ing Image Tw ice (){ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= ĠviewModel . create Trend ing Images Observer () ĊĠĠĠĠĠĠĠ ĠviewModel . load Trend ing Images ( 1 ) ĊĠĠĠĠĠĠĠ ĠviewModel . load Trend ing Images ( 2 ) ĊĠĠĠĠĠĠĠ Ġ// Verify Ġthe Ġfirst ĠonChanged ĊĠĠĠĠĠĠĠ Ġverify ( observer ). on Changed ( mutable ListOf ( Mock Repository . image )) ĊĠĠĠĠĠĠĠ Ġ// Verify Ġthe Ġsecond ĠonChanged ĊĠĠĠĠĠĠĠ Ġval Ġexpected Images Ġ= Ġmutable ListOf < G iphy Images Object >() ĊĠĠĠĠĠĠĠ Ġrepeat ( 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected Images . add ( Mock Repository . image ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġverify ( observer ). on Changed ( expected Images ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Trend ing Image With No Data Repo (){ ĊĠĠĠĠĠĠĠ Ġval Ġobserver Ġ= Ġno Data ViewModel . create Trend ing Images Observer () ĊĠĠĠĠĠĠĠ Ġno Data ViewModel . load Trend ing Images ( 1 0 ) ĊĠĠĠĠĠĠĠ Ġverify ( observer ). on Changed ( null ) ĊĠĠĠ Ġ} Ċ } Ċ