/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCreated Ġby ĠM ur illo ĠCom ino Ġon Ġ 2 7 / 0 2 / 2 0 Ġ 1 2 : 4 7 Ċ Ġ* Ġ Ġ* ĠGithub : Ġgithub . com / M ur illo Com ino Ċ Ġ* Ġ Ġ* ĠStack Over Flow : Ġpt . stackoverflow . com / users / 1 2 8 5 7 3 Ċ Ġ* Ġ Ġ* ĠEmail : Ġm ur illo _ com ino @ hotmail . com Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 Ġ. ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ Ġ* ĠLast Ġmodified Ġ 2 7 / 0 2 / 2 0 Ġ 1 2 : 4 7 Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . on imus . bl ab las ocial media . mv vm . ui . auth . main Ċ Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . on imus . bl ab las ocial media . mv vm . data . firebase . Firebase Manager Ċ import Ġcom . on imus . bl ab las ocial media . mv vm . data . repository . UserRepository Ċ import Ġio . mock k .* Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠMain ViewModel IT Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmain ViewModel : ĠMain ViewModel ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock UserRepository : ĠUser Repository ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Firebase Manager : ĠFirebase Manager ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġvar Ġmock Main Listener : ĠMain Listener Ġ= Ġmock k ( relax ed Ġ= Ġtrue ) ĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmock Auth : ĠFirebase Auth ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun ĠsetUp () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this ) ĊĠĠĠĠĠĠĠ Ġmock k Static ( Firebase Auth :: class ) ĊĠĠĠĠĠĠĠ Ġevery Ġ{ ĠFirebase Auth . getInstance () Ġ} Ġreturns Ġmock k ( relax ed Ġ= Ġtrue ) ĊĊĠĠĠĠĠĠĠ Ġsetup Mocks () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Mocks () Ġ{ ĊĠĠĠĠĠĠĠ Ġmock Auth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġmock Firebase Manager Ġ= ĠFirebase Manager () ĊĠĠĠĠĠĠĠ Ġmock UserRepository Ġ= ĠUser Repository ( mock Firebase Manager ) ĊĠĠĠĠĠĠĠ Ġmain ViewModel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMain ViewModel ( mock UserRepository ) ĊĠĠĠĠĠĠĠ Ġmain ViewModel . main Listener Ġ= Ġmock Main Listener ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ{ ĊĠĠĠĠĠĠĠ Ġclear All Mocks () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check User Status Ġwith Ġvalid Ġuser Ġshould Ġcall Ġthe Ġon User Logged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġmain ViewModel . check User Status () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Main Listener . on User Logged () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` check User Status Ġwith Ġinvalid Ġuser Ġshould Ġnot Ġcall Ġthe Ġon User Logged `() Ġ{ ĊĠĠĠĠĠĠĠ Ġevery Ġ{ Ġmock Auth . currentUser Ġ} Ġreturns Ġnull ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . check User Status () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 0 ) Ġ{ Ġmock Main Listener . on User Logged () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` onClick Button Login Ġis Ġclicked Ġshould Ġcall Ġthe Ġon Login Clicked `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . onClick Button Login () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Main Listener . on Login Clicked () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` onClick Button Register Ġis Ġclicked Ġshould Ġcall Ġthe Ġon Register Clicked `() Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmain ViewModel . onClick Button Register () ĊĠĠĠĠĠĠĠ Ġverify ( exact ly Ġ= Ġ 1 ) Ġ{ Ġmock Main Listener . on Register Clicked () Ġ} ĊĠĠĠ Ġ} Ċ }