package Ġcom . mark nj unge . core . data . repository Ċ Ċ import Ġcom . mark nj unge . core . Sample Data Ċ import Ġcom . mark nj unge . core . data . local . Preferences Repository Ċ import Ġcom . mark nj unge . core . data . model . Resource Ċ import Ġcom . mark nj unge . core . data . model . SignIn Response Ċ import Ġcom . mark nj unge . core . data . network . service . Auth Service Ċ import Ġio . mock k . Mock K Annotations Ċ import Ġio . mock k . co Every Ċ import Ġio . mock k . co Verify Ċ import Ġio . mock k . impl . annotations . Mock K Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ Ċ class ĠApi Auth Repository Test Ġ{ ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth Service : ĠAuth Service ĊĊĠĠĠ Ġ@ Mock K ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpreferences Repository : ĠPreferences Repository ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrepo : ĠApi Auth Repository ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ{ ĊĠĠĠĠĠĠĠ ĠMock K Annotations . init ( this , Ġrelax Unit Fun Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġrepo Ġ= ĠApi Auth Repository ( auth Service , Ġpreferences Repository ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign In With Google Ġruns Ġand Ġsaves Ġuser , sessionId `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . signIn With Google ( any ()) Ġ} Ġreturns ĠSign In Response ( Sample Data . user , ĠSample Data . session ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . signIn With Google ("") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . signIn With Google ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . user Ġ= ĠSample Data . user Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . sessionId Ġ= ĠSample Data . session . sessionId Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign In With Google Ġhandles Ġerror `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . signIn With Google ( any ()) Ġ} Ġthrows ĠException (" Error ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . signIn With Google ("") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . signIn With Google ( any ()) Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Failure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign Up Ġruns Ġand Ġsaves Ġuser , sessionId `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . sign Up ( any ()) Ġ} Ġreturns ĠSign In Response ( Sample Data . user , ĠSample Data . session ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . sign Up ("", Ġ"", Ġ"", Ġ"", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . sign Up ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . user Ġ= ĠSample Data . user Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . sessionId Ġ= ĠSample Data . session . sessionId Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign Up Ġhandles Ġerror `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . sign Up ( any ()) Ġ} Ġthrows ĠException (" Error ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . sign Up ("", Ġ"", Ġ"", Ġ"", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . sign Up ( any ()) Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Failure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign In Ġruns Ġand Ġsaves Ġuser , sessionId `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . signIn ( any ()) Ġ} Ġreturns ĠSign In Response ( Sample Data . user , ĠSample Data . session ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . signIn ("", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . signIn ( any ()) Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . user Ġ= ĠSample Data . user Ġ} ĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġpreferences Repository . sessionId Ġ= ĠSample Data . session . sessionId Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Success ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġsign In Ġhandles Ġerror `() Ġ= Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠ Ġco Every Ġ{ Ġauth Service . signIn ( any ()) Ġ} Ġthrows ĠException (" Error ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġrepo . signIn ("", Ġ"") ĊĊĠĠĠĠĠĠĠ Ġco Verify Ġ{ Ġauth Service . signIn ( any ()) Ġ} ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue ( resource Ġis ĠResource . Failure ) ĊĠĠĠ Ġ} Ċ Ċ }